You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by oc...@apache.org on 2010/05/06 11:23:34 UTC
svn commit: r941625 [9/24] - in
/continuum/branches/continuum-flat-multi-module: ./ continuum-api/
continuum-api/src/main/java/org/apache/continuum/builder/distributed/
continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/
conti...
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/build/settings/DefaultSchedulesActivator.java Thu May 6 09:23:13 2010
@@ -82,7 +82,7 @@ public class DefaultSchedulesActivator
*/
private Scheduler scheduler;
- //private int delay = 3600;
+ // private int delay = 3600;
private static final int delay = 1;
public void activateSchedules( Continuum continuum )
@@ -94,42 +94,27 @@ public class DefaultSchedulesActivator
for ( Schedule schedule : schedules )
{
- if ( StringUtils.isEmpty( schedule.getCronExpression() ) )
- {
- // TODO: this can possibly be removed but it's here now to
- // weed out any bugs
- log.info( "Not scheduling " + schedule.getName() );
-
- continue;
- }
-
- try
+ if ( schedule.isActive() )
{
- // check schedule job class
- if ( isScheduleFromBuildJob( schedule ) )
+ try
{
- schedule( schedule, continuum, ContinuumBuildJob.class );
+ activateSchedule( schedule, continuum );
}
-
- if ( isScheduleFromPurgeJob( schedule ) )
+ catch ( SchedulesActivationException e )
{
- schedule( schedule, continuum, ContinuumPurgeJob.class );
- }
- }
- catch ( SchedulesActivationException e )
- {
- log.error( "Can't activate schedule '" + schedule.getName() + "'", e );
+ log.error( "Can't activate schedule '" + schedule.getName() + "'", e );
- schedule.setActive( false );
+ schedule.setActive( false );
- try
- {
- scheduleDao.storeSchedule( schedule );
- }
- catch ( ContinuumStoreException e1 )
- {
- throw new SchedulesActivationException( "Can't desactivate schedule '" + schedule.getName() + "'",
- e );
+ try
+ {
+ scheduleDao.storeSchedule( schedule );
+ }
+ catch ( ContinuumStoreException e1 )
+ {
+ throw new SchedulesActivationException( "Can't desactivate schedule '" + schedule.getName()
+ + "'", e );
+ }
}
}
}
@@ -138,16 +123,31 @@ public class DefaultSchedulesActivator
public void activateSchedule( Schedule schedule, Continuum continuum )
throws SchedulesActivationException
{
- log.info( "Activating schedule " + schedule.getName() );
+ if ( schedule != null )
+ {
+ log.info( "Activating schedule " + schedule.getName() );
- if ( isScheduleFromBuildJob( schedule ) )
+ activateBuildSchedule( schedule, continuum );
+
+ activatePurgeSchedule( schedule, continuum );
+ }
+ }
+
+ public void activateBuildSchedule( Schedule schedule, Continuum continuum )
+ throws SchedulesActivationException
+ {
+ if ( schedule != null && schedule.isActive() && isScheduleFromBuildJob( schedule ) )
{
- schedule( schedule, continuum, ContinuumBuildJob.class );
+ schedule( schedule, continuum, ContinuumBuildJob.class, ContinuumBuildJob.BUILD_GROUP );
}
+ }
- if ( isScheduleFromPurgeJob( schedule ) )
+ public void activatePurgeSchedule( Schedule schedule, Continuum continuum )
+ throws SchedulesActivationException
+ {
+ if ( schedule != null && schedule.isActive() && isScheduleFromPurgeJob( schedule ) )
{
- schedule( schedule, continuum, ContinuumPurgeJob.class );
+ schedule( schedule, continuum, ContinuumPurgeJob.class, ContinuumPurgeJob.PURGE_GROUP );
}
}
@@ -156,16 +156,50 @@ public class DefaultSchedulesActivator
{
log.info( "Deactivating schedule " + schedule.getName() );
- unschedule( schedule );
+ unactivateBuildSchedule( schedule );
+ unactivatePurgeSchedule( schedule );
+ }
+
+ public void unactivateOrphanBuildSchedule( Schedule schedule )
+ throws SchedulesActivationException
+ {
+ if ( schedule != null && !isScheduleFromBuildJob( schedule ) )
+ {
+ unactivateBuildSchedule( schedule );
+ }
}
- protected void schedule( Schedule schedule, Continuum continuum, Class jobClass )
+ public void unactivateOrphanPurgeSchedule( Schedule schedule )
throws SchedulesActivationException
{
- if ( !schedule.isActive() )
+ if ( schedule != null && !isScheduleFromPurgeJob( schedule ) )
{
- log.info( "Schedule \"" + schedule.getName() + "\" is disabled." );
+ unactivatePurgeSchedule( schedule );
+ }
+ }
+
+ private void unactivateBuildSchedule( Schedule schedule )
+ throws SchedulesActivationException
+ {
+ log.debug( "Deactivating schedule " + schedule.getName() + " for Build Process" );
+ unschedule( schedule, ContinuumBuildJob.BUILD_GROUP );
+ }
+
+ private void unactivatePurgeSchedule( Schedule schedule )
+ throws SchedulesActivationException
+ {
+ log.debug( "Deactivating schedule " + schedule.getName() + " for Purge Process" );
+
+ unschedule( schedule, ContinuumPurgeJob.PURGE_GROUP );
+ }
+
+ protected void schedule( Schedule schedule, Continuum continuum, Class jobClass, String group )
+ throws SchedulesActivationException
+ {
+ if ( StringUtils.isEmpty( schedule.getCronExpression() ) )
+ {
+ log.info( "Not scheduling " + schedule.getName() );
return;
}
@@ -177,9 +211,9 @@ public class DefaultSchedulesActivator
dataMap.put( ContinuumSchedulerConstants.SCHEDULE, schedule );
- //the name + group makes the job unique
+ // the name + group makes the job unique
- JobDetail jobDetail = new JobDetail( schedule.getName(), org.quartz.Scheduler.DEFAULT_GROUP, jobClass );
+ JobDetail jobDetail = new JobDetail( schedule.getName(), group, jobClass );
jobDetail.setJobDataMap( dataMap );
@@ -189,7 +223,7 @@ public class DefaultSchedulesActivator
trigger.setName( schedule.getName() );
- trigger.setGroup( org.quartz.Scheduler.DEFAULT_GROUP );
+ trigger.setGroup( group );
Date startTime = new Date( System.currentTimeMillis() + delay * 1000 );
@@ -218,7 +252,7 @@ public class DefaultSchedulesActivator
}
}
- private void unschedule( Schedule schedule )
+ private void unschedule( Schedule schedule, String group )
throws SchedulesActivationException
{
try
@@ -227,10 +261,10 @@ public class DefaultSchedulesActivator
{
log.info( "Stopping active schedule \"" + schedule.getName() + "\"." );
- scheduler.interruptSchedule( schedule.getName(), org.quartz.Scheduler.DEFAULT_GROUP );
+ scheduler.interruptSchedule( schedule.getName(), group );
}
- scheduler.unscheduleJob( schedule.getName(), org.quartz.Scheduler.DEFAULT_GROUP );
+ scheduler.unscheduleJob( schedule.getName(), group );
}
catch ( SchedulerException e )
{
@@ -241,7 +275,9 @@ public class DefaultSchedulesActivator
private boolean isScheduleFromBuildJob( Schedule schedule )
{
List<BuildDefinition> buildDef = buildDefinitionDao.getBuildDefinitionsBySchedule( schedule.getId() );
-
+ // Take account templateBuildDefinition too.
+ // A improvement will be add schedule only for active buildDefinition, but it would need activate
+ // schedule job in add project and add group process
return buildDef.size() > 0;
}
@@ -249,9 +285,9 @@ public class DefaultSchedulesActivator
private boolean isScheduleFromPurgeJob( Schedule schedule )
{
List<RepositoryPurgeConfiguration> repoPurgeConfigs =
- repositoryPurgeConfigurationDao.getRepositoryPurgeConfigurationsBySchedule( schedule.getId() );
+ repositoryPurgeConfigurationDao.getEnableRepositoryPurgeConfigurationsBySchedule( schedule.getId() );
List<DirectoryPurgeConfiguration> dirPurgeConfigs =
- directoryPurgeConfigurationDao.getDirectoryPurgeConfigurationsBySchedule( schedule.getId() );
+ directoryPurgeConfigurationDao.getEnableDirectoryPurgeConfigurationsBySchedule( schedule.getId() );
return repoPurgeConfigs.size() > 0 || dirPurgeConfigs.size() > 0;
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildContext.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildContext.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildContext.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildContext.java Thu May 6 09:23:13 2010
@@ -19,6 +19,7 @@ package org.apache.maven.continuum.build
* under the License.
*/
+import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
@@ -51,7 +52,7 @@ public class BuildContext
private ScmResult scmResult;
- private int trigger;
+ private BuildTrigger buildTrigger;
private BuildResult buildResult;
@@ -138,14 +139,14 @@ public class BuildContext
return actionContext;
}
- public int getTrigger()
+ public BuildTrigger getBuildTrigger()
{
- return trigger;
+ return buildTrigger;
}
- public void setTrigger( int trigger )
+ public void setBuildTrigger( BuildTrigger buildTrigger )
{
- this.trigger = trigger;
+ this.buildTrigger = buildTrigger;
}
public List<ProjectDependency> getModifiedDependencies()
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildController.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildController.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildController.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildController.java Thu May 6 09:23:13 2010
@@ -19,6 +19,7 @@ package org.apache.maven.continuum.build
* under the License.
*/
+import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.maven.continuum.model.scm.ScmResult;
import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
@@ -30,6 +31,6 @@ public interface BuildController
{
String ROLE = BuildController.class.getName();
- void build( int projectId, int buildDefinitionId, int trigger, ScmResult scmResult )
+ void build( int projectId, int buildDefinitionId, BuildTrigger buildTrigger, ScmResult scmResult )
throws TaskExecutionException;
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java Thu May 6 09:23:13 2010
@@ -46,6 +46,6 @@ public class BuildProjectTaskExecutor
BuildProjectTask buildProjectTask = (BuildProjectTask) task;
controller.build( buildProjectTask.getProjectId(), buildProjectTask.getBuildDefinitionId(), buildProjectTask
- .getTrigger(), buildProjectTask.getScmResult() );
+ .getBuildTrigger(), buildProjectTask.getScmResult() );
}
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java Thu May 6 09:23:13 2010
@@ -27,11 +27,12 @@ import java.util.Map;
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.utils.ContinuumUtils;
+import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.maven.continuum.core.action.AbstractContinuumAction;
+import org.apache.maven.continuum.core.action.ExecuteBuilderContinuumAction;
import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
import org.apache.maven.continuum.execution.ContinuumBuildExecutorConstants;
import org.apache.maven.continuum.execution.manager.BuildExecutorManager;
@@ -39,7 +40,6 @@ import org.apache.maven.continuum.model.
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.project.ProjectDependency;
-import org.apache.maven.continuum.model.project.ProjectGroup;
import org.apache.maven.continuum.model.scm.ChangeFile;
import org.apache.maven.continuum.model.scm.ChangeSet;
import org.apache.maven.continuum.model.scm.ScmResult;
@@ -84,11 +84,6 @@ public class DefaultBuildController
/**
* @plexus.requirement
*/
- private ProjectGroupDao projectGroupDao;
-
- /**
- * @plexus.requirement
- */
private ProjectScmRootDao projectScmRootDao;
/**
@@ -118,14 +113,15 @@ public class DefaultBuildController
/**
* @param projectId
* @param buildDefinitionId
- * @param trigger
+ * @param buildTrigger
+ * @param scmResult
* @throws TaskExecutionException
*/
- public void build( int projectId, int buildDefinitionId, int trigger, ScmResult scmResult )
+ public void build( int projectId, int buildDefinitionId, BuildTrigger buildTrigger, ScmResult scmResult )
throws TaskExecutionException
{
log.info( "Initializing build" );
- BuildContext context = initializeBuildContext( projectId, buildDefinitionId, trigger, scmResult );
+ BuildContext context = initializeBuildContext( projectId, buildDefinitionId, buildTrigger, scmResult );
// ignore this if AlwaysBuild ?
if ( !checkScmResult( context ) )
@@ -164,9 +160,9 @@ public class DefaultBuildController
performAction( "deploy-artifact", context );
- context.setCancelled( (Boolean) actionContext.get( AbstractContinuumAction.KEY_CANCELLED ) );
+ context.setCancelled( ExecuteBuilderContinuumAction.isCancelled( actionContext ) );
- String s = AbstractContinuumAction.getBuildId( actionContext );
+ String s = AbstractContinuumAction.getBuildId( actionContext, null );
if ( s != null && !context.isCancelled() )
{
@@ -214,19 +210,14 @@ public class DefaultBuildController
{
try
{
- String s = AbstractContinuumAction.getBuildId( context.getActionContext() );
+ String s = AbstractContinuumAction.getBuildId( context.getActionContext(), null );
if ( s != null )
{
BuildResult buildResult = buildResultDao.getBuildResult( Integer.valueOf( s ) );
project.setState( buildResult.getState() );
+ projectDao.updateProject( project );
}
- else
- {
- project.setState( ContinuumProjectState.ERROR );
- }
-
- projectDao.updateProject( project );
}
catch ( ContinuumStoreException e )
{
@@ -325,11 +316,12 @@ public class DefaultBuildController
*
* @param projectId
* @param buildDefinitionId
- * @param trigger
+ * @param buildTrigger
+ * @param scmResult
* @return
* @throws TaskExecutionException
*/
- protected BuildContext initializeBuildContext( int projectId, int buildDefinitionId, int trigger,
+ protected BuildContext initializeBuildContext( int projectId, int buildDefinitionId, BuildTrigger buildTrigger,
ScmResult scmResult )
throws TaskExecutionException
{
@@ -337,10 +329,8 @@ public class DefaultBuildController
context.setStartTime( System.currentTimeMillis() );
- context.setTrigger( trigger );
+ context.setBuildTrigger( buildTrigger );
- Map<String, Object> actionContext = context.getActionContext();
-
try
{
Project project = projectDao.getProject( projectId );
@@ -357,37 +347,6 @@ public class DefaultBuildController
context.setOldBuildResult( oldBuildResult );
context.setScmResult( scmResult );
-
- // CONTINUUM-2193
- ProjectGroup projectGroup = project.getProjectGroup();
- List<ProjectScmRoot> scmRoots = projectScmRootDao.getProjectScmRootByProjectGroup( projectGroup.getId() );
- String projectScmUrl = project.getScmUrl();
- String projectScmRootAddress = "";
-
- for ( ProjectScmRoot projectScmRoot : scmRoots )
- {
- projectScmRootAddress = projectScmRoot.getScmRootAddress();
- if ( projectScmUrl.contains( projectScmRoot.getScmRootAddress() ) )
- {
- actionContext.put( AbstractContinuumAction.KEY_PROJECT_SCM_ROOT_URL, projectScmRoot.getScmRootAddress() );
- break;
- }
- }
-
- if( project.isCheckedOutInSingleDirectory() )
- {
- List<Project> projectsInGroup =
- projectGroupDao.getProjectGroupWithProjects( projectGroup.getId() ).getProjects();
- List<Project> projectsWithCommonScmRoot = new ArrayList<Project>();
- for( Project projectInGroup : projectsInGroup )
- {
- if( projectInGroup.getScmUrl().contains( projectScmRootAddress ) )
- {
- projectsWithCommonScmRoot.add( projectInGroup );
- }
- }
- actionContext.put( AbstractContinuumAction.KEY_PROJECTS_IN_GROUP_WITH_COMMON_SCM_ROOT, projectsWithCommonScmRoot );
- }
// CONTINUUM-1871 olamy if continuum is killed during building oldBuildResult will have a endTime 0
// this means all changes since the project has been loaded in continuum will be in memory
@@ -403,23 +362,23 @@ public class DefaultBuildController
throw new TaskExecutionException( "Error initializing the build context", e );
}
- actionContext.put( AbstractContinuumAction.KEY_PROJECT_ID, projectId );
+ Map<String, Object> actionContext = context.getActionContext();
+
+ AbstractContinuumAction.setProjectId( actionContext, projectId );
- actionContext.put( AbstractContinuumAction.KEY_PROJECT, context.getProject() );
+ AbstractContinuumAction.setProject( actionContext, context.getProject() );
- actionContext.put( AbstractContinuumAction.KEY_BUILD_DEFINITION_ID, buildDefinitionId );
+ AbstractContinuumAction.setBuildDefinitionId( actionContext, buildDefinitionId );
- actionContext.put( AbstractContinuumAction.KEY_BUILD_DEFINITION, context.getBuildDefinition() );
+ AbstractContinuumAction.setBuildDefinition( actionContext, context.getBuildDefinition() );
- actionContext.put( AbstractContinuumAction.KEY_TRIGGER, trigger );
+ AbstractContinuumAction.setBuildTrigger( actionContext, buildTrigger );
- actionContext.put( AbstractContinuumAction.KEY_FIRST_RUN, context.getOldBuildResult() == null );
+ AbstractContinuumAction.setScmResult( actionContext, context.getScmResult() );
- actionContext.put( AbstractContinuumAction.KEY_SCM_RESULT, context.getScmResult() );
-
if ( context.getOldBuildResult() != null )
{
- actionContext.put( AbstractContinuumAction.KEY_OLD_BUILD_ID, context.getOldBuildResult().getId() );
+ AbstractContinuumAction.setOldBuildId( actionContext, context.getOldBuildResult().getId() );
}
return context;
@@ -495,7 +454,7 @@ public class DefaultBuildController
}
if ( context.getOldBuildResult() == null )
{
- log.info( "The project was never be built with the current build definition, building" );
+ log.info( "The project has never been built with the current build definition, building" );
return true;
}
@@ -509,7 +468,7 @@ public class DefaultBuildController
return true;
}
- if ( context.getTrigger() == ContinuumProjectState.TRIGGER_FORCED )
+ if ( context.getBuildTrigger().getTrigger() == ContinuumProjectState.TRIGGER_FORCED )
{
log.info( "The project build is forced, building" );
return true;
@@ -521,15 +480,18 @@ public class DefaultBuildController
if ( project.getOldState() != ContinuumProjectState.NEW &&
project.getOldState() != ContinuumProjectState.CHECKEDOUT &&
- context.getTrigger() != ContinuumProjectState.TRIGGER_FORCED &&
+ context.getBuildTrigger().getTrigger() != ContinuumProjectState.TRIGGER_FORCED &&
project.getState() != ContinuumProjectState.NEW && project.getState() != ContinuumProjectState.CHECKEDOUT )
{
// Check SCM changes
- allChangesUnknown = checkAllChangesUnknown( context.getScmResult().getChanges() );
+ if ( context.getScmResult() != null )
+ {
+ allChangesUnknown = checkAllChangesUnknown( context.getScmResult().getChanges() );
+ }
if ( allChangesUnknown )
{
- if ( !context.getScmResult().getChanges().isEmpty() )
+ if ( context.getScmResult() != null && !context.getScmResult().getChanges().isEmpty() )
{
log.info(
"The project was not built because all changes are unknown (maybe local modifications or ignored files not defined in your SCM tool." );
@@ -550,19 +512,24 @@ public class DefaultBuildController
}
// Check changes
- if ( !shouldBuild && ( ( !allChangesUnknown && !context.getScmResult().getChanges().isEmpty() ) ||
+ if ( !shouldBuild && ( ( !allChangesUnknown && context.getScmResult() != null && !context.getScmResult().getChanges().isEmpty() ) ||
project.getExecutorId().equals( ContinuumBuildExecutorConstants.MAVEN_TWO_BUILD_EXECUTOR ) ) )
{
try
{
ContinuumBuildExecutor executor = buildExecutorManager.getBuildExecutor( project.getExecutorId() );
-
- Map<String, Object> actionContext = context.getActionContext();
- List<Project> projectsWithCommonScmRoot = AbstractContinuumAction.getListOfProjectsInGroupWithCommonScmRoot( actionContext );
- String projectScmRootUrl = AbstractContinuumAction.getString( actionContext, AbstractContinuumAction.KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() );
- shouldBuild = executor.shouldBuild( context.getScmResult().getChanges(), project,
- workingDirectoryService.getWorkingDirectory( project, projectScmRootUrl, projectsWithCommonScmRoot ), context.getBuildDefinition() );
+ if ( executor == null )
+ {
+ log.warn( "No continuum build executor found for project " + project.getId() +
+ " with executor '" + project.getExecutorId() + "'" );
+ }
+ else if ( context.getScmResult() != null )
+ {
+ shouldBuild = executor.shouldBuild( context.getScmResult().getChanges(), project,
+ workingDirectoryService.getWorkingDirectory( project ),
+ context.getBuildDefinition() );
+ }
}
catch ( Exception e )
{
@@ -644,7 +611,7 @@ public class DefaultBuildController
try
{
- Project project = projectDao.getProjectWithAllDetails( context.getProject().getId() );
+ Project project = projectDao.getProjectWithDependencies( context.getProject().getId() );
List<ProjectDependency> dependencies = project.getDependencies();
if ( dependencies == null )
@@ -671,10 +638,9 @@ public class DefaultBuildController
if ( dependencyProject != null )
{
- List<BuildResult> buildResults =
- buildResultDao.getBuildResultsInSuccessForProject( dependencyProject.getId(),
- context.getOldBuildResult().getEndTime() );
- if ( buildResults != null && !buildResults.isEmpty() )
+ long nbBuild = buildResultDao.getNbBuildResultsInSuccessForProject( dependencyProject.getId(),
+ context.getOldBuildResult().getEndTime() );
+ if ( nbBuild > 0 )
{
log.debug( "Dependency changed: " + dep.getGroupId() + ":" + dep.getArtifactId() + ":" +
dep.getVersion() );
@@ -694,7 +660,7 @@ public class DefaultBuildController
}
context.setModifiedDependencies( modifiedDependencies );
- context.getActionContext().put( AbstractContinuumAction.KEY_UPDATE_DEPENDENCIES, modifiedDependencies );
+ AbstractContinuumAction.setUpdatedDependencies( context.getActionContext(), modifiedDependencies );
}
catch ( ContinuumStoreException e )
{
@@ -716,7 +682,9 @@ public class DefaultBuildController
build.setState( ContinuumProjectState.ERROR );
- build.setTrigger( context.getTrigger() );
+ build.setTrigger( context.getBuildTrigger().getTrigger() );
+
+ build.setUsername( context.getBuildTrigger().getUsername() );
build.setStartTime( context.getStartTime() );
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/builddefinition/DefaultBuildDefinitionService.java Thu May 6 09:23:13 2010
@@ -195,6 +195,7 @@ public class DefaultBuildDefinitionServi
storedBuildDefinition.setProfile( buildDefinition.getProfile() );
storedBuildDefinition.setSchedule( buildDefinition.getSchedule() );
storedBuildDefinition.setType( buildDefinition.getType() );
+ storedBuildDefinition.setUpdatePolicy( buildDefinition.getUpdatePolicy() );
buildDefinitionDao.storeBuildDefinition( storedBuildDefinition );
}
catch ( ContinuumStoreException e )
@@ -248,6 +249,7 @@ public class DefaultBuildDefinitionServi
cloned.setSchedule( buildDefinition.getSchedule() );
cloned.setType( buildDefinition.getType() );
cloned.setTemplate( buildDefinition.isTemplate() );
+ cloned.setUpdatePolicy( buildDefinition.getUpdatePolicy() );
return cloned;
}
@@ -489,15 +491,20 @@ public class DefaultBuildDefinitionServi
{
try
{
- BuildDefinitionTemplate stored = getBuildDefinitionTemplate( buildDefinitionTemplate.getId() );
- stored.setName( buildDefinitionTemplate.getName() );
- stored.setBuildDefinitions( buildDefinitionTemplate.getBuildDefinitions() );
- return buildDefinitionTemplateDao.updateBuildDefinitionTemplate( stored );
+ if ( !hasDuplicateTemplateName( buildDefinitionTemplate ) )
+ {
+ BuildDefinitionTemplate stored = getBuildDefinitionTemplate( buildDefinitionTemplate.getId() );
+ stored.setName( buildDefinitionTemplate.getName() );
+ stored.setBuildDefinitions( buildDefinitionTemplate.getBuildDefinitions() );
+ return buildDefinitionTemplateDao.updateBuildDefinitionTemplate( stored );
+ }
}
catch ( ContinuumStoreException e )
{
throw new BuildDefinitionServiceException( e.getMessage(), e );
}
+
+ return null;
}
public BuildDefinitionTemplate addBuildDefinitionTemplate( BuildDefinitionTemplate buildDefinitionTemplate )
@@ -505,12 +512,17 @@ public class DefaultBuildDefinitionServi
{
try
{
- return buildDefinitionTemplateDao.addBuildDefinitionTemplate( buildDefinitionTemplate );
+ if ( !hasDuplicateTemplateName( buildDefinitionTemplate ) )
+ {
+ return buildDefinitionTemplateDao.addBuildDefinitionTemplate( buildDefinitionTemplate );
+ }
}
catch ( ContinuumStoreException e )
{
throw new BuildDefinitionServiceException( e.getMessage(), e );
}
+
+ return null;
}
public BuildDefinitionTemplate addBuildDefinitionInTemplate( BuildDefinitionTemplate buildDefinitionTemplate,
@@ -645,4 +657,22 @@ public class DefaultBuildDefinitionServi
throw new BuildDefinitionServiceException( e.getMessage(), e );
}
}
+
+ private boolean hasDuplicateTemplateName( BuildDefinitionTemplate buildDefinitionTemplate )
+ throws BuildDefinitionServiceException
+ {
+ boolean isDuplicate = false;
+ List<BuildDefinitionTemplate> allBuildDefinitionTemplate = this.getAllBuildDefinitionTemplate();
+
+ for ( BuildDefinitionTemplate template : allBuildDefinitionTemplate )
+ {
+ String name = buildDefinitionTemplate.getName();
+ if ( ( template.getId() != buildDefinitionTemplate.getId() ) && ( template.getName().equals( name ) ) )
+ {
+ isDuplicate = true;
+ break;
+ }
+ }
+ return isDuplicate;
+ }
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java Thu May 6 09:23:13 2010
@@ -117,7 +117,7 @@ public class BuildProjectTaskViabilityEv
// If this build is forces, don't remove it
// ----------------------------------------------------------------------
- if ( task.getTrigger() == ContinuumProjectState.TRIGGER_FORCED )
+ if ( task.getBuildTrigger().getTrigger() == ContinuumProjectState.TRIGGER_FORCED )
{
continue;
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AbstractBuildDefinitionContinuumAction.java Thu May 6 09:23:13 2010
@@ -170,6 +170,7 @@ public abstract class AbstractBuildDefin
storedDefinition.setArguments( buildDefinition.getArguments() );
storedDefinition.setBuildFile( buildDefinition.getBuildFile() );
storedDefinition.setBuildFresh( buildDefinition.isBuildFresh() );
+ storedDefinition.setUpdatePolicy( buildDefinition.getUpdatePolicy() );
// special case of this is resolved in the resolveDefaultBuildDefinitionsForProjectGroup method
storedDefinition.setDefaultForProject( buildDefinition.isDefaultForProject() );
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=941625&r1=941624&r2=941625&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 Thu May 6 09:23:13 2010
@@ -20,11 +20,11 @@ package org.apache.maven.continuum.core.
*/
import java.io.File;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.BuildDefinitionTemplate;
import org.apache.maven.continuum.model.project.Project;
@@ -44,78 +44,43 @@ public abstract class AbstractContinuumA
// Keys for the values that can be in the context
// ----------------------------------------------------------------------
- public static final String KEY_PROJECT_ID = "project-id";
+ private static final String KEY_PROJECT_ID = "project-id";
- public static final String KEY_PROJECT = "project";
+ private static final String KEY_PROJECT = "project";
- public static final String KEY_PROJECTS = "projects";
+ private static final String KEY_PROJECTS = "projects";
- public static final String KEY_PROJECTS_BUILD_DEFINITIONS_MAP = "projects-build-definitions";
+ private static final String KEY_PROJECTS_BUILD_DEFINITIONS_MAP = "projects-build-definitions";
- public static final String KEY_BUILD_DEFINITION_TEMPLATE = "build-definition-template";
+ private static final String KEY_BUILD_DEFINITION_TEMPLATE = "build-definition-template";
- public static final String KEY_BUILD_DEFINITION = "build-definition";
+ private static final String KEY_BUILD_DEFINITION = "build-definition";
- public static final String KEY_BUILD_DEFINITION_ID = "build-definition-id";
+ private static final String KEY_BUILD_DEFINITION_ID = "build-definition-id";
- public static final String KEY_UNVALIDATED_PROJECT = "unvalidated-project";
+ private static final String KEY_UNVALIDATED_PROJECT = "unvalidated-project";
- public static final String KEY_PROJECT_GROUP_ID = "project-group-id";
+ private static final String KEY_PROJECT_GROUP_ID = "project-group-id";
- public static final String KEY_UNVALIDATED_PROJECT_GROUP = "unvalidated-project-group";
+ private static final String KEY_UNVALIDATED_PROJECT_GROUP = "unvalidated-project-group";
- public static final String KEY_BUILD_ID = "build-id";
+ private static final String KEY_BUILD_ID = "build-id";
- public static final String KEY_WORKING_DIRECTORY = "working-directory";
+ private static final String KEY_WORKING_DIRECTORY = "working-directory";
- public static final String KEY_WORKING_DIRECTORY_EXISTS = "working-directory-exists";
+ private static final String KEY_UPDATE_DEPENDENCIES = "update-dependencies";
- public static final String KEY_CHECKOUT_SCM_RESULT = "checkout-result";
+ private static final String KEY_BUILD_TRIGGER = "buildTrigger";
- public static final String KEY_UPDATE_SCM_RESULT = "update-result";
+ private static final String KEY_SCM_RESULT = "scmResult";
- public static final String KEY_UPDATE_DEPENDENCIES = "update-dependencies";
+ private static final String KEY_OLD_SCM_RESULT = "old-scmResult";
- public static final String KEY_TRIGGER = "trigger";
+ private static final String KEY_PROJECT_SCM_ROOT = "projectScmRoot";
- public static final String KEY_FIRST_RUN = "first-run";
+ private static final String KEY_OLD_BUILD_ID = "old-buildResult-id";
- public static final String KEY_PROJECT_RELATIVE_PATH = "project-relative-path";
-
- public static final String KEY_SCM_USE_CREDENTIALS_CACHE = "useCredentialsCache";
-
- public static final String KEY_SCM_USERNAME = "scmUserName";
-
- public static final String KEY_SCM_PASSWORD = "scmUserPassword";
-
- public static final String KEY_SCM_RESULT = "scmResult";
-
- public static final String KEY_OLD_SCM_RESULT = "old-scmResult";
-
- public static final String KEY_PROJECT_SCM_ROOT = "projectScmRoot";
-
- /**
- * SCM root url. Used in these actions add-project-to-checkout-queue, checkout-project, clean-working-directory,
- * create-projects-from-metadata, update-project-from-working-directory,
- * update-working-directory-from-scm
- */
- public static final String KEY_PROJECT_SCM_ROOT_URL = "projectScmRootUrl";
-
- public static final String KEY_OLD_BUILD_ID = "old-buildResult-id";
-
- public static final String KEY_CANCELLED = "cancelled";
-
- public static final String KEY_SCM_RESULT_MAP = "scm-result-map";
-
- /**
- * Metadata url for adding projects.
- */
- public static final String KEY_URL = "url";
-
- /**
- * List of projects in a project group with a common scm root url.
- */
- public static final String KEY_PROJECTS_IN_GROUP_WITH_COMMON_SCM_ROOT = "projects-in-group-with-common-scm-root";
+ private static final String KEY_SCM_RESULT_MAP = "scm-result-map";
// ----------------------------------------------------------------------
//
@@ -126,39 +91,90 @@ public abstract class AbstractContinuumA
return getInteger( context, KEY_PROJECT_ID );
}
+ public static void setProjectId( Map<String, Object> context, int projectId )
+ {
+ context.put( KEY_PROJECT_ID, projectId );
+ }
+
public static Project getProject( Map<String, Object> context )
{
return (Project) getObject( context, KEY_PROJECT );
}
+ public static Project getProject( Map<String, Object> context, Project defaultValue )
+ {
+ return (Project) getObject( context, KEY_PROJECT, defaultValue );
+ }
+
+ public static void setProject( Map<String, Object> context, Project p )
+ {
+ context.put( KEY_PROJECT, p );
+ }
+
public static int getProjectGroupId( Map<String, Object> context )
{
return getInteger( context, KEY_PROJECT_GROUP_ID );
}
+ public static void setProjectGroupId( Map<String, Object> context, int projectGroupId )
+ {
+ context.put( KEY_PROJECT_GROUP_ID, projectGroupId );
+ }
+
public static BuildDefinitionTemplate getBuildDefinitionTemplate( Map<String, Object> context )
{
return (BuildDefinitionTemplate) getObject( context, KEY_BUILD_DEFINITION_TEMPLATE, null );
}
+ public static void setBuildDefinitionTemplate( Map<String, Object> context, BuildDefinitionTemplate bdt )
+ {
+ context.put( KEY_BUILD_DEFINITION_TEMPLATE, bdt );
+ }
+
public static BuildDefinition getBuildDefinition( Map<String, Object> context )
{
return (BuildDefinition) getObject( context, KEY_BUILD_DEFINITION, null );
}
+ public static void setBuildDefinition( Map<String, Object> context, BuildDefinition bd )
+ {
+ context.put( KEY_BUILD_DEFINITION, bd );
+ }
+
public static int getBuildDefinitionId( Map<String, Object> context )
{
return getInteger( context, KEY_BUILD_DEFINITION_ID );
}
+ public static void setBuildDefinitionId( Map<String, Object> context, int buildDefintionId )
+ {
+ context.put( KEY_BUILD_DEFINITION_ID, buildDefintionId );
+ }
+
public static String getBuildId( Map<String, Object> context )
{
return getString( context, KEY_BUILD_ID );
}
- public static int getTrigger( Map<String, Object> context )
+ public static String getBuildId( Map<String, Object> context, String defaultValue )
+ {
+ return getString( context, KEY_BUILD_ID, defaultValue );
+ }
+
+ public static void setBuildId( Map<String, Object> context, String buildId )
+ {
+ context.put( KEY_BUILD_ID, buildId );
+ }
+
+ public static BuildTrigger getBuildTrigger( Map<String, Object> context )
{
- return getInteger( context, KEY_TRIGGER );
+ BuildTrigger defaultValue = new BuildTrigger( 0, "" );
+ return (BuildTrigger) getObject( context, KEY_BUILD_TRIGGER, defaultValue );
+ }
+
+ public static void setBuildTrigger( Map<String, Object> context, BuildTrigger buildTrigger )
+ {
+ context.put( KEY_BUILD_TRIGGER, buildTrigger );
}
public static Project getUnvalidatedProject( Map<String, Object> context )
@@ -166,29 +182,29 @@ public abstract class AbstractContinuumA
return (Project) getObject( context, KEY_UNVALIDATED_PROJECT );
}
- public static ProjectGroup getUnvalidatedProjectGroup( Map<String, Object> context )
+ public static void setUnvalidatedProject( Map<String, Object> context, Project p )
{
- return (ProjectGroup) getObject( context, KEY_UNVALIDATED_PROJECT_GROUP );
+ context.put( KEY_UNVALIDATED_PROJECT, p );
}
- public static File getWorkingDirectory( Map<String, Object> context )
+ public static ProjectGroup getUnvalidatedProjectGroup( Map<String, Object> context )
{
- return new File( getString( context, KEY_WORKING_DIRECTORY ) );
+ return (ProjectGroup) getObject( context, KEY_UNVALIDATED_PROJECT_GROUP );
}
- public static ScmResult getCheckoutResult( Map<String, Object> context, Object defaultValue )
+ public static void setUnvalidatedProjectGroup( Map<String, Object> context, ProjectGroup pg )
{
- return (ScmResult) getObject( context, KEY_CHECKOUT_SCM_RESULT, defaultValue );
+ context.put( KEY_UNVALIDATED_PROJECT_GROUP, pg );
}
- public static ScmResult getUpdateScmResult( Map<String, Object> context )
+ public static File getWorkingDirectory( Map<String, Object> context )
{
- return getUpdateScmResult( context, null );
+ return new File( getString( context, KEY_WORKING_DIRECTORY ) );
}
- public static ScmResult getUpdateScmResult( Map<String, Object> context, ScmResult defaultValue )
+ public static void setWorkingDirectory( Map<String, Object> context, String workingDirectory )
{
- return (ScmResult) getObject( context, KEY_UPDATE_SCM_RESULT, defaultValue );
+ context.put( KEY_WORKING_DIRECTORY, workingDirectory );
}
public static List<ProjectDependency> getUpdatedDependencies( Map<String, Object> context )
@@ -202,6 +218,11 @@ public abstract class AbstractContinuumA
return (List<ProjectDependency>) getObject( context, KEY_UPDATE_DEPENDENCIES, defaultValue );
}
+ public static void setUpdatedDependencies( Map<String, Object> context, List<ProjectDependency> dependencies )
+ {
+ context.put( KEY_UPDATE_DEPENDENCIES, dependencies );
+ }
+
public static ScmResult getScmResult( Map<String, Object> context )
{
return getScmResult( context, null );
@@ -212,6 +233,11 @@ public abstract class AbstractContinuumA
return (ScmResult) getObject( context, KEY_SCM_RESULT, defaultValue );
}
+ public static void setScmResult( Map<String, Object> context, ScmResult scmResult )
+ {
+ context.put( KEY_SCM_RESULT, scmResult );
+ }
+
public static ScmResult getOldScmResult( Map<String, Object> context )
{
return getOldScmResult( context, null );
@@ -222,47 +248,72 @@ public abstract class AbstractContinuumA
return (ScmResult) getObject( context, KEY_OLD_SCM_RESULT, defaultValue );
}
+ public static void setOldScmResult( Map<String, Object> context, ScmResult oldScmResult )
+ {
+ context.put( KEY_OLD_SCM_RESULT, oldScmResult );
+ }
+
public static ProjectScmRoot getProjectScmRoot( Map<String, Object> context )
{
return (ProjectScmRoot) getObject( context, KEY_PROJECT_SCM_ROOT );
}
+ public static void setProjectScmRoot( Map<String, Object> context, ProjectScmRoot projectScmRoot )
+ {
+ context.put( KEY_PROJECT_SCM_ROOT, projectScmRoot );
+ }
+
public static int getOldBuildId( Map<String, Object> context )
{
return getInteger( context, KEY_OLD_BUILD_ID );
}
+ public static void setOldBuildId( Map<String, Object> context, int oldBuildId )
+ {
+ context.put( KEY_OLD_BUILD_ID, oldBuildId );
+ }
+
public static List<Project> getListOfProjects( Map<String, Object> context )
{
return (List<Project>) getObject( context, KEY_PROJECTS );
}
+ public static void setListOfProjects( Map<String, Object> context, List<Project> projects )
+ {
+ context.put( KEY_PROJECTS, projects );
+ }
+
public static Map<Integer, BuildDefinition> getProjectsBuildDefinitionsMap( Map<String, Object> context )
{
return (Map<Integer, BuildDefinition>) getObject( context, KEY_PROJECTS_BUILD_DEFINITIONS_MAP );
}
+ public static void setProjectsBuildDefinitionsMap( Map<String, Object> context,
+ Map<Integer, BuildDefinition> projectsBuildDefinitionsMap )
+ {
+ context.put( KEY_PROJECTS_BUILD_DEFINITIONS_MAP, projectsBuildDefinitionsMap );
+ }
+
public static Map<Integer, ScmResult> getScmResultMap( Map<String, Object> context )
{
return (Map<Integer, ScmResult>) getObject( context, KEY_SCM_RESULT_MAP );
}
-
- public static List<Project> getListOfProjectsInGroupWithCommonScmRoot( Map<String, Object> context )
+
+ public static void setScmResultMap( Map<String, Object> context, Map<Integer, ScmResult> scmResultMap )
{
- return (List<Project>) getObject( context, KEY_PROJECTS_IN_GROUP_WITH_COMMON_SCM_ROOT, new ArrayList<Integer>() );
+ context.put( KEY_SCM_RESULT_MAP, scmResultMap );
}
-
-
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
- public static String getString( Map<String, Object> context, String key )
+ protected static String getString( Map<String, Object> context, String key )
{
return (String) getObject( context, key );
}
- public static String getString( Map<String, Object> context, String key, String defaultValue )
+ protected 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/AddAssignableRolesAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddAssignableRolesAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddAssignableRolesAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddAssignableRolesAction.java Thu May 6 09:23:13 2010
@@ -19,6 +19,8 @@ package org.apache.maven.continuum.core.
* under the License.
*/
+import java.util.Map;
+
import org.apache.continuum.dao.ProjectGroupDao;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.ProjectGroup;
@@ -26,8 +28,6 @@ import org.apache.maven.continuum.store.
import org.codehaus.plexus.redback.role.RoleManager;
import org.codehaus.plexus.redback.role.RoleManagerException;
-import java.util.Map;
-
/**
* AddAssignableRolesAction:
*
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectAction.java Thu May 6 09:23:13 2010
@@ -39,13 +39,13 @@ public class AddBuildDefinitionToProject
*/
private ProjectDao projectDao;
- public void execute( Map map )
+ public void execute( Map context )
throws Exception
{
- int projectId = getProjectId( map );
+ int projectId = getProjectId( context );
Project project = projectDao.getProjectWithAllDetails( projectId );
- BuildDefinitionTemplate buildDefinitionTemplate = getBuildDefinitionTemplate( map );
+ BuildDefinitionTemplate buildDefinitionTemplate = getBuildDefinitionTemplate( context );
if ( buildDefinitionTemplate != null )
{
@@ -55,23 +55,23 @@ public class AddBuildDefinitionToProject
project.addBuildDefinition( buildDefinition );
- projectDao.updateProject( project );
if ( buildDefinition.isDefaultForProject() )
{
- map.put( AbstractContinuumAction.KEY_BUILD_DEFINITION, buildDefinition );
+ AbstractContinuumAction.setBuildDefinition( context, buildDefinition );
}
}
}
else
{
- BuildDefinition buildDefinition = getBuildDefinition( map );
+ BuildDefinition buildDefinition = getBuildDefinition( context );
resolveDefaultBuildDefinitionsForProject( buildDefinition, project );
project.addBuildDefinition( buildDefinition );
- projectDao.updateProject( project );
- map.put( AbstractContinuumAction.KEY_BUILD_DEFINITION, buildDefinition );
+ AbstractContinuumAction.setBuildDefinition( context, buildDefinition );
}
+ // Save the project
+ projectDao.updateProject( project );
}
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectGroupAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectGroupAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectGroupAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddBuildDefinitionToProjectGroupAction.java Thu May 6 09:23:13 2010
@@ -44,12 +44,12 @@ public class AddBuildDefinitionToProject
private ProjectGroupDao projectGroupDao;
- public void execute( Map map )
+ public void execute( Map context )
throws Exception
{
- int projectGroupId = getProjectGroupId( map );
+ int projectGroupId = getProjectGroupId( context );
ProjectGroup projectGroup = projectGroupDao.getProjectGroupWithBuildDetailsByProjectGroupId( projectGroupId );
- BuildDefinitionTemplate buildDefinitionTemplate = getBuildDefinitionTemplate( map );
+ BuildDefinitionTemplate buildDefinitionTemplate = getBuildDefinitionTemplate( context );
if ( buildDefinitionTemplate != null )
{
for ( BuildDefinition buildDefinition : (List<BuildDefinition>) buildDefinitionTemplate.getBuildDefinitions() )
@@ -57,20 +57,20 @@ public class AddBuildDefinitionToProject
resolveDefaultBuildDefinitionsForProjectGroup( buildDefinition, projectGroup );
projectGroup.addBuildDefinition( buildDefinition );
-
- projectGroupDao.updateProjectGroup( projectGroup );
}
}
else
{
- BuildDefinition buildDefinition = getBuildDefinition( map );
+ BuildDefinition buildDefinition = getBuildDefinition( context );
resolveDefaultBuildDefinitionsForProjectGroup( buildDefinition, projectGroup );
projectGroup.addBuildDefinition( buildDefinition );
-
- projectGroupDao.updateProjectGroup( projectGroup );
}
+
+ // Save the project group
+ projectGroupDao.updateProjectGroup( projectGroup );
+
//map.put( AbstractContinuumAction.KEY_BUILD_DEFINITION, buildDefinition );
}
}
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=941625&r1=941624&r2=941625&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 Thu May 6 09:23:13 2010
@@ -21,6 +21,7 @@ package org.apache.maven.continuum.core.
import java.util.Map;
+import org.apache.commons.lang.StringUtils;
import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.continuum.dao.ProjectDao;
import org.apache.maven.continuum.model.project.BuildDefinition;
@@ -55,18 +56,28 @@ public class AddProjectToCheckOutQueueAc
public void execute( Map context )
throws Exception
{
- Project project = (Project) getObject( context, KEY_PROJECT, null );
+ Project project = getProject( context, null );
if ( project == null )
{
project = projectDao.getProject( getProjectId( context ) );
}
- String scmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, null );
+ String scmUsername = project.getScmUsername();
+ String scmPassword = project.getScmPassword();
+
+ if( scmUsername == null || StringUtils.isEmpty( scmUsername ) )
+ {
+ scmUsername = CheckoutProjectContinuumAction.getScmUsername( context, null );
+ }
+
+ if( scmPassword == null || StringUtils.isEmpty( scmPassword ) )
+ {
+ scmPassword = CheckoutProjectContinuumAction.getScmPassword( context, null );
+ }
BuildDefinition defaultBuildDefinition = getBuildDefinition( context );
parallelBuildsManager.checkoutProject( project.getId(), project.getName(),
workingDirectoryService.getWorkingDirectory( project ),
- scmRootUrl, project.getScmUsername(),
- project.getScmPassword(), defaultBuildDefinition, getListOfProjectsInGroupWithCommonScmRoot( context ) );
+ scmUsername, scmPassword, defaultBuildDefinition );
}
}
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckWorkingDirectoryAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckWorkingDirectoryAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckWorkingDirectoryAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckWorkingDirectoryAction.java Thu May 6 09:23:13 2010
@@ -20,10 +20,10 @@ package org.apache.maven.continuum.core.
*/
import java.io.File;
-import java.util.List;
import java.util.Map;
import org.apache.continuum.dao.ProjectDao;
+import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.utils.WorkingDirectoryService;
@@ -35,7 +35,9 @@ import org.apache.maven.continuum.utils.
*/
public class CheckWorkingDirectoryAction
extends AbstractContinuumAction
-{
+{
+ private static final String KEY_WORKING_DIRECTORY_EXISTS = "working-directory-exists";
+
/**
* @plexus.requirement
*/
@@ -50,22 +52,36 @@ public class CheckWorkingDirectoryAction
throws Exception
{
Project project = projectDao.getProject( getProjectId( context ) );
- List<Project> projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context );
- String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() );
-
- File workingDirectory =
- workingDirectoryService.getWorkingDirectory( project, projectScmRootUrl,
- projectsWithCommonScmRoot );
-
+
+ File workingDirectory = workingDirectoryService.getWorkingDirectory( project );
+
if ( !workingDirectory.exists() )
{
- context.put( KEY_WORKING_DIRECTORY_EXISTS, Boolean.FALSE );
+ setWorkingDirectoryExist( context, false );
return;
}
File[] files = workingDirectory.listFiles();
- context.put( KEY_WORKING_DIRECTORY_EXISTS, files.length > 0 );
+ if ( files == null )
+ {
+ //workingDirectory isn't a directory but a file. Not possible in theory.
+ String msg = workingDirectory.getAbsolutePath() + " isn't a directory but a file.";
+ getLogger().error( msg );
+ throw new ContinuumException( msg );
+ }
+
+ setWorkingDirectoryExist( context, files.length > 0 );
+ }
+
+ public static boolean isWorkingDirectoryExist( Map<String, Object> context )
+ {
+ return getBoolean( context, KEY_WORKING_DIRECTORY_EXISTS );
+ }
+
+ private static void setWorkingDirectoryExist( Map<String, Object> context, boolean exists )
+ {
+ context.put( KEY_WORKING_DIRECTORY_EXISTS, exists );
}
}
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=941625&r1=941624&r2=941625&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 Thu May 6 09:23:13 2010
@@ -49,6 +49,14 @@ import org.codehaus.plexus.util.StringUt
public class CheckoutProjectContinuumAction
extends AbstractContinuumAction
{
+ private static final String KEY_SCM_USERNAME = "scmUserName";
+
+ private static final String KEY_SCM_PASSWORD = "scmUserPassword";
+
+ private static final String KEY_CHECKOUT_SCM_RESULT = "checkout-result";
+
+ private static final String KEY_PROJECT_RELATIVE_PATH = "project-relative-path";
+
/**
* @plexus.requirement
*/
@@ -71,7 +79,7 @@ public class CheckoutProjectContinuumAct
public void execute( Map context )
throws ContinuumStoreException
- {
+ {
Project project = projectDao.getProject( getProject( context ).getId() );
BuildDefinition buildDefinition = getBuildDefinition( context );
@@ -81,6 +89,8 @@ public class CheckoutProjectContinuumAct
buildDefinition = buildDefinitionDao.getBuildDefinition( buildDefinition.getId() );
}
+ int originalState = project.getState();
+
project.setState( ContinuumProjectState.CHECKING_OUT );
projectDao.updateProject( project );
@@ -93,16 +103,12 @@ public class CheckoutProjectContinuumAct
ScmResult result;
- List<Project> projectsWithSimilarScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context );
-
try
{
- String scmUserName = getString( context, KEY_SCM_USERNAME, project.getScmUsername() );
- String scmPassword = getString( context, KEY_SCM_PASSWORD, project.getScmPassword() );
- String scmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() );
-
+ String scmUserName = getScmUsername( context, project.getScmUsername() );
+ String scmPassword = getScmPassword( context, project.getScmPassword() );
ContinuumScmConfiguration config =
- createScmConfiguration( project, workingDirectory, scmUserName, scmPassword, scmRootUrl );
+ createScmConfiguration( project, workingDirectory, scmUserName, scmPassword );
String tag = config.getTag();
getLogger().info(
@@ -110,13 +116,11 @@ public class CheckoutProjectContinuumAct
workingDirectory + "'" + ( tag != null ? " with branch/tag " + tag + "." : "." ) );
CheckOutScmResult checkoutResult = scm.checkout( config );
-
if ( StringUtils.isNotEmpty( checkoutResult.getRelativePathProjectDirectory() ) )
{
- context.put( AbstractContinuumAction.KEY_PROJECT_RELATIVE_PATH,
- checkoutResult.getRelativePathProjectDirectory() );
+ context.put( KEY_PROJECT_RELATIVE_PATH, checkoutResult.getRelativePathProjectDirectory() );
}
-
+
if ( !checkoutResult.isSuccess() )
{
// TODO: is it more appropriate to return this in the converted result so that it can be presented to
@@ -182,41 +186,37 @@ public class CheckoutProjectContinuumAct
}
finally
{
- String relativePath = (String) getObject( context, KEY_PROJECT_RELATIVE_PATH, "" );
+ String relativePath = getString( context, KEY_PROJECT_RELATIVE_PATH, "" );
if ( StringUtils.isNotEmpty( relativePath ) )
{
project.setRelativePath( relativePath );
}
project = projectDao.getProject( project.getId() );
-
- project.setState( ContinuumProjectState.CHECKEDOUT );
- 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 : projectsWithSimilarScmRoot )
+ if ( originalState == ContinuumProjectState.NEW )
{
- projectWithCommonScmRoot = projectDao.getProject( projectWithCommonScmRoot.getId() );
- if( projectWithCommonScmRoot != null && projectWithCommonScmRoot.getId() != project.getId() )
- {
- projectWithCommonScmRoot.setState( ContinuumProjectState.CHECKEDOUT );
- projectDao.updateProject( projectWithCommonScmRoot );
- }
+ project.setState( ContinuumProjectState.CHECKEDOUT );
+ }
+ else
+ {
+ project.setState( originalState );
}
+
+ projectDao.updateProject( project );
+
notifier.checkoutComplete( project, buildDefinition );
}
- context.put( KEY_CHECKOUT_SCM_RESULT, result );
- context.put( KEY_PROJECT, project );
+ setCheckoutResult( context, result );
+ setProject( context, project );
}
private ContinuumScmConfiguration createScmConfiguration( Project project, File workingDirectory,
- String scmUserName, String scmPassword, String scmRootUrl )
+ String scmUserName, String scmPassword )
{
ContinuumScmConfiguration config = new ContinuumScmConfiguration();
- config.setUrl( scmRootUrl );
+ config.setUrl( project.getScmUrl() );
config.setUsername( scmUserName );
config.setPassword( scmPassword );
config.setUseCredentialsCache( project.isScmUseCache() );
@@ -282,4 +282,34 @@ public class CheckoutProjectContinuumAct
}
return message.toString();
}
+
+ public static String getScmUsername( Map<String, Object> context, String defaultValue )
+ {
+ return getString( context, KEY_SCM_USERNAME, defaultValue );
+ }
+
+ public static void setScmUsername( Map<String, Object> context, String scmUsername )
+ {
+ context.put( KEY_SCM_USERNAME, scmUsername );
+ }
+
+ public static String getScmPassword( Map<String, Object> context, String defaultValue )
+ {
+ return getString( context, KEY_SCM_PASSWORD, defaultValue );
+ }
+
+ public static void setScmPassword( Map<String, Object> context, String scmPassword )
+ {
+ context.put( KEY_SCM_PASSWORD, scmPassword );
+ }
+
+ public static ScmResult getCheckoutResult( Map<String, Object> context, Object defaultValue )
+ {
+ return (ScmResult) getObject( context, KEY_CHECKOUT_SCM_RESULT, defaultValue );
+ }
+
+ public static void setCheckoutResult( Map<String, Object> context, ScmResult checkoutResult )
+ {
+ context.put( KEY_CHECKOUT_SCM_RESULT, checkoutResult );
+ }
}
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=941625&r1=941624&r2=941625&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 Thu May 6 09:23:13 2010
@@ -26,7 +26,6 @@ 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;
/**
@@ -52,12 +51,8 @@ public class CleanWorkingDirectoryAction
throws Exception
{
Project project = projectDao.getProject( getProjectId( context ) );
- List<Project> projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context );
- String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() );
- File workingDirectory =
- workingDirectoryService.getWorkingDirectory( project, projectScmRootUrl,
- projectsWithCommonScmRoot );
+ File workingDirectory = workingDirectoryService.getWorkingDirectory( project );
if ( workingDirectory.exists() )
{
Modified: continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java?rev=941625&r1=941624&r2=941625&view=diff
==============================================================================
--- continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java (original)
+++ continuum/branches/continuum-flat-multi-module/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java Thu May 6 09:23:13 2010
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.continuum.dao.ProjectDao;
+import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
import org.apache.maven.continuum.execution.manager.BuildExecutorManager;
import org.apache.maven.continuum.model.project.BuildDefinition;
@@ -50,28 +51,28 @@ public class CreateBuildProjectTaskActio
* @plexus.requirement
*/
private ProjectDao projectDao;
-
+
/**
* @plexus.requirement role-hint="parallel"
*/
private BuildsManager parallelBuildsManager;
-
+
public synchronized void execute( Map context )
throws Exception
{
List<Project> projects = AbstractContinuumAction.getListOfProjects( context );
Map<Integer, BuildDefinition> projectsBuildDefinitionsMap =
AbstractContinuumAction.getProjectsBuildDefinitionsMap( context );
- Map<Integer, ScmResult> scmResultMap =
- AbstractContinuumAction.getScmResultMap( context );
+ Map<Integer, ScmResult> scmResultMap = AbstractContinuumAction.getScmResultMap( context );
List<Project> projectsToBeBuilt = new ArrayList<Project>();
- int trigger = AbstractContinuumAction.getTrigger( context );
-
+ BuildTrigger buildTrigger = AbstractContinuumAction.getBuildTrigger( context );
+ int projectGroupId = AbstractContinuumAction.getProjectGroupId( context );
+
// update state of each project first
- for( Project project : projects )
- {
+ for ( Project project : projects )
+ {
BuildDefinition buildDefinition = projectsBuildDefinitionsMap.get( project.getId() );
-
+
if ( parallelBuildsManager.isInAnyBuildQueue( project.getId(), buildDefinition.getId() ) )
{
return;
@@ -81,12 +82,13 @@ public class CreateBuildProjectTaskActio
{
parallelBuildsManager.removeProjectFromCheckoutQueue( project.getId() );
}
-
+
try
{
if ( project.getState() != ContinuumProjectState.NEW &&
project.getState() != ContinuumProjectState.CHECKEDOUT &&
- project.getState() != ContinuumProjectState.OK && project.getState() != ContinuumProjectState.FAILED &&
+ project.getState() != ContinuumProjectState.OK &&
+ project.getState() != ContinuumProjectState.FAILED &&
project.getState() != ContinuumProjectState.ERROR )
{
ContinuumBuildExecutor executor = executorManager.getBuildExecutor( project.getExecutorId() );
@@ -100,25 +102,16 @@ public class CreateBuildProjectTaskActio
}
else
{
- project.setOldState( project.getState() );
-
project.setState( ContinuumProjectState.ERROR );
-
- projectDao.updateProject( project );
-
- project = projectDao.getProject( project.getId() );
}
}
- else
- {
- project.setOldState( project.getState() );
+ project.setOldState( project.getState() );
- projectDao.updateProject( project );
+ projectDao.updateProject( project );
- project = projectDao.getProject( project.getId() );
- }
+ project = projectDao.getProject( project.getId() );
- projectsToBeBuilt.add( project );
+ projectsToBeBuilt.add( project );
}
catch ( ContinuumStoreException e )
{
@@ -126,7 +119,8 @@ public class CreateBuildProjectTaskActio
//throw new ContinuumException( "Error while creating build object.", e );
}
}
-
- parallelBuildsManager.buildProjects( projectsToBeBuilt, projectsBuildDefinitionsMap, trigger, scmResultMap );
+
+ parallelBuildsManager.buildProjects( projectsToBeBuilt, projectsBuildDefinitionsMap, buildTrigger, scmResultMap,
+ projectGroupId );
}
}
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=941625&r1=941624&r2=941625&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 Thu May 6 09:23:13 2010
@@ -61,6 +61,14 @@ import org.codehaus.plexus.util.xml.pull
public class CreateProjectsFromMetadataAction
extends AbstractContinuumAction
{
+ private static final String KEY_URL = "url";
+
+ private static final String KEY_PROJECT_BUILDER_ID = "builderId";
+
+ private static final String KEY_PROJECT_BUILDING_RESULT = "projectBuildingResult";
+
+ private static final String KEY_LOAD_RECURSIVE_PROJECTS = "loadRecursiveProjects";
+
/**
* @plexus.requirement
*/
@@ -70,30 +78,20 @@ public class CreateProjectsFromMetadataA
* @plexus.requirement
*/
private MavenSettingsBuilder mavenSettingsBuilder;
-
+
/**
* @plexus.requirement role-hint="continuumUrl"
*/
- private ContinuumUrlValidator urlValidator;
-
- 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";
+ private ContinuumUrlValidator urlValidator;
public void execute( Map context )
throws ContinuumException, ContinuumProjectBuilderManagerException, ContinuumProjectBuilderException
{
- String projectBuilderId = getString( context, KEY_PROJECT_BUILDER_ID );
+ String projectBuilderId = getProjectBuilderId( context );
- boolean loadRecursiveProjects = getBoolean( context, KEY_LOAD_RECURSIVE_PROJECTS );
-
- boolean checkoutProjectsInSingleDirectory = getBoolean( context, KEY_CHECKOUT_PROJECTS_IN_SINGLE_DIRECTORY );
+ boolean loadRecursiveProjects = isLoadRecursiveProject( context );
- String curl = getString( context, KEY_URL );
+ String curl = getUrl( context );
URL url;
@@ -107,13 +105,13 @@ public class CreateProjectsFromMetadataA
if ( buildDefinitionTemplate == null )
{
buildDefinitionTemplate = projectBuilder.getDefaultBuildDefinitionTemplate();
- }
+ }
if ( !curl.startsWith( "http" ) )
{
url = new URL( curl );
result = projectBuilder.buildProjectsFromMetadata( url, null, null, loadRecursiveProjects,
- buildDefinitionTemplate, checkoutProjectsInSingleDirectory );
+ buildDefinitionTemplate );
}
else
@@ -152,7 +150,7 @@ public class CreateProjectsFromMetadataA
{
result = projectBuilder.buildProjectsFromMetadata( url, username, password, loadRecursiveProjects,
- buildDefinitionTemplate, checkoutProjectsInSingleDirectory );
+ buildDefinitionTemplate );
}
else
@@ -162,11 +160,11 @@ public class CreateProjectsFromMetadataA
result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL );
}
}
-
+
if ( result.getProjects() != null )
{
String scmRootUrl = getScmRootUrl( result.getProjects() );
-
+
if ( scmRootUrl == null || scmRootUrl.equals( "" ) )
{
if ( curl.indexOf( "pom.xml" ) > 0 )
@@ -178,8 +176,8 @@ public class CreateProjectsFromMetadataA
scmRootUrl = curl;
}
}
-
- context.put( KEY_PROJECT_SCM_ROOT_URL, scmRootUrl );
+
+ setUrl( context, scmRootUrl );
}
}
catch ( MalformedURLException e )
@@ -195,7 +193,7 @@ public class CreateProjectsFromMetadataA
result.addError( ContinuumProjectBuildingResult.ERROR_MALFORMED_URL );
}
- context.put( KEY_PROJECT_BUILDING_RESULT, result );
+ setProjectBuildingResult( context, result );
}
private String hidePasswordInUrl( String url )
@@ -235,14 +233,14 @@ public class CreateProjectsFromMetadataA
private String getScmRootUrl( List<Project> projects )
{
String scmRootUrl = "";
-
+
for ( Project project : projects )
{
String scmUrl = project.getScmUrl();
-
+
scmRootUrl = getCommonPath( scmUrl, scmRootUrl );
}
-
+
return scmRootUrl;
}
@@ -255,7 +253,19 @@ public class CreateProjectsFromMetadataA
else
{
int indexDiff = StringUtils.differenceAt( path1, path2 );
- return path1.substring( 0, indexDiff );
+ String commonPath = path1.substring( 0, indexDiff );
+
+ if ( commonPath.lastIndexOf( '/' ) != commonPath.length() - 1 &&
+ !( path1.contains( new String( commonPath + "/" ) ) ||
+ path2.contains( new String( commonPath + "/" ) ) ) )
+ {
+ while ( commonPath.lastIndexOf( '/' ) != commonPath.length() - 1 )
+ {
+ commonPath = commonPath.substring( 0, commonPath.length() - 1 );
+ }
+ }
+
+ return commonPath;
}
}
@@ -288,4 +298,44 @@ public class CreateProjectsFromMetadataA
{
this.urlValidator = urlValidator;
}
+
+ public static ContinuumProjectBuildingResult getProjectBuildingResult( Map<String, Object> context )
+ {
+ return (ContinuumProjectBuildingResult) getObject( context, KEY_PROJECT_BUILDING_RESULT );
+ }
+
+ private static void setProjectBuildingResult( Map<String, Object> context, ContinuumProjectBuildingResult result )
+ {
+ context.put( KEY_PROJECT_BUILDING_RESULT, result );
+ }
+
+ public static String getUrl( Map<String, Object> context )
+ {
+ return getString( context, KEY_URL );
+ }
+
+ public static void setUrl( Map<String, Object> context, String url )
+ {
+ context.put( KEY_URL, url );
+ }
+
+ public static String getProjectBuilderId( Map<String, Object> context )
+ {
+ return getString( context, KEY_PROJECT_BUILDER_ID );
+ }
+
+ public static void setProjectBuilderId( Map<String, Object> context, String projectBuilderId )
+ {
+ context.put( KEY_PROJECT_BUILDER_ID, projectBuilderId );
+ }
+
+ public static boolean isLoadRecursiveProject( Map<String, Object> context )
+ {
+ return getBoolean( context, KEY_LOAD_RECURSIVE_PROJECTS );
+ }
+
+ public static void setLoadRecursiveProject( Map<String, Object> 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=941625&r1=941624&r2=941625&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 Thu May 6 09:23:13 2010
@@ -19,6 +19,10 @@ package org.apache.maven.continuum.core.
* under the License.
*/
+import java.io.File;
+import java.util.List;
+import java.util.Map;
+
import org.apache.continuum.model.repository.LocalRepository;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.deployer.ArtifactDeployer;
@@ -35,11 +39,6 @@ import org.apache.maven.continuum.model.
import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.utils.WorkingDirectoryService;
-import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
/**
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @version $Id$
@@ -103,19 +102,16 @@ public class DeployArtifactContinuumActi
{
BuildDefinition buildDefinition = getBuildDefinition( context );
- String projectScmRootUrl = getString( context, KEY_PROJECT_SCM_ROOT_URL, project.getScmUrl() );
- List<Project> projectsWithCommonScmRoot = getListOfProjectsInGroupWithCommonScmRoot( context );
-
List<Artifact> artifacts = buildExecutor.getDeployableArtifacts( project,
- workingDirectoryService.getWorkingDirectory(
- project, projectScmRootUrl, projectsWithCommonScmRoot ), buildDefinition );
+ workingDirectoryService.getWorkingDirectory(
+ project ), buildDefinition );
LocalRepository repository = project.getProjectGroup().getLocalRepository();
-
+
builderHelper.setLocalRepository( repository );
-
+
ArtifactRepository localRepository = builderHelper.getLocalRepository();
-
+
for ( Artifact artifact : artifacts )
{
ArtifactRepositoryLayout repositoryLayout = new DefaultRepositoryLayout();