continuum-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Emmanuel Venisse <emmanuel.veni...@gmail.com>
Subject Re: svn commit: r769671 [1/2] - in /continuum/branches/continuum-flat-multi-module: continuum-api/src/main/java/org/apache/continuum/buildmanager/ continuum-api/src/main/java/org/apache/continuum/taskqueue/ continuum-api/src/main/java/org/apache/mave
Date Wed, 29 Apr 2009 06:18:56 GMT
Is it work with normal multi-modules projects too?
If it is the case, we'll can have one working directory by scm root.

Emmanuel

On Wed, Apr 29, 2009 at 8:08 AM, <oching@apache.org> wrote:

> Author: oching
> Date: Wed Apr 29 06:08:15 2009
> New Revision: 769671
>
> URL: http://svn.apache.org/viewvc?rev=769671&view=rev
> Log:
> [CONTINUUM-2193]
> o allow checkout of multi-module projects into a single directory
> o added and updated tests of affected classes
>
> Added:
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/.cvsignore
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/pom.xml
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/module/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/module/a/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/module/a/App.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/module/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/module/a/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/module/a/AppTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/pom.xml
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/module/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/module/b/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/module/b/App.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/module/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/module/b/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/module/b/AppTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/pom.xml
> Modified:
>
>  continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/taskqueue/CheckOutTask.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuildingResult.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataAction.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenOneContinuumProjectBuilder.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddMaven2ProjectTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/DefaultContinuumTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/AbstractContinuumProjectBuilderTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/maven/MavenOneContinuumProjectBuilderTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilderTest.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AddMavenTwoProjectAction.java
>
>  continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/resources/localization/Continuum.properties
>
>  continuum/branches/continuum-flat-multi-module/continuum-webapp/src/main/webapp/WEB-INF/jsp/addMavenTwoProject.jsp
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java
> Wed Apr 29 06:08:15 2009
> @@ -87,13 +87,14 @@
>      * @param projectId
>      * @param projectName
>      * @param workingDirectory
> +     * @param scmRootUrl TODO
>      * @param scmUsername
>      * @param scmPassword
>      * @param defaultBuildDefinition
>      * @throws BuildManagerException
>      */
> -    void checkoutProject( int projectId, String projectName, File
> workingDirectory, String scmUsername,
> -                          String scmPassword, BuildDefinition
> defaultBuildDefinition )
> +    void checkoutProject( int projectId, String projectName, File
> workingDirectory, String scmRootUrl,
> +                          String scmUsername, String scmPassword,
> BuildDefinition defaultBuildDefinition )
>         throws BuildManagerException;
>
>     /**
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/taskqueue/CheckOutTask.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/taskqueue/CheckOutTask.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/taskqueue/CheckOutTask.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/continuum/taskqueue/CheckOutTask.java
> Wed Apr 29 06:08:15 2009
> @@ -39,9 +39,11 @@
>     private final String scmUserName;
>
>     private final String scmPassword;
> +
> +    private final String scmRootUrl;
>
>     public CheckOutTask( int projectId, File workingDirectory, String
> projectName, String scmUserName,
> -                         String scmPassword )
> +                         String scmPassword, String scmRootUrl )
>     {
>         this.projectId = projectId;
>
> @@ -52,6 +54,8 @@
>         this.scmUserName = scmUserName;
>
>         this.scmPassword = scmPassword;
> +
> +        this.scmRootUrl = scmRootUrl;
>     }
>
>     public int getProjectId()
> @@ -90,4 +94,9 @@
>     {
>         return this.hashCode();
>     }
> +
> +    public String getScmRootUrl()
> +    {
> +        return scmRootUrl;
> +    }
>  }
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
> Wed Apr 29 06:08:15 2009
> @@ -337,13 +337,14 @@
>      * @param useCredentialsCache      whether to use cached scm account
> credentials or not
>      * @param loadRecursiveProjects    if multi modules project record all
> projects (if false only root project added)
>      * @param buildDefintionTemplateId buildDefintionTemplateId
> +     * @param checkoutInSingleDirector if multi module project, check out
> the entire project in a single directory (handle flat multi-modules)
>      * @return a holder with the projects, project groups and errors
> occurred during the project adding
>      * @throws ContinuumException
>      */
>     public ContinuumProjectBuildingResult addMavenTwoProject( String
> metadataUrl, int projectGroupId,
>                                                               boolean
> checkProtocol, boolean useCredentialsCache,
>                                                               boolean
> loadRecursiveProjects,
> -                                                              int
> buildDefintionTemplateId )
> +                                                              int
> buildDefintionTemplateId, boolean checkoutInSingleDirectory )
>         throws ContinuumException;
>
>     /**
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuilder.java
> Wed Apr 29 06:08:15 2009
> @@ -35,12 +35,12 @@
>         throws ContinuumProjectBuilderException;
>
>     ContinuumProjectBuildingResult buildProjectsFromMetadata( URL url,
> String username, String password,
> -                                                              boolean
> recursiveProjects )
> +                                                              boolean
> recursiveProjects, boolean checkoutInSingleDirectory )
>         throws ContinuumProjectBuilderException;
>
>     ContinuumProjectBuildingResult buildProjectsFromMetadata( URL url,
> String username, String password,
>                                                               boolean
> recursiveProjects,
> -
>  BuildDefinitionTemplate buildDefinitionTemplate )
> +
>  BuildDefinitionTemplate buildDefinitionTemplate, boolean
> checkoutInSingleDirectory )
>         throws ContinuumProjectBuilderException;
>
>     BuildDefinitionTemplate getDefaultBuildDefinitionTemplate()
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuildingResult.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuildingResult.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuildingResult.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-api/src/main/java/org/apache/maven/continuum/project/builder/ContinuumProjectBuildingResult.java
> Wed Apr 29 06:08:15 2009
> @@ -90,7 +90,11 @@
>     private final Map<String, String> errors = new HashMap<String,
> String>();
>
>     private static final String LS = System.getProperty( "line.separator"
> );
> -
> +
> +    private String modulePath;
> +
> +    private Project rootProject;
> +
>     public void addProject( Project project )
>     {
>         projects.add( project );
> @@ -220,4 +224,24 @@
>         }
>         return message.toString();
>     }
> +
> +    public String getModulePath()
> +    {
> +        return modulePath;
> +    }
> +
> +    public void setModulePath( String modulePath )
> +    {
> +        this.modulePath = modulePath;
> +    }
> +
> +    public Project getRootProject()
> +    {
> +        return rootProject;
> +    }
> +
> +    public void setRootProject( Project rootProject )
> +    {
> +        this.rootProject = rootProject;
> +    }
>  }
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
> Wed Apr 29 06:08:15 2009
> @@ -367,10 +367,10 @@
>     }
>
>     /**
> -     * @see BuildsManager#checkoutProject(int, String, File, String,
> String, BuildDefinition)
> +     * @see BuildsManager#checkoutProject(int, String, File, String,
> String, String, BuildDefinition)
>      */
> -    public void checkoutProject( int projectId, String projectName, File
> workingDirectory, String scmUsername,
> -                                 String scmPassword, BuildDefinition
> defaultBuildDefinition )
> +    public void checkoutProject( int projectId, String projectName, File
> workingDirectory, String scmRootUrl,
> +                                 String scmUsername, String scmPassword,
> BuildDefinition defaultBuildDefinition )
>         throws BuildManagerException
>     {
>         try
> @@ -390,7 +390,7 @@
>         OverallBuildQueue overallBuildQueue =
>             getOverallBuildQueue( CHECKOUT_QUEUE,
> defaultBuildDefinition.getSchedule().getBuildQueues() );
>         CheckOutTask checkoutTask =
> -            new CheckOutTask( projectId, workingDirectory, projectName,
> scmUsername, scmPassword );
> +            new CheckOutTask( projectId, workingDirectory, projectName,
> scmUsername, scmPassword, scmRootUrl );
>         try
>         {
>             if ( overallBuildQueue != null )
> @@ -873,7 +873,7 @@
>             {
>                 BuildDefinition buildDefinition =
> buildDefinitionDao.getDefaultBuildDefinition( task.getProjectId() );
>                 checkoutProject( task.getProjectId(),
> task.getProjectName(), task.getWorkingDirectory(),
> -                                 task.getScmUserName(),
> task.getScmPassword(), buildDefinition );
> +                                 null, task.getScmUserName(),
> task.getScmPassword(), buildDefinition );
>             }
>             catch ( ContinuumStoreException e )
>             {
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
> Wed Apr 29 06:08:15 2009
> @@ -1221,7 +1221,7 @@
>     {
>         return executeAddProjectsFromMetadataActivity( metadataUrl,
> MavenOneContinuumProjectBuilder.ID, projectGroupId,
>                                                        checkProtocol,
> useCredentialsCache, true,
> -
> buildDefinitionTemplateId );
> +
> buildDefinitionTemplateId, false );
>     }
>
>     //
> ----------------------------------------------------------------------
> @@ -1270,7 +1270,7 @@
>         {
>             return executeAddProjectsFromMetadataActivity( metadataUrl,
> MavenTwoContinuumProjectBuilder.ID,
>                                                            projectGroupId,
> checkProtocol, useCredentialsCache, true,
> -
> buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate().getId()
> );
> +
> buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate().getId(),
> false );
>         }
>         catch ( BuildDefinitionServiceException e )
>         {
> @@ -1288,7 +1288,7 @@
>             return executeAddProjectsFromMetadataActivity( metadataUrl,
> MavenTwoContinuumProjectBuilder.ID,
>                                                            projectGroupId,
> checkProtocol, useCredentialsCache,
>
>  recursiveProjects,
> -
> buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate().getId()
> );
> +
> buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate().getId(),
> false );
>         }
>         catch ( BuildDefinitionServiceException e )
>         {
> @@ -1298,12 +1298,12 @@
>
>     public ContinuumProjectBuildingResult addMavenTwoProject( String
> metadataUrl, int projectGroupId,
>                                                               boolean
> checkProtocol, boolean useCredentialsCache,
> -                                                              boolean
> recursiveProjects, int buildDefinitionTemplateId )
> +                                                              boolean
> recursiveProjects, int buildDefinitionTemplateId, boolean
> checkoutInSingleDirectory )
>         throws ContinuumException
>     {
>         return executeAddProjectsFromMetadataActivity( metadataUrl,
> MavenTwoContinuumProjectBuilder.ID, projectGroupId,
>                                                        checkProtocol,
> useCredentialsCache, recursiveProjects,
> -
> buildDefinitionTemplateId );
> +
> buildDefinitionTemplateId, checkoutInSingleDirectory );
>     }
>
>     //
> ----------------------------------------------------------------------
> @@ -1417,7 +1417,7 @@
>         throws ContinuumException
>     {
>         return executeAddProjectsFromMetadataActivity( metadataUrl,
> projectBuilderId, projectGroupId, checkProtocol,
> -                                                       false, false,
> buildDefinitionTemplateId );
> +                                                       false, false,
> buildDefinitionTemplateId, false );
>     }
>
>
> @@ -1428,7 +1428,7 @@
>
>          boolean useCredentialsCache,
>
>          boolean loadRecursiveProjects,
>
>          int buildDefinitionTemplateId,
> -
>           boolean addAssignableRoles )
> +
>           boolean addAssignableRoles, boolean checkoutInSingleDirectory )
>         throws ContinuumException
>     {
>         if ( checkProtocol )
> @@ -1445,13 +1445,15 @@
>
>         context.put(
> CreateProjectsFromMetadataAction.KEY_PROJECT_BUILDER_ID, projectBuilderId );
>
> -        context.put( CreateProjectsFromMetadataAction.KEY_URL, metadataUrl
> );
> +        context.put( AbstractContinuumAction.KEY_URL, metadataUrl );
>
>         context.put(
> CreateProjectsFromMetadataAction.KEY_LOAD_RECURSIVE_PROJECTS,
> loadRecursiveProjects );
>
> -        context.put(
> CreateProjectsFromMetadataAction.KEY_SCM_USE_CREDENTIALS_CACHE,
> useCredentialsCache );
> +        context.put(
> AbstractContinuumAction.KEY_SCM_USE_CREDENTIALS_CACHE, useCredentialsCache
> );
>
>         context.put( AbstractContinuumAction.KEY_WORKING_DIRECTORY,
> getWorkingDirectory() );
> +
> +        context.put(
> CreateProjectsFromMetadataAction.KEY_CHECKOUT_PROJECTS_IN_SINGLE_DIRECTORY,
> checkoutInSingleDirectory );
>
>         // CreateProjectsFromMetadataAction will check null and use default
>         if ( buildDefinitionTemplateId > 0 )
> @@ -1550,10 +1552,10 @@
>
>             projectGroup =
> projectGroupDao.getProjectGroupWithBuildDetailsByProjectGroupId(
> projectGroupId );
>
> -            String url = (String) context.get(
> CreateProjectsFromMetadataAction.KEY_URL );
> +            String url = (String) context.get(
> AbstractContinuumAction.KEY_URL );
>
>             projectScmRoot =
> getProjectScmRootByProjectGroupAndScmRootAddress( projectGroup.getId(), url
> );
> -
> +
>             if ( projectScmRoot == null )
>             {
>                 createProjectScmRoot( projectGroup, url );
> @@ -1581,7 +1583,7 @@
>         for ( Project project : projects )
>         {
>             project.setScmUseCache( useCredentialsCache );
> -
> +
>             // values backup for first checkout
>             scmUserName = project.getScmUsername();
>             scmPassword = project.getScmPassword();
> @@ -1598,64 +1600,32 @@
>         try
>         {
>             projectGroupDao.updateProjectGroup( projectGroup );
> -
> -            for ( Project project : projects )
> +
> +            if( !checkoutInSingleDirectory )
>             {
> -                context = new HashMap<String, Object>();
> -
> -                // CONTINUUM-1953 olamy : attached buildDefs from template
> here
> -                // if no group creation
> -                if ( !projectGroupCreation && buildDefinitionTemplateId >
> 0 )
> -                {
> -                    buildDefinitionService.addTemplateInProject(
> buildDefinitionTemplateId,
> -
> projectDao.getProject( project.getId() ) );
> -                }
> -
> -                context.put(
> AbstractContinuumAction.KEY_UNVALIDATED_PROJECT, project );
> -                //
> -                //            executeAction( "validate-project", context
> );
> -                //
> -                //            executeAction( "store-project", context );
> -                //
> -                context.put( AbstractContinuumAction.KEY_PROJECT_ID,
> project.getId() );
> -
> -                if ( !StringUtils.isEmpty( scmUserName ) )
> -                {
> -                    project.setScmUsername( scmUserName );
> -                    context.put( AbstractContinuumAction.KEY_SCM_USERNAME,
> scmUserName );
> -                }
> -                if ( !StringUtils.isEmpty( scmPassword ) )
> -                {
> -                    project.setScmPassword( scmPassword );
> -                    context.put( AbstractContinuumAction.KEY_SCM_PASSWORD,
> scmPassword );
> -                }
> -                // FIXME
> -                // olamy  : read again the project to have values because
> store.updateProjectGroup( projectGroup );
> -                // remove object data -> we don't display the project name
> in the build queue
> -                context.put( AbstractContinuumAction.KEY_PROJECT,
> projectDao.getProject( project.getId() ) );
> -
> -                BuildDefinition defaultBuildDefinition = null;
> -                if ( projectBuilderId.equals(
> MavenTwoContinuumProjectBuilder.ID ) )
> -                {
> -                    defaultBuildDefinition =
> -                        (BuildDefinition)
> buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate().getBuildDefinitions().get(
> -                            0 );
> -                }
> -                else if ( projectBuilderId.equals(
> MavenOneContinuumProjectBuilder.ID ) )
> +                for ( Project project : projects )
>                 {
> -                    defaultBuildDefinition =
> -                        (BuildDefinition)
> buildDefinitionService.getDefaultMavenOneBuildDefinitionTemplate().getBuildDefinitions().get(
> -                            0 );
> +                    context = new HashMap<String, Object>();
> +
> +                    addProjectToCheckoutQueue( projectBuilderId,
> buildDefinitionTemplateId, context,
> +                                               projectGroupCreation,
> scmUserName, scmPassword, project );
>                 }
> -
> -                // used by BuildManager to determine on which build queue
> will the project be put
> -                context.put( AbstractContinuumAction.KEY_BUILD_DEFINITION,
> defaultBuildDefinition );
> -
> -                if ( !configurationService.isDistributedBuildEnabled() )
> -                {
> -                    executeAction( "add-project-to-checkout-queue",
> context );
> +            }
> +            else
> +            {
> +                Project project = result.getRootProject();
> +
> +                if( project != null )
> +                {
> +                    String scmRootUrl = AbstractContinuumAction.getString(
> context, AbstractContinuumAction.KEY_URL );
> +
> +                    context = new HashMap<String, Object>();
> +
> +                    context.put( AbstractContinuumAction.KEY_URL,
> scmRootUrl );
> +
> +                    addProjectToCheckoutQueue( projectBuilderId,
> buildDefinitionTemplateId, context, projectGroupCreation,
> +                                               scmUserName, scmPassword,
> project );
>                 }
> -
>             }
>         }
>         catch ( BuildDefinitionServiceException e )
> @@ -1676,18 +1646,78 @@
>         return result;
>     }
>
> +    private void addProjectToCheckoutQueue( String projectBuilderId, int
> buildDefinitionTemplateId,
> +                                            Map<String, Object> context,
> boolean projectGroupCreation,
> +                                            String scmUserName, String
> scmPassword, Project project )
> +        throws BuildDefinitionServiceException, ContinuumStoreException,
> ContinuumException
> +    {
> +        // CONTINUUM-1953 olamy : attached buildDefs from template here
> +        // if no group creation
> +        if ( !projectGroupCreation && buildDefinitionTemplateId > 0 )
> +        {
> +            buildDefinitionService.addTemplateInProject(
> buildDefinitionTemplateId,
> +
> projectDao.getProject( project.getId() ) );
> +        }
> +
> +        context.put( AbstractContinuumAction.KEY_UNVALIDATED_PROJECT,
> project );
> +        //
> +        //            executeAction( "validate-project", context );
> +        //
> +        //            executeAction( "store-project", context );
> +        //
> +        context.put( AbstractContinuumAction.KEY_PROJECT_ID,
> project.getId() );
> +
> +        // does the scm username & password really have to be set in the
> project?
> +        if ( !StringUtils.isEmpty( scmUserName ) )
> +        {
> +            project.setScmUsername( scmUserName );
> +            context.put( AbstractContinuumAction.KEY_SCM_USERNAME,
> scmUserName );
> +        }
> +        if ( !StringUtils.isEmpty( scmPassword ) )
> +        {
> +            project.setScmPassword( scmPassword );
> +            context.put( AbstractContinuumAction.KEY_SCM_PASSWORD,
> scmPassword );
> +        }
> +        // FIXME
> +        // olamy  : read again the project to have values because
> store.updateProjectGroup( projectGroup );
> +        // remove object data -> we don't display the project name in the
> build queue
> +        context.put( AbstractContinuumAction.KEY_PROJECT,
> projectDao.getProject( project.getId() ) );
> +
> +        BuildDefinition defaultBuildDefinition = null;
> +        if ( projectBuilderId.equals( MavenTwoContinuumProjectBuilder.ID )
> )
> +        {
> +            defaultBuildDefinition =
> +                (BuildDefinition)
> buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate().getBuildDefinitions().get(
> +                    0 );
> +        }
> +        else if ( projectBuilderId.equals(
> MavenOneContinuumProjectBuilder.ID ) )
> +        {
> +            defaultBuildDefinition =
> +                (BuildDefinition)
> buildDefinitionService.getDefaultMavenOneBuildDefinitionTemplate().getBuildDefinitions().get(
> +                    0 );
> +        }
> +
> +        // used by BuildManager to determine on which build queue will the
> project be put
> +        context.put( AbstractContinuumAction.KEY_BUILD_DEFINITION,
> defaultBuildDefinition );
> +
> +        if ( !configurationService.isDistributedBuildEnabled() )
> +        {
> +            executeAction( "add-project-to-checkout-queue", context );
> +        }
> +    }
> +
>     protected ContinuumProjectBuildingResult
> executeAddProjectsFromMetadataActivity( String metadataUrl,
>
>          String projectBuilderId,
>
>          int projectGroupId,
>
>          boolean checkProtocol,
>
>          boolean useCredentialsCache,
>
>          boolean loadRecursiveProjects,
> -
>           int buildDefinitionTemplateId )
> +
>           int buildDefinitionTemplateId, boolean checkoutInSingleDirectory )
>         throws ContinuumException
>     {
>         return executeAddProjectsFromMetadataActivity( metadataUrl,
> projectBuilderId, projectGroupId, checkProtocol,
>                                                        useCredentialsCache,
> loadRecursiveProjects,
> -
> buildDefinitionTemplateId, true );
> +
> buildDefinitionTemplateId, true, checkoutInSingleDirectory );
>     }
>
>     //
> ----------------------------------------------------------------------
> @@ -3083,7 +3113,7 @@
>         ProjectGroup group = getProjectGroupByProjectId( projectId );
>
>         List<ProjectScmRoot> scmRoots = getProjectScmRootByProjectGroup(
> group.getId() );
> -
> +
>         for ( ProjectScmRoot scmRoot : scmRoots )
>         {
>             if ( project.getScmUrl() != null &&
> project.getScmUrl().startsWith( scmRoot.getScmRootAddress() ) )
> @@ -3363,9 +3393,9 @@
>
>     private void prepareBuildProjects( Map<ProjectScmRoot, Map<Integer,
> Integer>> map, int trigger )
>         throws ContinuumException
> -    {
> +    {
>         for ( ProjectScmRoot scmRoot : map.keySet() )
> -        {
> +        {
>             prepareBuildProjects( map.get( scmRoot ), trigger,
> scmRoot.getScmRootAddress(),
>                                   scmRoot.getProjectGroup().getId(),
> scmRoot.getId() );
>         }
> @@ -3377,6 +3407,10 @@
>     {
>         ProjectGroup group = getProjectGroup( projectGroupId );
>
> +        // TODO: [deng] there should be a check somewhere that if the
> project was checked out in a
> +        //   single directory, then only the root project should be added
> in the projectsBuildDefinitionsMap!
> +        //   --> only the root url will be updated!
> +
>         try
>         {
>             if ( configurationService.isDistributedBuildEnabled() )
> @@ -3449,7 +3483,7 @@
>             projectScmRoot.setProjectGroup( projectGroup );
>
>             projectScmRoot.setScmRootAddress( url );
> -
> +
>             return projectScmRootDao.addProjectScmRoot( projectScmRoot );
>         }
>         catch ( ContinuumStoreException e )
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractContinuumAction.java
> Wed Apr 29 06:08:15 2009
> @@ -98,6 +98,8 @@
>     public static final String KEY_CANCELLED = "cancelled";
>
>     public static final String KEY_SCM_RESULT_MAP = "scm-result-map";
> +
> +    public static final String KEY_URL = "url";
>
>     //
> ----------------------------------------------------------------------
>     //
> @@ -228,17 +230,17 @@
>     {
>         return (Map<Integer, ScmResult>) getObject( context,
> KEY_SCM_RESULT_MAP );
>     }
> -
> +
>     //
> ----------------------------------------------------------------------
>     //
>     //
> ----------------------------------------------------------------------
>
> -    protected static String getString( Map<String, Object> context, String
> key )
> +    public static String getString( Map<String, Object> context, String
> key )
>     {
>         return (String) getObject( context, key );
>     }
>
> -    protected static String getString( Map<String, Object> context, String
> key, String defaultValue )
> +    public static String getString( Map<String, Object> context, String
> key, String defaultValue )
>     {
>         return (String) getObject( context, key, defaultValue );
>     }
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
> Wed Apr 29 06:08:15 2009
> @@ -61,10 +61,12 @@
>             project = projectDao.getProject( getProjectId( context ) );
>         }
>
> +        String scmRootUrl = getString( context, KEY_URL, null );
> +
>         BuildDefinition defaultBuildDefinition = getBuildDefinition(
> context );
>         parallelBuildsManager.checkoutProject( project.getId(),
> project.getName(),
>
>  workingDirectoryService.getWorkingDirectory( project ),
> -                                               project.getScmUsername(),
> project.getScmPassword(),
> -                                               defaultBuildDefinition );
> +                                               scmRootUrl,
> project.getScmUsername(),
> +                                               project.getScmPassword(),
> defaultBuildDefinition );
>     }
>  }
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java
> Wed Apr 29 06:08:15 2009
> @@ -97,8 +97,10 @@
>         {
>             String scmUserName = getString( context, KEY_SCM_USERNAME,
> project.getScmUsername() );
>             String scmPassword = getString( context, KEY_SCM_PASSWORD,
> project.getScmPassword() );
> +            String scmRootUrl = getString( context, KEY_URL,
> project.getScmUrl() );
> +
>             ContinuumScmConfiguration config =
> -                createScmConfiguration( project, workingDirectory,
> scmUserName, scmPassword );
> +                createScmConfiguration( project, workingDirectory,
> scmUserName, scmPassword, scmRootUrl );
>
>             String tag = config.getTag();
>             getLogger().info(
> @@ -197,10 +199,10 @@
>     }
>
>     private ContinuumScmConfiguration createScmConfiguration( Project
> project, File workingDirectory,
> -                                                              String
> scmUserName, String scmPassword )
> +                                                              String
> scmUserName, String scmPassword, String scmRootUrl )
>     {
>         ContinuumScmConfiguration config = new ContinuumScmConfiguration();
> -        config.setUrl( project.getScmUrl() );
> +        config.setUrl( scmRootUrl );
>         config.setUsername( scmUserName );
>         config.setPassword( scmPassword );
>         config.setUseCredentialsCache( project.isScmUseCache() );
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataAction.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataAction.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataAction.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateProjectsFromMetadataAction.java
> Wed Apr 29 06:08:15 2009
> @@ -76,13 +76,13 @@
>      */
>     private ContinuumUrlValidator urlValidator;
>
> -    public static final String KEY_URL = "url";
> -
>     public static final String KEY_PROJECT_BUILDER_ID = "builderId";
>
>     public static final String KEY_PROJECT_BUILDING_RESULT =
> "projectBuildingResult";
>
>     public static final String KEY_LOAD_RECURSIVE_PROJECTS =
> "loadRecursiveProjects";
> +
> +    public static final String KEY_CHECKOUT_PROJECTS_IN_SINGLE_DIRECTORY =
> "checkoutProjectsInSingleDirectory";
>
>     public void execute( Map context )
>         throws ContinuumException, ContinuumProjectBuilderManagerException,
> ContinuumProjectBuilderException
> @@ -90,6 +90,8 @@
>         String projectBuilderId = getString( context,
> KEY_PROJECT_BUILDER_ID );
>
>         boolean loadRecursiveProjects = getBoolean( context,
> KEY_LOAD_RECURSIVE_PROJECTS );
> +
> +        boolean checkoutProjectsInSingleDirectory = getBoolean( context,
> KEY_CHECKOUT_PROJECTS_IN_SINGLE_DIRECTORY );
>
>         String curl = getString( context, KEY_URL );
>
> @@ -111,7 +113,7 @@
>                 url = new URL( curl );
>
>                 result = projectBuilder.buildProjectsFromMetadata( url,
> null, null, loadRecursiveProjects,
> -
> buildDefinitionTemplate );
> +
> buildDefinitionTemplate, checkoutProjectsInSingleDirectory );
>
>             }
>             else
> @@ -150,7 +152,7 @@
>                 {
>
>                     result = projectBuilder.buildProjectsFromMetadata( url,
> username, password, loadRecursiveProjects,
> -
> buildDefinitionTemplate );
> +
> buildDefinitionTemplate, checkoutProjectsInSingleDirectory );
>
>                 }
>                 else
> @@ -164,7 +166,7 @@
>             if ( result.getProjects() != null )
>             {
>                 String scmRootUrl = getScmRootUrl( result.getProjects() );
> -
> +
>                 if ( scmRootUrl == null || scmRootUrl.equals( "" ) )
>                 {
>                     if ( curl.indexOf( "pom.xml" ) > 0 )
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenOneContinuumProjectBuilder.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenOneContinuumProjectBuilder.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenOneContinuumProjectBuilder.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenOneContinuumProjectBuilder.java
> Wed Apr 29 06:08:15 2009
> @@ -67,17 +67,17 @@
>     public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL
> url, String username, String password )
>         throws ContinuumProjectBuilderException
>     {
> -        return buildProjectsFromMetadata( url, username, password, true );
> +        return buildProjectsFromMetadata( url, username, password, true,
> false );
>     }
>
>     public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL
> url, String username, String password,
> -
> boolean recursiveProjects )
> +
> boolean recursiveProjects, boolean checkoutInSingleDirectory )
>         throws ContinuumProjectBuilderException
>     {
>         try
>         {
>             return buildProjectsFromMetadata( url, username, password,
> recursiveProjects,
> -
>  buildDefinitionService.getDefaultMavenOneBuildDefinitionTemplate() );
> +
>  buildDefinitionService.getDefaultMavenOneBuildDefinitionTemplate(),
> checkoutInSingleDirectory );
>         }
>         catch ( BuildDefinitionServiceException e )
>         {
> @@ -87,7 +87,7 @@
>
>     public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL
> url, String username, String password,
>
>  boolean recursiveProjects,
> -
> BuildDefinitionTemplate buildDefinitionTemplate )
> +
> BuildDefinitionTemplate buildDefinitionTemplate, boolean
> checkoutInSingleDirectory )
>         throws ContinuumProjectBuilderException
>     {
>         ContinuumProjectBuildingResult result = new
> ContinuumProjectBuildingResult();
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/project/builder/maven/MavenTwoContinuumProjectBuilder.java
> Wed Apr 29 06:08:15 2009
> @@ -83,6 +83,8 @@
>      * @plexus.configuration
>      */
>     private List<String> excludedPackagingTypes = new ArrayList<String>();
> +
> +    private Project rootProject;
>
>     //
> ----------------------------------------------------------------------
>     // AbstractContinuumProjectBuilder Implementation
> @@ -90,17 +92,17 @@
>     public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL
> url, String username, String password )
>         throws ContinuumProjectBuilderException
>     {
> -        return buildProjectsFromMetadata( url, username, password, true );
> +        return buildProjectsFromMetadata( url, username, password, true,
> false );
>     }
>
>     public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL
> url, String username, String password,
> -
> boolean loadRecursiveProjects )
> +
> boolean loadRecursiveProjects, boolean checkoutInSingleDirectory )
>         throws ContinuumProjectBuilderException
>     {
>         try
>         {
>             return buildProjectsFromMetadata( url, username, password,
> loadRecursiveProjects,
> -
>  buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate() );
> +
>  buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate(),
> checkoutInSingleDirectory );
>         }
>         catch ( BuildDefinitionServiceException e )
>         {
> @@ -110,7 +112,7 @@
>
>     public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL
> url, String username, String password,
>
>  boolean loadRecursiveProjects,
> -
> BuildDefinitionTemplate buildDefinitionTemplate )
> +
> BuildDefinitionTemplate buildDefinitionTemplate, boolean
> checkoutInSingleDirectory )
>         throws ContinuumProjectBuilderException
>     {
>         //
> ----------------------------------------------------------------------
> @@ -121,7 +123,7 @@
>
>         try
>         {
> -            readModules( url, result, true, username, password, null,
> loadRecursiveProjects, buildDefinitionTemplate );
> +            readModules( url, result, true, username, password, null,
> loadRecursiveProjects, buildDefinitionTemplate, checkoutInSingleDirectory );
>         }
>         catch ( BuildDefinitionServiceException e )
>         {
> @@ -136,7 +138,7 @@
>
>     private void readModules( URL url, ContinuumProjectBuildingResult
> result, boolean groupPom, String username,
>                               String password, String scmUrl, boolean
> loadRecursiveProjects,
> -                              BuildDefinitionTemplate
> buildDefinitionTemplate )
> +                              BuildDefinitionTemplate
> buildDefinitionTemplate, boolean checkoutInSingleDirectory )
>         throws ContinuumProjectBuilderException,
> BuildDefinitionServiceException
>     {
>
> @@ -154,7 +156,20 @@
>             }
>
>             mavenProject = builderHelper.getMavenProject( result, pomFile
> );
> -
> +
> +            if( !mavenProject.getModules().isEmpty() &&
> checkoutInSingleDirectory )
> +            {
> +                String module = ( String ) mavenProject.getModules().get(
> 0 );
> +                StringUtils.replace( module, '/', '\\' );
> +
> +                // confirm project is a flat multi-module project!
> +                if( module.indexOf( '\\' ) != 0 )
> +                {
> +                    String modulePath = StringUtils.substring( module,
> module.lastIndexOf( '\\' ) + 1 );
> +                    result.setModulePath( modulePath );
> +                }
> +            }
> +
>             if ( result.hasErrors() )
>             {
>                 return;
> @@ -264,6 +279,12 @@
>                 continuumProject.setScmTag( mavenProject.getScm().getTag()
> );
>             }
>             result.addProject( continuumProject, MavenTwoBuildExecutor.ID
> );
> +
> +            if( checkoutInSingleDirectory && rootProject == null )
> +            {
> +                rootProject = continuumProject;
> +                result.setRootProject( rootProject );
> +            }
>         }
>
>         List<String> modules = mavenProject.getModules();
> @@ -289,13 +310,13 @@
>
>         prefix = prefix.substring( 0, lastSlash );
>         if ( loadRecursiveProjects )
> -        {
> +        {
>             for ( String module : modules )
>             {
>                 if ( StringUtils.isNotEmpty( module ) )
> -                {
> +                {
>                     String urlString = prefix + "/" + module + POM_PART +
> suffix;
> -
> +
>                     URL moduleUrl;
>
>                     try
> @@ -309,18 +330,46 @@
>                         continue;
>                     }
>
> -                    String moduleScmUrl;
> -                    if ( scmUrl.endsWith( "/" ) )
> -                    {
> -                        moduleScmUrl = scmUrl + module;
> +                    String moduleScmUrl = "";
> +
> +                    String modulePath = StringUtils.replace( new String(
> module ), '\\', '/' );
> +
> +                    // check if module is relative
> +                    if( modulePath.indexOf( "/" ) != -1 )
> +                    {
> +                        int depth =
> +                            StringUtils.countMatches(
> StringUtils.substring( modulePath, 0,
> +
>   modulePath.lastIndexOf( '/' ) + 1 ), "/" );
> +
> +                        String baseUrl = "";
> +                        for( int j = 1; j <= depth; j++ )
> +                        {
> +                            if( scmUrl.endsWith( "/" ) )
> +                            {
> +                                String trimmedScmUrl =
> StringUtils.chompLast( new String( scmUrl ), "/" );
> +                                baseUrl = StringUtils.substring(
> trimmedScmUrl, 0, trimmedScmUrl.lastIndexOf( '/' ) );
> +                            }
> +                            else
> +                            {
> +                                baseUrl = StringUtils.substring( scmUrl,
> 0, scmUrl.lastIndexOf( '/' ) );
> +                            }
> +                        }
> +                        moduleScmUrl = baseUrl + "/" +
> StringUtils.substring( modulePath, modulePath.lastIndexOf( '/' ) + 1 );
>                     }
>                     else
>                     {
> -                        moduleScmUrl = scmUrl + "/" + module;
> +                        if ( scmUrl.endsWith( "/" ) )
> +                        {
> +                            moduleScmUrl = scmUrl + module;
> +                        }
> +                        else
> +                        {
> +                            moduleScmUrl = scmUrl + "/" + module;
> +                        }
>                     }
>                     // we are in recursive loading mode
>                     readModules( moduleUrl, result, false, username,
> password, moduleScmUrl, true,
> -                                 buildDefinitionTemplate );
> +                                 buildDefinitionTemplate,
> checkoutInSingleDirectory );
>                 }
>             }
>         }
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java
> Wed Apr 29 06:08:15 2009
> @@ -93,8 +93,8 @@
>
>         context.put( AbstractContinuumAction.KEY_SCM_USERNAME,
> task.getScmUserName() );
>
> -        context.put( AbstractContinuumAction.KEY_SCM_PASSWORD,
> task.getScmPassword() );
> -
> +        context.put( AbstractContinuumAction.KEY_URL, task.getScmRootUrl()
> );
> +
>         try
>         {
>             actionManager.lookup( "checkout-project" ).execute( context );
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/.cvsignore
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/.cvsignore?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/.cvsignore
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/.cvsignore
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,8 @@
> +target
> +*~
> +*.log
> +.classpath
> +.project
> +*.ipr
> +*.iws
> +*.iml
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/pom.xml
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/pom.xml?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/pom.xml
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/pom.xml
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,21 @@
> +<?xml version="1.0"?><project>
> +  <parent>
> +    <artifactId>parent-project</artifactId>
> +    <groupId>org.apache.continuum</groupId>
> +    <version>1.0-SNAPSHOT</version>
> +  </parent>
> +  <modelVersion>4.0.0</modelVersion>
> +  <groupId>org.apache.continuum</groupId>
> +  <artifactId>module-a</artifactId>
> +  <name>module-a</name>
> +  <version>1.0-SNAPSHOT</version>
> +  <url>http://maven.apache.org</url>
> +  <dependencies>
> +    <dependency>
> +      <groupId>junit</groupId>
> +      <artifactId>junit</artifactId>
> +      <version>3.8.1</version>
> +      <scope>test</scope>
> +    </dependency>
> +  </dependencies>
> +</project>
> \ No newline at end of file
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/module/a/App.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/module/a/App.java?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/module/a/App.java
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/main/java/org/apache/continuum/module/a/App.java
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,13 @@
> +package org.apache.continuum.module.a;
> +
> +/**
> + * Hello world!
> + *
> + */
> +public class App
> +{
> +    public static void main( String[] args )
> +    {
> +        System.out.println( "Hello World!" );
> +    }
> +}
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/module/a/AppTest.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/module/a/AppTest.java?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/module/a/AppTest.java
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/src/test/java/org/apache/continuum/module/a/AppTest.java
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,38 @@
> +package org.apache.continuum.module.a;
> +
> +import junit.framework.Test;
> +import junit.framework.TestCase;
> +import junit.framework.TestSuite;
> +
> +/**
> + * Unit test for simple App.
> + */
> +public class AppTest
> +    extends TestCase
> +{
> +    /**
> +     * Create the test case
> +     *
> +     * @param testName name of the test case
> +     */
> +    public AppTest( String testName )
> +    {
> +        super( testName );
> +    }
> +
> +    /**
> +     * @return the suite of tests being tested
> +     */
> +    public static Test suite()
> +    {
> +        return new TestSuite( AppTest.class );
> +    }
> +
> +    /**
> +     * Rigourous Test :-)
> +     */
> +    public void testApp()
> +    {
> +        assertTrue( true );
> +    }
> +}
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/pom.xml
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/pom.xml?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/pom.xml
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/pom.xml
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,21 @@
> +<?xml version="1.0"?><project>
> +  <parent>
> +    <artifactId>parent-project</artifactId>
> +    <groupId>org.apache.continuum</groupId>
> +    <version>1.0-SNAPSHOT</version>
> +  </parent>
> +  <modelVersion>4.0.0</modelVersion>
> +  <groupId>org.apache.continuum</groupId>
> +  <artifactId>module-b</artifactId>
> +  <name>module-b</name>
> +  <version>1.0-SNAPSHOT</version>
> +  <url>http://maven.apache.org</url>
> +  <dependencies>
> +    <dependency>
> +      <groupId>junit</groupId>
> +      <artifactId>junit</artifactId>
> +      <version>3.8.1</version>
> +      <scope>test</scope>
> +    </dependency>
> +  </dependencies>
> +</project>
> \ No newline at end of file
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/module/b/App.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/module/b/App.java?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/module/b/App.java
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/main/java/org/apache/continuum/module/b/App.java
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,13 @@
> +package org.apache.continuum.module.b;
> +
> +/**
> + * Hello world!
> + *
> + */
> +public class App
> +{
> +    public static void main( String[] args )
> +    {
> +        System.out.println( "Hello World!" );
> +    }
> +}
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/module/b/AppTest.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/module/b/AppTest.java?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/module/b/AppTest.java
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/src/test/java/org/apache/continuum/module/b/AppTest.java
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,38 @@
> +package org.apache.continuum.module.b;
> +
> +import junit.framework.Test;
> +import junit.framework.TestCase;
> +import junit.framework.TestSuite;
> +
> +/**
> + * Unit test for simple App.
> + */
> +public class AppTest
> +    extends TestCase
> +{
> +    /**
> +     * Create the test case
> +     *
> +     * @param testName name of the test case
> +     */
> +    public AppTest( String testName )
> +    {
> +        super( testName );
> +    }
> +
> +    /**
> +     * @return the suite of tests being tested
> +     */
> +    public static Test suite()
> +    {
> +        return new TestSuite( AppTest.class );
> +    }
> +
> +    /**
> +     * Rigourous Test :-)
> +     */
> +    public void testApp()
> +    {
> +        assertTrue( true );
> +    }
> +}
>
> Added:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/pom.xml
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/pom.xml?rev=769671&view=auto
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/pom.xml
> (added)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/pom.xml
> Wed Apr 29 06:08:15 2009
> @@ -0,0 +1,26 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
> http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd
> ">
> +  <modelVersion>4.0.0</modelVersion>
> +  <groupId>org.apache.continuum</groupId>
> +  <artifactId>parent-project</artifactId>
> +  <packaging>pom</packaging>
> +  <version>1.0-SNAPSHOT</version>
> +  <name>parent-project</name>
> +  <url>http://maven.apache.org</url>
> +  <scm>
> +
>  <connection>scm:local:src/test-projects:flat-multi-module/parent-project</connection>
> +    <url>
> http://cvs.plexus.codehaus.org/plexus-components/native/continuum/src/test-projects/flat-multi-module/parent-project
> </url>
> +  </scm>
> +  <dependencies>
> +    <dependency>
> +      <groupId>junit</groupId>
> +      <artifactId>junit</artifactId>
> +      <version>3.8.1</version>
> +      <scope>test</scope>
> +    </dependency>
> +  </dependencies>
> +  <modules>
> +    <module>../module-a</module>
> +    <module>../module-b</module>
> +  </modules>
> +</project>
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
> Wed Apr 29 06:08:15 2009
> @@ -391,8 +391,8 @@
>         recordCheckoutProjectBuildQueuesAreEmpty();
>
>         buildsManager.checkoutProject( 1, "continuum-project-test-1",
> -                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), "dummy", "dummypass",
> -                                       buildDef );
> +                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), null, "dummy",
> +                                       "dummypass", buildDef );
>         context.assertIsSatisfied();
>     }
>
> @@ -408,8 +408,8 @@
>         recordCheckoutProjectBuildQueuesAreEmpty();
>
>         buildsManager.checkoutProject( 1, "continuum-project-test-1",
> -                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), "dummy", "dummypass",
> -                                       buildDef );
> +                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), null, "dummy",
> +                                       "dummypass", buildDef );
>         context.assertIsSatisfied();
>
>         // queue second project - 1st queue has 1 task while 2nd queue is
> empty; project should be queued in
> @@ -421,7 +421,7 @@
>         final List<Task> tasksInFirstCheckoutQueue = new ArrayList<Task>();
>         tasksInFirstCheckoutQueue.add(
>             new CheckOutTask( 1, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-1",
> -                              "dummy", "dummypass" ) );
> +                              "dummy", "dummypass", null ) );
>
>         context.checking( new Expectations()
>         {
> @@ -439,8 +439,8 @@
>         recordAddToCheckoutQueue();
>
>         buildsManager.checkoutProject( 2, "continuum-project-test-2",
> -                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), "dummy", "dummypass",
> -                                       buildDef );
> +                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), null, "dummy",
> +                                       "dummypass", buildDef );
>         context.assertIsSatisfied();
>
>         // queue third project - both queues have 1 task queued each; third
> project should be queued in 1st queue
> @@ -459,8 +459,8 @@
>         recordAddToCheckoutQueue();
>
>         buildsManager.checkoutProject( 3, "continuum-project-test-3",
> -                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), "dummy", "dummypass",
> -                                       buildDef );
> +                                       new File( getBasedir(),
> "/target/test-working-dir/1" ), null, "dummy",
> +                                       "dummypass", buildDef );
>         context.assertIsSatisfied();
>     }
>
> @@ -563,7 +563,7 @@
>         final List<CheckOutTask> checkoutTasks = new
> ArrayList<CheckOutTask>();
>         checkoutTasks.add(
>             new CheckOutTask( 2, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-2",
> -                              "dummy", "dummypass" ) );
> +                              "dummy", "dummypass", null ) );
>
>         final ParallelBuildsThreadedTaskQueueExecutor
> buildTaskQueueExecutor =
>             context.mock( ParallelBuildsThreadedTaskQueueExecutor.class,
> "parallel-build-task-executor" );
> @@ -688,7 +688,7 @@
>         final List<CheckOutTask> checkoutTasks = new
> ArrayList<CheckOutTask>();
>         checkoutTasks.add(
>             new CheckOutTask( 2, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-2",
> -                              "dummy", "dummypass" ) );
> +                              "dummy", "dummypass", null ) );
>
>         try
>         {
> @@ -786,7 +786,7 @@
>         final List<Task> tasks = new ArrayList<Task>();
>         tasks.add(
>             new CheckOutTask( 2, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-2",
> -                              "dummy", "dummypass" ) );
> +                              "dummy", "dummypass", null ) );
>
>         context.checking( new Expectations()
>         {
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java
> Wed Apr 29 06:08:15 2009
> @@ -84,7 +84,7 @@
>     {
>         final CheckOutTask checkoutTask =
>             new CheckOutTask( 1, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-1",
> -                              "dummy", "dummypass" );
> +                              "dummy", "dummypass", null );
>         final TaskQueue checkoutQueue = context.mock( TaskQueue.class,
> "checkout-queue" );
>
>         context.checking( new Expectations()
> @@ -107,7 +107,7 @@
>         final List<Task> tasks = new ArrayList<Task>();
>         tasks.add(
>             new CheckOutTask( 1, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-1",
> -                              "dummy", "dummypass" ) );
> +                              "dummy", "dummypass", null ) );
>
>         context.checking( new Expectations()
>         {
> @@ -133,7 +133,7 @@
>         final List<Task> tasks = new ArrayList<Task>();
>         tasks.add(
>             new CheckOutTask( 1, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-1",
> -                              "dummy", "dummypass" ) );
> +                              "dummy", "dummypass", null ) );
>
>         context.checking( new Expectations()
>         {
> @@ -154,7 +154,7 @@
>     {
>         final Task checkoutTask =
>             new CheckOutTask( 1, new File( getBasedir(),
> "/target/test-working-dir/1" ), "continuum-project-test-1",
> -                              "dummy", "dummypass" );
> +                              "dummy", "dummypass", null );
>         final TaskQueue checkoutQueue = context.mock( TaskQueue.class,
> "checkout-queue" );
>         final List<Task> tasks = new ArrayList<Task>();
>         tasks.add( checkoutTask );
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddMaven2ProjectTest.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddMaven2ProjectTest.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddMaven2ProjectTest.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddMaven2ProjectTest.java
> Wed Apr 29 06:08:15 2009
> @@ -91,7 +91,7 @@
>         ContinuumProjectBuildingResult result =
> getContinuum().addMavenTwoProject(
>
>        rootPom.toURI().toURL()
>
>            .toExternalForm(), pg.getId(),
> -
>         true, false, false, bdt.getId() );
> +
>         true, false, false, bdt.getId(), false );
>         assertNotNull( result );
>
>         assertEquals( 1, result.getProjects().size() );
> @@ -118,7 +118,7 @@
>         ContinuumProjectBuildingResult result =
> getContinuum().addMavenTwoProject(
>
>        rootPom.toURI().toURL()
>
>            .toExternalForm(), -1, true,
> -
>         false, true, bdt.getId() );
> +
>         false, true, bdt.getId(), false );
>         assertNotNull( result );
>
>         assertEquals( 1, result.getProjects().size() );
> @@ -154,7 +154,7 @@
>         ContinuumProjectBuildingResult result =
> getContinuum().addMavenTwoProject(
>
>        rootPom.toURI().toURL()
>
>            .toExternalForm(), -1, true,
> -
>         false, true, -1 );
> +
>         false, true, -1, false );
>         assertNotNull( result );
>
>         assertEquals( 1, result.getProjects().size() );
> @@ -202,7 +202,7 @@
>         ContinuumProjectBuildingResult result =
> getContinuum().addMavenTwoProject(
>
>        rootPom.toURI().toURL()
>
>            .toExternalForm(), pg.getId(),
> -
>         true, false, false, -1 );
> +
>         true, false, false, -1, false );
>         assertNotNull( result );
>
>         assertEquals( 1, result.getProjects().size() );
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
> Wed Apr 29 06:08:15 2009
> @@ -38,7 +38,7 @@
>
>         ContinuumProjectBuildingResult result = continuum
>             .executeAddProjectsFromMetadataActivity( metadataUrl,
> MavenTwoContinuumProjectBuilder.ID,
> -
> getDefaultProjectGroup().getId(), false, true, false, -1, false );
> +
> getDefaultProjectGroup().getId(), false, true, false, -1, false, false );
>         assertEquals( 1, result.getProjects().size() );
>
>         // read the project from store
> @@ -56,7 +56,7 @@
>
>         ContinuumProjectBuildingResult result = continuum
>             .executeAddProjectsFromMetadataActivity( metadataUrl,
> MavenTwoContinuumProjectBuilder.ID,
> -
> getDefaultProjectGroup().getId(), false, false, false, -1, false );
> +
> getDefaultProjectGroup().getId(), false, false, false, -1, false, false );
>         assertEquals( 1, result.getProjects().size() );
>
>         // read the project from store
>
> Modified:
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/DefaultContinuumTest.java
> URL:
> http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/DefaultContinuumTest.java?rev=769671&r1=769670&r2=769671&view=diff
>
> ==============================================================================
> ---
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/DefaultContinuumTest.java
> (original)
> +++
> continuum/branches/continuum-flat-multi-module/continuum-core/src/test/java/org/apache/maven/continuum/DefaultContinuumTest.java
> Wed Apr 29 06:08:15 2009
> @@ -95,7 +95,7 @@
>         assertTrue( rootPom.exists() );
>
>         ContinuumProjectBuildingResult result =
> -            continuum.addMavenTwoProject(
> rootPom.toURI().toURL().toExternalForm(), -1, true, false, true, -1 );
> +            continuum.addMavenTwoProject(
> rootPom.toURI().toURL().toExternalForm(), -1, true, false, true, -1, false
> );
>
>         assertNotNull( result );
>
> @@ -128,8 +128,64 @@
>         assertTrue( "no irc notifier", projects.containsKey( "Continuum IRC
> Notifier" ) );
>
>         assertTrue( "no jabber notifier", projects.containsKey( "Continuum
> Jabber Notifier" ) );
> +    }
> +
> +    // handle flat multi-module projects
> +    public void testAddMavenTwoProjectSetInSingleDirectory()
> +        throws Exception
> +    {
> +        Continuum continuum = (Continuum) lookup( Continuum.ROLE );
> +
> +        String url = getTestFile(
> "src/test-projects/flat-multi-module/parent-project/pom.xml"
> ).toURL().toExternalForm();
> +
> +        ContinuumProjectBuildingResult result =
> continuum.addMavenTwoProject( url, -1, true, false, true, -1, true );
> +
> +        assertNotNull( result );
> +
> +        List<Project> projects = result.getProjects();
>
> +        assertEquals( 3, projects.size() );
> +
> +        Map<String, Project> projectsMap = new HashMap<String, Project>();
>
> +        for ( Project project : getProjectDao().getAllProjectsByName() )
> +        {
> +            projectsMap.put( project.getName(), project );
> +
> +            // validate project in project group
> +            assertTrue( "project not in project group",
> +                        getProjectGroupDao().getProjectGroupByProjectId(
> project.getId() ) != null );
> +        }
> +
> +        assertTrue( "no module-a", projectsMap.containsKey( "module-a" )
> );
> +
> +        assertTrue( "no module-b", projectsMap.containsKey( "module-b" )
> );
> +
> +        // check if the modules were checked out in the same directory as
> the parent
> +        ConfigurationService configurationService = ( ConfigurationService
> ) lookup( "configurationService" );
> +
> +        File workingDir = configurationService.getWorkingDirectory();
> +
> +        Project parentProject = getProjectDao().getProjectByName(
> "parent-project" );
> +
> +        File checkoutDir = new File( workingDir, String.valueOf(
> parentProject.getId() ) );
> +
> +        for( long delay = 0; delay <= 999999999; delay++ )
> +        {
> +            // wait while the project has been checked out
> +        }
> +
> +        assertTrue( "checkout directory of project 'parent-project' does
> not exist." , checkoutDir.exists() );
> +
> +        assertFalse( "module-a should not have been checked out as a
> separate project.",
> +                    new File( workingDir, String.valueOf(
> getProjectDao().getProjectByName( "module-a" ).getId() ) ).exists() );
> +
> +        assertFalse( "module-b should not have been checked out as a
> separate project.",
> +                    new File( workingDir, String.valueOf(
> getProjectDao().getProjectByName( "module-b" ).getId() ) ).exists() );
> +
> +        assertTrue( "module-a was not checked out in the same directory as
> it's parent.", new File( checkoutDir, "module-a" ).exists() );
> +
> +        assertTrue( "module-b was not checked out in the same directory as
> it's parent.", new File( checkoutDir, "module-b" ).exists() );
>     }
>
>     public void testUpdateMavenTwoProject()
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message