Return-Path: Delivered-To: apmail-continuum-commits-archive@www.apache.org Received: (qmail 64527 invoked from network); 11 May 2010 16:16:04 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 11 May 2010 16:16:04 -0000 Received: (qmail 63069 invoked by uid 500); 11 May 2010 16:16:04 -0000 Delivered-To: apmail-continuum-commits-archive@continuum.apache.org Received: (qmail 63049 invoked by uid 500); 11 May 2010 16:16:04 -0000 Mailing-List: contact commits-help@continuum.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@continuum.apache.org Delivered-To: mailing list commits@continuum.apache.org Received: (qmail 63042 invoked by uid 99); 11 May 2010 16:16:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 May 2010 16:16:04 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 11 May 2010 16:15:56 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 9EFDF23889E5; Tue, 11 May 2010 16:15:33 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r943159 [2/3] - 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/maven/c... Date: Tue, 11 May 2010 16:15:32 -0000 To: commits@continuum.apache.org From: oching@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100511161533.9EFDF23889E5@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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=943159&r1=943158&r2=943159&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 Tue May 11 16:15:28 2010 @@ -103,13 +103,17 @@ public class CheckoutProjectContinuumAct ScmResult result; + List projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context ); + try { String scmUserName = getScmUsername( context, project.getScmUsername() ); String scmPassword = getScmPassword( context, project.getScmPassword() ); + String scmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() ); + ContinuumScmConfiguration config = - createScmConfiguration( project, workingDirectory, scmUserName, scmPassword ); - + createScmConfiguration( project, workingDirectory, scmUserName, scmPassword, scmRootUrl, isRootDirectory( context ) ); + String tag = config.getTag(); getLogger().info( "Checking out project: '" + project.getName() + "', id: '" + project.getId() + "' " + "to '" + @@ -205,6 +209,19 @@ public class CheckoutProjectContinuumAct projectDao.updateProject( project ); + // update state of sub-projects + // if multi-module project was checked out in a single directory, these must not be null + for( Project projectWithCommonScmRoot : projectsWithCommonScmRoot ) + { + projectWithCommonScmRoot = projectDao.getProject( projectWithCommonScmRoot.getId() ); + if( projectWithCommonScmRoot != null && projectWithCommonScmRoot.getId() != project.getId() && + projectWithCommonScmRoot.getState() == ContinuumProjectState.NEW ) + { + projectWithCommonScmRoot.setState( ContinuumProjectState.CHECKEDOUT ); + projectDao.updateProject( projectWithCommonScmRoot ); + } + } + notifier.checkoutComplete( project, buildDefinition ); } @@ -213,10 +230,19 @@ public class CheckoutProjectContinuumAct } private ContinuumScmConfiguration createScmConfiguration( Project project, File workingDirectory, - String scmUserName, String scmPassword ) + String scmUserName, String scmPassword, String scmRootUrl, + boolean isRootDirectory ) { ContinuumScmConfiguration config = new ContinuumScmConfiguration(); - config.setUrl( project.getScmUrl() ); + + if( project.isCheckedOutInSingleDirectory() && scmRootUrl!= null && !"".equals( scmRootUrl ) && isRootDirectory ) + { + config.setUrl( scmRootUrl ); + } + else + { + config.setUrl( project.getScmUrl() ); + } 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/CleanWorkingDirectoryAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CleanWorkingDirectoryAction.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CleanWorkingDirectoryAction.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CleanWorkingDirectoryAction.java Tue May 11 16:15:28 2010 @@ -26,6 +26,7 @@ import org.apache.maven.shared.model.fil import org.apache.maven.shared.model.fileset.util.FileSetManager; import java.io.File; +import java.util.List; import java.util.Map; /** @@ -51,8 +52,12 @@ public class CleanWorkingDirectoryAction throws Exception { Project project = projectDao.getProject( getProjectId( context ) ); + List projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context ); + String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() ); - File workingDirectory = workingDirectoryService.getWorkingDirectory( project ); + File workingDirectory = + workingDirectoryService.getWorkingDirectory( project, projectScmRootUrl, + projectsWithCommonScmRoot ); if ( workingDirectory.exists() ) { 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=943159&r1=943158&r2=943159&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 Tue May 11 16:15:28 2010 @@ -61,13 +61,20 @@ import org.codehaus.plexus.util.xml.pull public class CreateProjectsFromMetadataAction extends AbstractContinuumAction { - private static final String KEY_URL = "url"; + // TODO: Review and fix access of constant variables used for build context! + + //private static final String KEY_URL = "url"; + + public static final String KEY_PROJECT_BUILDER_ID = "builderId"; - private static final String KEY_PROJECT_BUILDER_ID = "builderId"; + //private static final String KEY_PROJECT_BUILDER_ID = "builderId"; + public static final String KEY_PROJECT_BUILDING_RESULT = "projectBuildingResult"; - private static final String KEY_PROJECT_BUILDING_RESULT = "projectBuildingResult"; + //private static final String KEY_PROJECT_BUILDING_RESULT = "projectBuildingResult"; + public static final String KEY_LOAD_RECURSIVE_PROJECTS = "loadRecursiveProjects"; - private static final String KEY_LOAD_RECURSIVE_PROJECTS = "loadRecursiveProjects"; + //private static final String KEY_LOAD_RECURSIVE_PROJECTS = "loadRecursiveProjects"; + public static final String KEY_CHECKOUT_PROJECTS_IN_SINGLE_DIRECTORY = "checkoutProjectsInSingleDirectory"; /** * @plexus.requirement @@ -87,11 +94,16 @@ public class CreateProjectsFromMetadataA public void execute( Map context ) throws ContinuumException, ContinuumProjectBuilderManagerException, ContinuumProjectBuilderException { - String projectBuilderId = getProjectBuilderId( context ); + //String projectBuilderId = getProjectBuilderId( context ); + String projectBuilderId = getString( context, KEY_PROJECT_BUILDER_ID ); - boolean loadRecursiveProjects = isLoadRecursiveProject( context ); + //boolean loadRecursiveProjects = isLoadRecursiveProject( context ); + boolean loadRecursiveProjects = getBoolean( context, KEY_LOAD_RECURSIVE_PROJECTS ); + + boolean checkoutProjectsInSingleDirectory = getBoolean( context, KEY_CHECKOUT_PROJECTS_IN_SINGLE_DIRECTORY ); - String curl = getUrl( context ); + //String curl = getUrl( context ); + String curl = getString( context, KEY_URL ); URL url; @@ -111,7 +123,7 @@ public class CreateProjectsFromMetadataA url = new URL( curl ); result = projectBuilder.buildProjectsFromMetadata( url, null, null, loadRecursiveProjects, - buildDefinitionTemplate ); + buildDefinitionTemplate, checkoutProjectsInSingleDirectory ); } else @@ -150,7 +162,7 @@ public class CreateProjectsFromMetadataA { result = projectBuilder.buildProjectsFromMetadata( url, username, password, loadRecursiveProjects, - buildDefinitionTemplate ); + buildDefinitionTemplate, checkoutProjectsInSingleDirectory ); } else @@ -177,7 +189,8 @@ public class CreateProjectsFromMetadataA } } - setUrl( context, scmRootUrl ); + //setUrl( context, scmRootUrl ); + context.put( KEY_PROJECT_SCM_ROOT_URL, scmRootUrl ); } } catch ( MalformedURLException e ) @@ -193,7 +206,8 @@ public class CreateProjectsFromMetadataA result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL ); } - setProjectBuildingResult( context, result ); + //setProjectBuildingResult( context, result ); + context.put( KEY_PROJECT_BUILDING_RESULT, result ); } private String hidePasswordInUrl( String url ) @@ -299,7 +313,7 @@ public class CreateProjectsFromMetadataA this.urlValidator = urlValidator; } - public static ContinuumProjectBuildingResult getProjectBuildingResult( Map context ) + /*public static ContinuumProjectBuildingResult getProjectBuildingResult( Map context ) { return (ContinuumProjectBuildingResult) getObject( context, KEY_PROJECT_BUILDING_RESULT ); } @@ -337,5 +351,5 @@ public class CreateProjectsFromMetadataA public static void setLoadRecursiveProject( Map context, boolean loadRecursiveProject ) { context.put( KEY_LOAD_RECURSIVE_PROJECTS, loadRecursiveProject ); - } + }*/ } Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/DeployArtifactContinuumAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/DeployArtifactContinuumAction.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/DeployArtifactContinuumAction.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/DeployArtifactContinuumAction.java Tue May 11 16:15:28 2010 @@ -101,10 +101,14 @@ public class DeployArtifactContinuumActi if ( project.getState() == ContinuumProjectState.OK ) { BuildDefinition buildDefinition = getBuildDefinition( context ); + + String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() ); + + List projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context ); List artifacts = buildExecutor.getDeployableArtifacts( project, - workingDirectoryService.getWorkingDirectory( - project ), buildDefinition ); + workingDirectoryService.getWorkingDirectory( + project, projectScmRootUrl, projectsWithCommonScmRoot ), buildDefinition ); LocalRepository repository = project.getProjectGroup().getLocalRepository(); Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java Tue May 11 16:15:28 2010 @@ -204,12 +204,15 @@ public class ExecuteBuilderContinuumActi AbstractContinuumAction.setProject( context, project ); projectDao.updateProject( project ); + + String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() ); + List projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context ); // ---------------------------------------------------------------------- // Backup test result files // ---------------------------------------------------------------------- //TODO: Move as a plugin - buildExecutor.backupTestFiles( project, buildResult.getId() ); + buildExecutor.backupTestFiles( project, buildResult.getId(), projectScmRootUrl, projectsWithCommonScmRoot ); } } Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateProjectFromWorkingDirectoryContinuumAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateProjectFromWorkingDirectoryContinuumAction.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateProjectFromWorkingDirectoryContinuumAction.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateProjectFromWorkingDirectoryContinuumAction.java Tue May 11 16:15:28 2010 @@ -19,6 +19,7 @@ package org.apache.maven.continuum.core. * under the License. */ +import java.util.List; import java.util.Map; import org.apache.continuum.dao.BuildDefinitionDao; @@ -80,9 +81,11 @@ public class UpdateProjectFromWorkingDir ContinuumBuildExecutor builder = buildExecutorManager.getBuildExecutor( project.getExecutorId() ); ScmResult scmResult = (ScmResult) context.get( "scmResult" ); - builder.updateProjectFromCheckOut( workingDirectoryService.getWorkingDirectory( project ), project, - buildDefinition, scmResult ); - + List projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context ); + String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() ); + + builder.updateProjectFromCheckOut( workingDirectoryService.getWorkingDirectory( project, + projectScmRootUrl, projectsWithCommonScmRoot ), project, buildDefinition, scmResult ); // ---------------------------------------------------------------------- // Store the new descriptor // ---------------------------------------------------------------------- Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java Tue May 11 16:15:28 2010 @@ -116,9 +116,15 @@ public class UpdateWorkingDirectoryFromS { notifier.checkoutStarted( project, buildDefinition ); - // TODO: not sure why this is different to the context, but it all needs to change - File workingDirectory = workingDirectoryService.getWorkingDirectory( project ); - ContinuumScmConfiguration config = createScmConfiguration( project, workingDirectory ); + List projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context ); + String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() ); + + // TODO: not sure why this is different to the context, but it all needs to change + File workingDirectory = + workingDirectoryService.getWorkingDirectory( project, projectScmRootUrl, + projectsWithCommonScmRoot ); + + ContinuumScmConfiguration config = createScmConfiguration( project, workingDirectory, projectScmRootUrl ); config.setLatestUpdateDate( latestUpdateDate ); String tag = config.getTag(); String msg = @@ -198,10 +204,19 @@ public class UpdateWorkingDirectoryFromS AbstractContinuumAction.setProject( context, project ); } - private ContinuumScmConfiguration createScmConfiguration( Project project, File workingDirectory ) + private ContinuumScmConfiguration createScmConfiguration( Project project, File workingDirectory, String scmRootUrl ) { ContinuumScmConfiguration config = new ContinuumScmConfiguration(); - config.setUrl( project.getScmUrl() ); + + if( project.isCheckedOutInSingleDirectory() && scmRootUrl!= null && !"".equals( scmRootUrl ) ) + { + config.setUrl( scmRootUrl ); + } + else + { + config.setUrl( project.getScmUrl() ); + } + config.setUsername( project.getScmUsername() ); config.setPassword( project.getScmPassword() ); config.setUseCredentialsCache( project.isScmUseCache() ); Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/AbstractBuildExecutor.java Tue May 11 16:15:28 2010 @@ -248,7 +248,7 @@ public abstract class AbstractBuildExecu throws ContinuumBuildExecutorException { - File workingDirectory = getWorkingDirectory( project ); + File workingDirectory = getWorkingDirectory( project, null, null ); String actualExecutable = findExecutable( executable, defaultExecutable, resolveExecutable, workingDirectory ); @@ -340,7 +340,7 @@ public abstract class AbstractBuildExecu return jdk.getVarValue(); } - public void backupTestFiles( Project project, int buildId ) + public void backupTestFiles( Project project, int buildId, String projectScmRootUrl, List projectsWithCommonScmRoot ) { //Nothing to do, by default } @@ -456,7 +456,7 @@ public abstract class AbstractBuildExecu return Collections.EMPTY_LIST; } - public File getWorkingDirectory( Project project ) + public File getWorkingDirectory( Project project, String projectScmRootUrl, List projectsWithCommonScmRoot ) { return getWorkingDirectoryService().getWorkingDirectory( project ); } Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java Tue May 11 16:15:28 2010 @@ -338,7 +338,7 @@ public class MavenTwoBuildExecutor } @Override - public void backupTestFiles( Project project, int buildId ) + public void backupTestFiles( Project project, int buildId, String projectScmRootUrl, List projectsWithCommonScmRoot ) { File backupDirectory = null; try @@ -353,7 +353,7 @@ public class MavenTwoBuildExecutor { log.info( "error on surefire backup directory creation skip backup " + e.getMessage(), e ); } - backupTestFiles( getWorkingDirectory( project ), backupDirectory ); + backupTestFiles( getWorkingDirectory( project, projectScmRootUrl, projectsWithCommonScmRoot ), backupDirectory ); } private void backupTestFiles( File workingDir, File backupDirectory ) 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=943159&r1=943158&r2=943159&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 Tue May 11 16:15:28 2010 @@ -67,17 +67,17 @@ public class MavenOneContinuumProjectBui 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(), false ); } catch ( BuildDefinitionServiceException e ) { @@ -87,7 +87,7 @@ public class MavenOneContinuumProjectBui 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=943159&r1=943158&r2=943159&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 Tue May 11 16:15:28 2010 @@ -83,6 +83,8 @@ public class MavenTwoContinuumProjectBui * @plexus.configuration */ private List excludedPackagingTypes = new ArrayList(); + + private Project rootProject; // ---------------------------------------------------------------------- // AbstractContinuumProjectBuilder Implementation @@ -90,17 +92,18 @@ public class MavenTwoContinuumProjectBui 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 +113,7 @@ public class MavenTwoContinuumProjectBui public ContinuumProjectBuildingResult buildProjectsFromMetadata( URL url, String username, String password, boolean loadRecursiveProjects, - BuildDefinitionTemplate buildDefinitionTemplate ) + BuildDefinitionTemplate buildDefinitionTemplate, boolean checkoutInSingleDirectory ) throws ContinuumProjectBuilderException { // ---------------------------------------------------------------------- @@ -121,7 +124,7 @@ public class MavenTwoContinuumProjectBui 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 +139,7 @@ public class MavenTwoContinuumProjectBui 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 { @@ -238,6 +241,9 @@ public class MavenTwoContinuumProjectBui continuumProject.setScmPassword( password ); } } + + continuumProject.setCheckedOutInSingleDirectory( checkoutInSingleDirectory ); + // New project builderHelper.mapMavenProjectToContinuumProject( result, mavenProject, continuumProject, true); @@ -264,6 +270,13 @@ public class MavenTwoContinuumProjectBui continuumProject.setScmTag( mavenProject.getScm().getTag() ); } result.addProject( continuumProject, MavenTwoBuildExecutor.ID ); + + + if( checkoutInSingleDirectory && rootProject == null ) + { + rootProject = continuumProject; + result.setRootProject( rootProject ); + } } List modules = mavenProject.getModules(); @@ -300,6 +313,7 @@ public class MavenTwoContinuumProjectBui try { + urlString = StringUtils.replace( urlString, '\\', '/' ); moduleUrl = new URL( urlString ); } catch ( MalformedURLException e ) @@ -308,19 +322,34 @@ public class MavenTwoContinuumProjectBui result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL, urlString ); 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++ ) + { + scmUrl = StringUtils.chompLast( new String( scmUrl ), "/" ); + baseUrl = StringUtils.substring( scmUrl, 0, scmUrl.lastIndexOf( '/' ) ); + } + moduleScmUrl = baseUrl + "/" + StringUtils.substring( modulePath, modulePath.lastIndexOf( "../" ) + 3 ); } else { - moduleScmUrl = scmUrl + "/" + module; + scmUrl = StringUtils.chompLast( scmUrl, "/" ); + moduleScmUrl = scmUrl + "/" + modulePath; } // 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=943159&r1=943158&r2=943159&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 Tue May 11 16:15:28 2010 @@ -95,6 +95,11 @@ public class CheckOutTaskExecutor CheckoutProjectContinuumAction.setScmUsername( context, task.getScmUserName() ); CheckoutProjectContinuumAction.setScmPassword( context, task.getScmPassword() ); + + context.put( AbstractContinuumAction.KEY_PROJECT_SCM_ROOT_URL, task.getScmRootUrl() ); + + context.put( AbstractContinuumAction.KEY_PROJECTS_IN_GROUP_WITH_COMMON_SCM_ROOT, + task.getProjectsWithCommonScmRoot() ); try { Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java Tue May 11 16:15:28 2010 @@ -24,10 +24,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.io.File; import org.apache.continuum.dao.BuildDefinitionDao; import org.apache.continuum.dao.BuildResultDao; import org.apache.continuum.dao.ProjectDao; +import org.apache.continuum.dao.ProjectGroupDao; import org.apache.continuum.dao.ProjectScmRootDao; import org.apache.continuum.model.project.ProjectScmRoot; import org.apache.continuum.taskqueue.PrepareBuildProjectsTask; @@ -103,6 +105,11 @@ public class PrepareBuildProjectsTaskExe */ private ContinuumNotificationDispatcher notifierDispatcher; + /** + * @plexus.requirement + */ + private ProjectGroupDao projectGroupDao; + public void executeTask( Task task ) throws TaskExecutionException { @@ -113,58 +120,89 @@ public class PrepareBuildProjectsTaskExe Set projectsId = projectsBuildDefinitionsMap.keySet(); Map context = new HashMap(); Map scmResultMap = new HashMap(); + List projectList = new ArrayList(); + int projectGroupId = 0; try { - for ( Integer projectId : projectsId ) + if ( !projectsId.isEmpty() ) { - int buildDefinitionId = projectsBuildDefinitionsMap.get( projectId ); + int projectId = projectsId.iterator().next(); + Project project = projectDao.getProject( projectId ); + ProjectGroup projectGroup = project.getProjectGroup(); + projectGroupId = projectGroup.getId(); - log.info( "Initializing prepare build" ); - context = initializeContext( projectId, buildDefinitionId, prepareTask.getBuildTrigger() ); + List projects = projectDao.getProjectsWithDependenciesByGroupId( projectGroupId ); + projectList = ProjectSorter.getSortedProjects( projects, log ); + } - log.info( - "Starting prepare build of project: " + AbstractContinuumAction.getProject( context ).getName() ); - startPrepareBuild( context ); + Project rootProject = null; - if ( !checkProjectScmRoot( context ) ) + for ( Project project : projectList ) + { + if ( rootProject == null ) { - break; + // first project is the root project. + rootProject = project; } - try + int projectId = project.getId(); + int buildDefinitionId; + + if ( projectsBuildDefinitionsMap.get( projectId ) != null ) { - if ( AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() ) + buildDefinitionId = projectsBuildDefinitionsMap.get( projectId ); + + log.info( "Initializing prepare build" ); + context = initializeContext( project, buildDefinitionId, prepareTask.getBuildTrigger() ); + + log.info( + "Starting prepare build of project: " + AbstractContinuumAction.getProject( context ).getName() ); + startPrepareBuild( context ); + + if ( !checkProjectScmRoot( context ) ) { - log.info( "Purging existing working copy" ); - cleanWorkingDirectory( context ); + break; } - // ---------------------------------------------------------------------- - // TODO: Centralize the error handling from the SCM related actions. - // ContinuumScmResult should return a ContinuumScmResult from all - // methods, even in a case of failure. - // ---------------------------------------------------------------------- - log.info( "Updating working dir" ); - updateWorkingDirectory( context ); - - log.info( "Merging SCM results" ); - //CONTINUUM-1393 - if ( !AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() ) + try + { + if ( AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() ) + { + log.info( "Purging existing working copy" ); + cleanWorkingDirectory( context ); + } + + // ---------------------------------------------------------------------- + // TODO: Centralize the error handling from the SCM related actions. + // ContinuumScmResult should return a ContinuumScmResult from all + // methods, even in a case of failure. + // ---------------------------------------------------------------------- + log.info( "Updating working dir" ); + updateWorkingDirectory( context, rootProject ); + + log.info( "Merging SCM results" ); + //CONTINUUM-1393 + if ( !AbstractContinuumAction.getBuildDefinition( context ).isBuildFresh() ) + { + mergeScmResults( context ); + } + } + finally { - mergeScmResults( context ); + log.info( + "Ending prepare build of project: " + AbstractContinuumAction.getProject( context ).getName() ); + scmResultMap.put( AbstractContinuumAction.getProjectId( context ), + AbstractContinuumAction.getScmResult( context, null ) ); + endProjectPrepareBuild( context ); } } - finally - { - log.info( - "Ending prepare build of project: " + AbstractContinuumAction.getProject( context ).getName() ); - scmResultMap.put( AbstractContinuumAction.getProjectId( context ), - AbstractContinuumAction.getScmResult( context, new ScmResult() ) ); - endProjectPrepareBuild( context ); - } } } + catch ( ContinuumStoreException e ) + { + throw new TaskExecutionException( "Failed to prepare build project group: " + projectGroupId, e ); + } finally { log.info( "Ending prepare build" ); @@ -173,35 +211,38 @@ public class PrepareBuildProjectsTaskExe if ( checkProjectScmRoot( context ) ) { - int projectGroupId = AbstractContinuumAction.getProjectGroupId( context ); - buildProjects( projectGroupId, projectsBuildDefinitionsMap, buildTrigger, scmResultMap ); + projectGroupId = AbstractContinuumAction.getProjectGroupId( context ); + buildProjects( projectGroupId, projectList, projectsBuildDefinitionsMap, buildTrigger, scmResultMap ); } } - private Map initializeContext( int projectId, int buildDefinitionId, BuildTrigger buildTrigger ) + private Map initializeContext( Project project, int buildDefinitionId, BuildTrigger buildTrigger ) throws TaskExecutionException { Map context = new HashMap(); try { - Project project = projectDao.getProject( projectId ); ProjectGroup projectGroup = project.getProjectGroup(); List scmRoots = projectScmRootDao.getProjectScmRootByProjectGroup( projectGroup.getId() ); String projectScmUrl = project.getScmUrl(); + String projectScmRootAddress = ""; for ( ProjectScmRoot projectScmRoot : scmRoots ) { + projectScmRootAddress = projectScmRoot.getScmRootAddress(); + if ( projectScmUrl.startsWith( projectScmRoot.getScmRootAddress() ) ) { AbstractContinuumAction.setProjectScmRoot( context, projectScmRoot ); + context.put( AbstractContinuumAction.KEY_PROJECT_SCM_ROOT_URL, projectScmRootAddress ); break; } } AbstractContinuumAction.setProjectGroupId( context, projectGroup.getId() ); - AbstractContinuumAction.setProjectId( context, projectId ); + AbstractContinuumAction.setProjectId( context, project.getId() ); AbstractContinuumAction.setProject( context, project ); AbstractContinuumAction.setBuildTrigger( context, buildTrigger ); @@ -209,13 +250,28 @@ public class PrepareBuildProjectsTaskExe AbstractContinuumAction.setBuildDefinition( context, buildDefinitionDao.getBuildDefinition( buildDefinitionId ) ); + if( project.isCheckedOutInSingleDirectory() ) + { + List projectsInGroup = + projectGroupDao.getProjectGroupWithProjects( projectGroup.getId() ).getProjects(); + List projectsWithCommonScmRoot = new ArrayList(); + for( Project projectInGroup : projectsInGroup ) + { + if( projectInGroup.getScmUrl().startsWith( projectScmRootAddress ) ) + { + projectsWithCommonScmRoot.add( projectInGroup ); + } + } + context.put( AbstractContinuumAction.KEY_PROJECTS_IN_GROUP_WITH_COMMON_SCM_ROOT, projectsWithCommonScmRoot ); + } + BuildResult oldBuildResult = - buildResultDao.getLatestBuildResultForBuildDefinition( projectId, buildDefinitionId ); + buildResultDao.getLatestBuildResultForBuildDefinition( project.getId(), buildDefinitionId ); if ( oldBuildResult != null ) { AbstractContinuumAction.setOldScmResult( context, - getOldScmResults( projectId, oldBuildResult.getBuildNumber(), + getOldScmResults( project.getId(), oldBuildResult.getBuildNumber(), oldBuildResult.getEndTime() ) ); } else @@ -237,7 +293,7 @@ public class PrepareBuildProjectsTaskExe performAction( "clean-working-directory", context ); } - private void updateWorkingDirectory( Map context ) + private void updateWorkingDirectory( Map context, Project rootProject ) throws TaskExecutionException { performAction( "check-working-directory", context ); @@ -258,6 +314,43 @@ public class PrepareBuildProjectsTaskExe AbstractContinuumAction.setWorkingDirectory( context, workingDirectoryService.getWorkingDirectory( project ).getAbsolutePath() ); + + List projectsWithCommonScmRoot = AbstractContinuumAction.getListOfProjectsInGroupWithCommonScmRoot( context ); + String projectScmRootUrl = AbstractContinuumAction.getString( context, AbstractContinuumAction.KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() ); + String workingDir = null; + + if ( rootProject.getId() == project.getId() ) + { + workingDir = workingDirectoryService.getWorkingDirectory( project, false ).getAbsolutePath(); + + if ( project.isCheckedOutInSingleDirectory() ) + { + File parentDir = new File( workingDir ); + + while ( !isRootDirectory( parentDir.getAbsolutePath(), project ) ) + { + parentDir = parentDir.getParentFile(); + } + + if ( !parentDir.exists() ) + { + workingDir = parentDir.getAbsolutePath(); + } + } + } + + if ( workingDir == null || new File( workingDir ).exists() ) + { + workingDir = workingDirectoryService.getWorkingDirectory( + project, projectScmRootUrl, projectsWithCommonScmRoot ).getAbsolutePath(); + } + + AbstractContinuumAction.setWorkingDirectory( context, workingDir ); + + if ( rootProject.getId() != project.getId() || ( rootProject.getId() == project.getId() && !isRootDirectory( workingDir, rootProject ) ) ) + { + AbstractContinuumAction.setRootDirectory(context, false ); + } performAction( "checkout-project", context ); @@ -509,15 +602,10 @@ public class PrepareBuildProjectsTaskExe } } - private void buildProjects( int projectGroupId, Map projectsAndBuildDefinitionsMap, - BuildTrigger buildTrigger, Map scmResultMap ) + private void buildProjects( int projectGroupId, List projectList, Map projectsAndBuildDefinitionsMap, BuildTrigger buildTrigger, + Map scmResultMap ) throws TaskExecutionException - { - List projects = projectDao.getProjectsWithDependenciesByGroupId( projectGroupId ); - List projectList; - - projectList = ProjectSorter.getSortedProjects( projects, log ); - + { List projectsToBeBuilt = new ArrayList(); Map projectsBuildDefinitionsMap = new HashMap(); @@ -566,4 +654,10 @@ public class PrepareBuildProjectsTaskExe throw new TaskExecutionException( "Error executing action 'build-project'", e ); } } + + private boolean isRootDirectory( String workingDir, Project rootProject ) + { + return workingDir.endsWith( Integer.toString( rootProject.getId() ) + System.getProperty( "line.separator" ) ) + || workingDir.endsWith( Integer.toString( rootProject.getId() ) ); + } } Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/.cvsignore (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/.cvsignore Tue May 11 16:15:28 2010 @@ -6,3 +6,11 @@ target *.ipr *.iws *.iml +target +*~ +*.log +.classpath +.project +*.ipr +*.iws +*.iml Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/pom.xml (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-a/pom.xml Tue May 11 16:15:28 2010 @@ -1,4 +1,23 @@ - + + + parent-project org.apache.continuum @@ -18,4 +37,4 @@ test - \ No newline at end of file + Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- 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 (original) +++ 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 Tue May 11 16:15:28 2010 @@ -1,5 +1,37 @@ package org.apache.continuum.module.a; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} +package org.apache.continuum.module.a; + /** * Hello world! * Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- 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 (original) +++ 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 Tue May 11 16:15:28 2010 @@ -1,5 +1,62 @@ package org.apache.continuum.module.a; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +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 ); + } +} +package org.apache.continuum.module.a; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/pom.xml (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-b/pom.xml Tue May 11 16:15:28 2010 @@ -1,4 +1,23 @@ - + + + parent-project org.apache.continuum Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- 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 (original) +++ 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 Tue May 11 16:15:28 2010 @@ -1,5 +1,37 @@ package org.apache.continuum.module.b; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} +package org.apache.continuum.module.b; + /** * Hello world! * Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- 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 (original) +++ 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 Tue May 11 16:15:28 2010 @@ -1,5 +1,62 @@ package org.apache.continuum.module.b; +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +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 ); + } +} +package org.apache.continuum.module.b; + import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; Added: continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/pom.xml URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/pom.xml?rev=943159&view=auto ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/pom.xml (added) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/pom.xml Tue May 11 16:15:28 2010 @@ -0,0 +1,45 @@ + + + + + parent-project + org.apache.continuum + 1.0-SNAPSHOT + + 4.0.0 + org.apache.continuum + module-d + module-d + 1.0-SNAPSHOT + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + org.apache.continuum + module-a + 1.0-SNAPSHOT + + + Added: continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/src/main/java/org/apache/continuum/module/d/App.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/src/main/java/org/apache/continuum/module/d/App.java?rev=943159&view=auto ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/src/main/java/org/apache/continuum/module/d/App.java (added) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/src/main/java/org/apache/continuum/module/d/App.java Tue May 11 16:15:28 2010 @@ -0,0 +1,32 @@ +package org.apache.continuum.module.d; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * 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-c/module-d/src/test/java/org/apache/continuum/module/d/AppTest.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/src/test/java/org/apache/continuum/module/d/AppTest.java?rev=943159&view=auto ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/src/test/java/org/apache/continuum/module/d/AppTest.java (added) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/module-c/module-d/src/test/java/org/apache/continuum/module/d/AppTest.java Tue May 11 16:15:28 2010 @@ -0,0 +1,57 @@ +package org.apache.continuum.module.a; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +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 ); + } +} Modified: 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=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/pom.xml (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/flat-multi-module/parent-project/pom.xml Tue May 11 16:15:28 2010 @@ -1,4 +1,22 @@ + 4.0.0 org.apache.continuum @@ -22,5 +40,6 @@ ../module-a ../module-b + ../module-c/module-d - + \ No newline at end of file Added: continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/pom.xml URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/pom.xml?rev=943159&view=auto ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/pom.xml (added) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/pom.xml Tue May 11 16:15:28 2010 @@ -0,0 +1,40 @@ + + + + + multi-module-parent + org.apache.continuum + 1.0-SNAPSHOT + + 4.0.0 + org.apache.continuum + module-D + module-D + 1.0-SNAPSHOT + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + Added: continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/src/main/java/org/apache/continuum/module/c/App.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/src/main/java/org/apache/continuum/module/c/App.java?rev=943159&view=auto ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/src/main/java/org/apache/continuum/module/c/App.java (added) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/src/main/java/org/apache/continuum/module/c/App.java Tue May 11 16:15:28 2010 @@ -0,0 +1,32 @@ +package org.apache.continuum.module.c; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * 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/multi-module/module-C/module-D/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/multi-module/module-C/module-D/src/test/java/org/apache/continuum/module/b/AppTest.java?rev=943159&view=auto ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/src/test/java/org/apache/continuum/module/b/AppTest.java (added) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/module-C/module-D/src/test/java/org/apache/continuum/module/b/AppTest.java Tue May 11 16:15:28 2010 @@ -0,0 +1,57 @@ +package org.apache.continuum.module.b; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +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 ); + } +} Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/pom.xml URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/pom.xml?rev=943159&r1=943158&r2=943159&view=diff ============================================================================== --- continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/pom.xml (original) +++ continuum/branches/continuum-flat-multi-module/continuum-core/src/test-projects/multi-module/pom.xml Tue May 11 16:15:28 2010 @@ -41,5 +41,6 @@ module-A module-B + module-C/module-D 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=943159&r1=943158&r2=943159&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 Tue May 11 16:15:28 2010 @@ -435,8 +435,8 @@ public class ParallelBuildsManagerTest 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, null ); context.assertIsSatisfied(); } @@ -452,8 +452,8 @@ public class ParallelBuildsManagerTest 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, null ); context.assertIsSatisfied(); // queue second project - 1st queue has 1 task while 2nd queue is empty; project should be queued in @@ -465,7 +465,7 @@ public class ParallelBuildsManagerTest final List tasksInFirstCheckoutQueue = new ArrayList(); tasksInFirstCheckoutQueue.add( new CheckOutTask( 1, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-1", - "dummy", "dummypass" ) ); + "dummy", "dummypass", null, null ) ); context.checking( new Expectations() { @@ -486,8 +486,8 @@ public class ParallelBuildsManagerTest 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, null ); context.assertIsSatisfied(); // queue third project - both queues have 1 task queued each; third project should be queued in 1st queue @@ -509,8 +509,8 @@ public class ParallelBuildsManagerTest 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, null ); context.assertIsSatisfied(); } @@ -613,7 +613,7 @@ public class ParallelBuildsManagerTest final List checkoutTasks = new ArrayList(); checkoutTasks.add( new CheckOutTask( 2, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-2", - "dummy", "dummypass" ) ); + "dummy", "dummypass", null, null ) ); final ParallelBuildsThreadedTaskQueueExecutor buildTaskQueueExecutor = context.mock( ParallelBuildsThreadedTaskQueueExecutor.class, "parallel-build-task-executor" ); @@ -756,7 +756,7 @@ public class ParallelBuildsManagerTest final List checkoutTasks = new ArrayList(); checkoutTasks.add( new CheckOutTask( 2, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-2", - "dummy", "dummypass" ) ); + "dummy", "dummypass", null, null ) ); try { @@ -863,7 +863,7 @@ public class ParallelBuildsManagerTest final List tasks = new ArrayList(); tasks.add( new CheckOutTask( 2, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-2", - "dummy", "dummypass" ) ); + "dummy", "dummypass", null, 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=943159&r1=943158&r2=943159&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 Tue May 11 16:15:28 2010 @@ -85,7 +85,7 @@ public class DefaultOverallBuildQueueTes { final CheckOutTask checkoutTask = new CheckOutTask( 1, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-1", - "dummy", "dummypass" ); + "dummy", "dummypass", null, null ); final TaskQueue checkoutQueue = context.mock( TaskQueue.class, "checkout-queue" ); context.checking( new Expectations() @@ -108,7 +108,7 @@ public class DefaultOverallBuildQueueTes final List tasks = new ArrayList(); tasks.add( new CheckOutTask( 1, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-1", - "dummy", "dummypass" ) ); + "dummy", "dummypass", null, null ) ); context.checking( new Expectations() { @@ -134,7 +134,7 @@ public class DefaultOverallBuildQueueTes final List tasks = new ArrayList(); tasks.add( new CheckOutTask( 1, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-1", - "dummy", "dummypass" ) ); + "dummy", "dummypass", null, null ) ); context.checking( new Expectations() { @@ -155,7 +155,7 @@ public class DefaultOverallBuildQueueTes { final Task checkoutTask = new CheckOutTask( 1, new File( getBasedir(), "/target/test-working-dir/1" ), "continuum-project-test-1", - "dummy", "dummypass" ); + "dummy", "dummypass", null, null ); final TaskQueue checkoutQueue = context.mock( TaskQueue.class, "checkout-queue" ); final List tasks = new ArrayList(); tasks.add( checkoutTask );