You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2008/10/27 06:54:11 UTC
svn commit: r708091 - in /continuum/branches/continuum-transient-state:
continuum-api/src/main/java/org/apache/maven/continuum/
continuum-core/src/main/java/org/apache/maven/continuum/
continuum-core/src/main/java/org/apache/maven/continuum/buildcontro...
Author: ctan
Date: Sun Oct 26 22:54:11 2008
New Revision: 708091
URL: http://svn.apache.org/viewvc?rev=708091&view=rev
Log:
- removed scmRootAddress field from project
- created a new action class: "create-build-project-task"
- cleanup codes
Added:
continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java
Modified:
continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTask.java
continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java
continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml
continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
Modified: continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=708091&r1=708090&r2=708091&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Sun Oct 26 22:54:11 2008
@@ -670,6 +670,9 @@
ProjectScmRoot getProjectScmRoot( int projectScmRootId )
throws ContinuumException;
+ ProjectScmRoot getProjectScmRootByProject( int projectId )
+ throws ContinuumException;
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
@@ -682,7 +685,7 @@
int buildDefinitionId )
throws ContinuumException;
- void prepareBuildProjects( Collection<Map<Integer, Integer>> projectsAndBuildDefinitions )
+ void prepareBuildProjects( Collection<Map<Integer, Integer>> projectsAndBuildDefinitions, int trigger )
throws ContinuumException;
//void prepareBuildProjects( Map<Integer, Integer> projectsAndBuildDefinitionsMap )
Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=708091&r1=708090&r2=708091&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Sun Oct 26 22:54:11 2008
@@ -52,13 +52,11 @@
import org.apache.maven.continuum.build.settings.SchedulesActivator;
import org.apache.maven.continuum.builddefinition.BuildDefinitionService;
import org.apache.maven.continuum.builddefinition.BuildDefinitionServiceException;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
import org.apache.maven.continuum.configuration.ConfigurationException;
import org.apache.maven.continuum.configuration.ConfigurationLoadingException;
import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.core.action.AbstractContinuumAction;
import org.apache.maven.continuum.core.action.CreateProjectsFromMetadataAction;
-import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
import org.apache.maven.continuum.execution.ContinuumBuildExecutorConstants;
import org.apache.maven.continuum.execution.manager.BuildExecutorManager;
import org.apache.maven.continuum.initialization.ContinuumInitializationException;
@@ -197,21 +195,6 @@
// ----------------------------------------------------------------------
// Moved from core
// ----------------------------------------------------------------------
-/*
- /**
- * @plexus.requirement role-hint="build-project"
- */
-/* private TaskQueue buildQueue;
-
- /**
- * @plexus.requirement role-hint="check-out-project"
- */
-/* private TaskQueue checkoutQueue;
-
- /**
- * @plexus.requirement role-hint="prepare-build-project"
- */
-// private TaskQueue prepareBuildQueue;
/**
* @plexus.requirement
@@ -570,296 +553,9 @@
}
// ----------------------------------------------------------------------
- // Queues
- // ----------------------------------------------------------------------
-/*
- public List<BuildProjectTask> getProjectsInBuildQueue()
- throws ContinuumException
- {
- try
- {
- return buildQueue.getQueueSnapshot();
- }
- catch ( TaskQueueException e )
- {
- throw new ContinuumException( "Error while getting the building queue.", e );
- }
- }
-
- public boolean isInBuildingQueue( int projectId )
- throws ContinuumException
- {
- return isInBuildingQueue( projectId, -1 );
- }
-
- public boolean isInBuildingQueue( int projectId, int buildDefinitionId )
- throws ContinuumException
- {
- List<BuildProjectTask> queue = getProjectsInBuildQueue();
-
- for ( BuildProjectTask task : queue )
- {
- if ( task != null )
- {
- if ( buildDefinitionId < 0 )
- {
- if ( task.getProjectId() == projectId )
- {
- return true;
- }
- }
- else
- {
- if ( task.getProjectId() == projectId && task.getBuildDefinitionId() == buildDefinitionId )
- {
- return true;
- }
- }
- }
- }
-
- return false;
- }
-
- public boolean isInCheckoutQueue( int projectId )
- throws ContinuumException
- {
- List<CheckOutTask> queue = getCheckOutTasksInQueue();
-
- for ( CheckOutTask task : queue )
- {
- if ( task != null && task.getProjectId() == projectId )
- {
- return true;
- }
- }
-
- return false;
- }
-
- public List<CheckOutTask> getCheckOutTasksInQueue()
- throws ContinuumException
- {
- try
- {
- return checkoutQueue.getQueueSnapshot();
- }
- catch ( TaskQueueException e )
- {
- throw new ContinuumException( "Error while getting the checkout queue.", e );
- }
- }
-
- public TaskQueueExecutor getBuildTaskQueueExecutor()
- throws ContinuumException
- {
- try
- {
- return (TaskQueueExecutor) container.lookup( TaskQueueExecutor.class, "build-project" );
- }
- catch ( ComponentLookupException e )
- {
- throw new ContinuumException( e.getMessage(), e );
- }
- }
-
- public int getCurrentProjectIdBuilding()
- throws ContinuumException
- {
- Task task = getBuildTaskQueueExecutor().getCurrentTask();
- if ( task != null )
- {
- if ( task instanceof BuildProjectTask )
- {
- return ( (BuildProjectTask) task ).getProjectId();
- }
- }
- return -1;
- }
-
- public TaskQueueExecutor getPrepareBuildTaskQueueExecutor()
- throws ContinuumException
- {
- try
- {
- return (TaskQueueExecutor) container.lookup( TaskQueueExecutor.class, "prepare-build-project" );
- }
- catch ( ComponentLookupException e )
- {
- throw new ContinuumException( e.getMessage(), e );
- }
- }
-
- public boolean isProjectInPrepareBuild( int projectId )
- throws ContinuumException
- {
- Task task = getPrepareBuildTaskQueueExecutor().getCurrentTask();
- if ( task != null && task instanceof PrepareBuildProjectsTask )
- {
- Map<Integer, Integer> map = ( (PrepareBuildProjectsTask) task).getProjectsBuildDefinitionsMap();
-
- if ( map.size() > 0 )
- {
- Set<Integer> projectIds = map.keySet();
-
- if ( projectIds.contains( new Integer( projectId ) ) )
- {
- return true;
- }
- }
- }
- return false;
- }
-
- public boolean removeFromBuildingQueue( int projectId, int buildDefinitionId, int trigger, String projectName )
- throws ContinuumException
- {
- BuildDefinition buildDefinition = getBuildDefinition( buildDefinitionId );
- String buildDefinitionLabel = buildDefinition.getDescription();
- if ( StringUtils.isEmpty( buildDefinitionLabel ) )
- {
- buildDefinitionLabel = buildDefinition.getGoals();
- }
- BuildProjectTask buildProjectTask =
- new BuildProjectTask( projectId, buildDefinitionId, trigger, projectName, buildDefinitionLabel );
- return this.buildQueue.remove( buildProjectTask );
- }
-
- public boolean removeProjectsFromBuildingQueue( int[] projectsId )
- throws ContinuumException
- {
- if ( projectsId == null )
- {
- return false;
- }
- if ( projectsId.length < 1 )
- {
- return false;
- }
- List<BuildProjectTask> queue = getProjectsInBuildQueue();
-
- List<BuildProjectTask> tasks = new ArrayList<BuildProjectTask>();
-
- for ( BuildProjectTask task : queue )
- {
- if ( task != null )
- {
- if ( ArrayUtils.contains( projectsId, task.getProjectId() ) )
- {
- tasks.add( task );
- }
- }
- }
-
- for ( BuildProjectTask buildProjectTask : tasks )
- {
- getLogger().info( "cancel build for project " + buildProjectTask.getProjectId() );
- }
- if ( !tasks.isEmpty() )
- {
- return buildQueue.removeAll( tasks );
- }
-
- return false;
- }
-
- public boolean removeProjectsFromCheckoutQueue( int[] projectsId )
- throws ContinuumException
- {
- if ( projectsId == null )
- {
- return false;
- }
- if ( projectsId.length < 1 )
- {
- return false;
- }
- List<CheckOutTask> queue = getCheckOutTasksInQueue();
-
- List<CheckOutTask> tasks = new ArrayList<CheckOutTask>();
-
- for ( CheckOutTask task : queue )
- {
- if ( task != null )
- {
- if ( ArrayUtils.contains( projectsId, task.getProjectId() ) )
- {
- tasks.add( task );
- }
- }
- }
- if ( !tasks.isEmpty() )
- {
- return checkoutQueue.removeAll( tasks );
- }
- return false;
- }
-
- public boolean removeProjectFromBuildingQueue( int projectId )
- throws ContinuumException
- {
- List<BuildProjectTask> queue = getProjectsInBuildQueue();
-
- for ( BuildProjectTask task : queue )
- {
- if ( task != null && task.getProjectId() == projectId )
- {
- return buildQueue.remove( task );
- }
- }
-
- return false;
- }
-
- public void removeProjectsFromBuildingQueueWithHashCodes( int[] hashCodes )
- throws ContinuumException
- {
- List<BuildProjectTask> queue = getProjectsInBuildQueue();
-
- for ( BuildProjectTask task : queue )
- {
- if ( ArrayUtils.contains( hashCodes, task.hashCode() ) )
- {
- buildQueue.remove( task );
- }
- }
- }
-
- public boolean removeProjectFromCheckoutQueue( int projectId )
- throws ContinuumException
- {
- List<CheckOutTask> queue = getCheckOutTasksInQueue();
-
- for ( CheckOutTask task : queue )
- {
- if ( task != null && task.getProjectId() == projectId )
- {
- return checkoutQueue.remove( task );
- }
- }
-
- return false;
- }
-
- public void removeTasksFromCheckoutQueueWithHashCodes( int[] hashCodes )
- throws ContinuumException
- {
- List<CheckOutTask> queue = getCheckOutTasksInQueue();
-
- for ( CheckOutTask task : queue )
- {
- if ( ArrayUtils.contains( hashCodes, task.hashCode() ) )
- {
- checkoutQueue.remove( task );
- }
- }
- }
-*/
- // ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
-
public void removeProject( int projectId )
throws ContinuumException
{
@@ -1006,19 +702,7 @@
Collection<Map<Integer,Integer>> projectsAndBuildDefinitions = getProjectsAndBuildDefinitions( projectsList, null, true );
- prepareBuildProjects( projectsAndBuildDefinitions );
-
- for ( Project project : projectsList )
- {
- for ( Map<Integer, Integer> map : projectsAndBuildDefinitions )
- {
- if ( map.get( project.getId() ) != null )
- {
- buildProject( project, map.get( project.getId() ), trigger );
- break;
- }
- }
- }
+ prepareBuildProjects( projectsAndBuildDefinitions, trigger );
}
/**
@@ -1046,19 +730,7 @@
Collection<Map<Integer, Integer>> projectsAndBuildDefinitions = getProjectsAndBuildDefinitions( projectsList, buildDefinitionId );
- prepareBuildProjects( projectsAndBuildDefinitions );
-
- for ( Project project : projectsList )
- {
- for ( Map<Integer, Integer> map : projectsAndBuildDefinitions )
- {
- if ( map.get( project.getId() ) != null )
- {
- buildProject( project, buildDefinitionId, trigger );
- break;
- }
- }
- }
+ prepareBuildProjects( projectsAndBuildDefinitions, trigger );
}
/**
@@ -1123,19 +795,7 @@
bds,
checkDefaultBuildDefinitionForProject );
- prepareBuildProjects( projectsAndBuildDefinitions );
-
- for ( Project project : projectsList )
- {
- for ( Map<Integer, Integer> map : projectsAndBuildDefinitions )
- {
- if ( map.get( project.getId() ) != null )
- {
- buildProject( project, map.get( project.getId() ), ContinuumProjectState.TRIGGER_FORCED );
- break;
- }
- }
- }
+ prepareBuildProjects( projectsAndBuildDefinitions, ContinuumProjectState.TRIGGER_FORCED );
}
/**
@@ -1192,9 +852,14 @@
if ( buildDefId != null && !taskQueueManager.isInBuildingQueue( project.getId(), buildDefId.intValue() ) &&
!taskQueueManager.isInCheckoutQueue( project.getId() ) && !taskQueueManager.isInPrepareBuildQueue( project.getId() ) )
{
- Project proj = projectDao.getProjectWithScmDetails( project.getId() );
+ ProjectScmRoot scmRoot = getProjectScmRootByProject( project.getId() );
+
+ String scmRootAddress = "";
- String scmRootAddress = proj.getScmRootAddress();
+ if ( scmRoot != null )
+ {
+ scmRootAddress = scmRoot.getScmRootAddress();
+ }
Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRootAddress );
@@ -1212,28 +877,11 @@
{
throw new ContinuumException( e.getMessage(), e );
}
- catch ( ContinuumStoreException e )
- {
- // do we throw this or skip it?
- throw new ContinuumException( "Error while retrieving project", e );
- }
}
}
}
- prepareBuildProjects( map.values() );
-
- for ( Project project : projectsList )
- {
- //buildProject( project, projectsAndBuildDefinitionsMap.get( project.getId() ), ContinuumProjectState.TRIGGER_SCHEDULED, false );
- for ( Map<Integer, Integer> aMap : map.values() )
- {
- if ( aMap.get( project.getId() ) != null )
- {
- buildProject( project, aMap.get( project.getId() ), ContinuumProjectState.TRIGGER_SCHEDULED );
- }
- }
- }
+ prepareBuildProjects( map.values(), ContinuumProjectState.TRIGGER_SCHEDULED );
}
public void buildProject( int projectId )
@@ -1264,9 +912,7 @@
Map<Integer, Integer> projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>( projectId, buildDefinitionId );
- prepareBuildProjects( projectsAndBuildDefinitionsMap );
-
- buildProject( projectId, buildDefinitionId, ContinuumProjectState.TRIGGER_FORCED );
+ prepareBuildProjects( projectsAndBuildDefinitionsMap, ContinuumProjectState.TRIGGER_FORCED );
}
public void buildProject( int projectId, int trigger )
@@ -1295,17 +941,12 @@
Map<Integer, Integer> projectsBuildDefinitionsMap = new HashMap<Integer, Integer>( projectId, buildDef.getId() );
- prepareBuildProjects( projectsBuildDefinitionsMap );
-
- //buildProject( projectId, buildDef.getId(), trigger, false );
-
- buildProject( projectId, buildDef.getId(), trigger );
+ prepareBuildProjects( projectsBuildDefinitionsMap, trigger );
}
public void buildProject( int projectId, int buildDefinitionId, int trigger )
throws ContinuumException
{
- //buildProject( projectId, buildDefinitionId, trigger, true );
Project project;
try
@@ -1317,188 +958,14 @@
throw logAndCreateException( "Error while getting project " + projectId + ".", e );
}
- buildProject( project, buildDefinitionId, trigger );
- }
-
- /*
- public void buildProject( Project project, int buildDefinitionId, int trigger )
- throws ContinuumException
- {
- buildProject( project, buildDefinitionId, trigger, true );
- }
-
- private void buildProject( int projectId, int buildDefinitionId, int trigger, boolean checkQueues )
- throws ContinuumException
- {
- Project project;
-
- try
- {
- project = projectDao.getProject( projectId );
- }
- catch ( ContinuumStoreException e )
- {
- throw logAndCreateException( "Error while getting project " + projectId + ".", e );
- }
-
- buildProject( project, buildDefinitionId, trigger, checkQueues );
- }*/
-
- private synchronized void buildProject( Project project, int buildDefinitionId, int trigger )
- throws ContinuumException
- {
- try
- {
- if ( project.getState() != ContinuumProjectState.NEW &&
- project.getState() != ContinuumProjectState.CHECKEDOUT &&
- project.getState() != ContinuumProjectState.OK && project.getState() != ContinuumProjectState.FAILED &&
- project.getState() != ContinuumProjectState.ERROR && project.getState() != ContinuumProjectState.CANCELLED )
- {
- ContinuumBuildExecutor executor = executorManager.getBuildExecutor( project.getExecutorId() );
-
- if ( executor.isBuilding( project ) || project.getState() == ContinuumProjectState.UPDATING )
- {
- // project is building
- getLogger().info( "Project '" + project.getName() + "' already being built." );
-
- return;
- }
- else
- {
- project.setOldState( project.getState() );
-
- project.setState( ContinuumProjectState.ERROR );
-
- projectDao.updateProject( project );
-
- project = projectDao.getProject( project.getId() );
- }
- }
- else
- {
- project.setOldState( project.getState() );
-
- projectDao.updateProject( project );
-
- project = projectDao.getProject( project.getId() );
- }
-
- BuildDefinition buildDefinition = getBuildDefinition( buildDefinitionId );
- String buildDefinitionLabel = buildDefinition.getDescription();
- if ( StringUtils.isEmpty( buildDefinitionLabel ) )
- {
- buildDefinitionLabel = buildDefinition.getGoals();
- }
-
- getLogger().info( "Enqueuing '" + project.getName() + "' with build definition '" + buildDefinitionLabel +
- "' - id=" + buildDefinitionId + ")." );
-
- BuildProjectTask task = new BuildProjectTask( project.getId(), buildDefinitionId, trigger, project
- .getName(), buildDefinitionLabel );
-
- task.setMaxExecutionTime( buildDefinitionDao.getBuildDefinition( buildDefinitionId ).getSchedule()
- .getMaxJobExecutionTime() * 1000 );
-
- taskQueueManager.getBuildQueue().put( task );
- }
- catch ( ContinuumStoreException e )
- {
- throw logAndCreateException( "Error while creating build object.", e );
- }
- catch ( TaskQueueException e )
- {
- throw logAndCreateException( "Error while creating enqueuing object.", e );
- }
+ Map context = new HashMap();
+ context.put( AbstractContinuumAction.KEY_PROJECT, project );
+ context.put( AbstractContinuumAction.KEY_BUILD_DEFINITION_ID, buildDefinitionId );
+ context.put( AbstractContinuumAction.KEY_TRIGGER, trigger );
+
+ executeAction( "create-build-project-task", context );
}
-/*
- private synchronized void buildProject( Project project, int buildDefinitionId, int trigger, boolean checkQueues )
- throws ContinuumException
- {
- if ( checkQueues )
- {
- try
- {
- if ( taskQueueManager.isInBuildingQueue( project.getId(), buildDefinitionId ) )
- {
- return;
- }
-
- if ( taskQueueManager.isInCheckoutQueue( project.getId() ) )
- {
- taskQueueManager.removeProjectFromCheckoutQueue( project.getId() );
- }
- }
- catch ( TaskQueueManagerException e )
- {
- throw new ContinuumException( e.getMessage(), e );
- }
- }
-
- try
- {
- if ( project.getState() != ContinuumProjectState.NEW &&
- project.getState() != ContinuumProjectState.CHECKEDOUT &&
- project.getState() != ContinuumProjectState.OK && project.getState() != ContinuumProjectState.FAILED &&
- project.getState() != ContinuumProjectState.ERROR )
- {
- ContinuumBuildExecutor executor = executorManager.getBuildExecutor( project.getExecutorId() );
-
- if ( executor.isBuilding( project ) || project.getState() == ContinuumProjectState.UPDATING )
- {
- // project is building
- getLogger().info( "Project '" + project.getName() + "' already being built." );
-
- return;
- }
- else
- {
- project.setOldState( project.getState() );
-
- project.setState( ContinuumProjectState.ERROR );
-
- projectDao.updateProject( project );
-
- project = projectDao.getProject( project.getId() );
- }
- }
- else
- {
- project.setOldState( project.getState() );
-
- projectDao.updateProject( project );
-
- project = projectDao.getProject( project.getId() );
- }
-
- BuildDefinition buildDefinition = getBuildDefinition( buildDefinitionId );
- String buildDefinitionLabel = buildDefinition.getDescription();
- if ( StringUtils.isEmpty( buildDefinitionLabel ) )
- {
- buildDefinitionLabel = buildDefinition.getGoals();
- }
-
- getLogger().info( "Enqueuing '" + project.getName() + "' with build definition '" + buildDefinitionLabel +
- "' - id=" + buildDefinitionId + ")." );
-
- BuildProjectTask task = new BuildProjectTask( project.getId(), buildDefinitionId, trigger, project
- .getName(), buildDefinitionLabel );
-
- task.setMaxExecutionTime( buildDefinitionDao.getBuildDefinition( buildDefinitionId ).getSchedule()
- .getMaxJobExecutionTime() * 1000 );
-
- taskQueueManager.getBuildQueue().put( task );
- }
- catch ( ContinuumStoreException e )
- {
- throw logAndCreateException( "Error while creating build object.", e );
- }
- catch ( TaskQueueException e )
- {
- throw logAndCreateException( "Error while creating enqueuing object.", e );
- }
- }
-*/
public BuildResult getBuildResult( int buildId )
throws ContinuumException
{
@@ -2127,7 +1594,6 @@
project.setScmPassword( null );
}
- project.setScmRootAddress( projectScmRoot.getScmRootAddress() );
projectGroup.addProject( project );
}
@@ -2994,28 +2460,31 @@
if ( !wdFile.mkdirs() )
{
throw new InitializationException(
- "Could not making the working directory: " + "'" + wdFile.getAbsolutePath() + "'." );
+ "Could not make the working directory: " + "'" + wdFile.getAbsolutePath() + "'." );
}
}
+ getLogger().info( "Showing all groups:" );
+ try
+ {
+ for ( ProjectGroup group : projectGroupDao.getAllProjectGroups() )
+ {
+ createProjectScmRootForProjectGroup( group );
+ }
+ }
+ catch ( ContinuumException e )
+ {
+ throw new InitializationException( "Error while creating project scm root for the project group", e );
+ }
+
getLogger().info( "Showing all projects: " );
for ( Project project : projectDao.getAllProjectsByNameWithBuildDetails() )
{
- if ( project.getScmRootAddress() == null || StringUtils.isEmpty( project.getScmRootAddress() ) )
- {
- try
- {
- setScmRootAddressForProject( project );
- }
- catch ( ContinuumException e )
- {
- throw new InitializationException( "Database is corrupted.", e );
- }
- }
-
+ getLogger().info( "Project Notifiers: " );
for ( ProjectNotifier notifier : (List<ProjectNotifier>) project.getNotifiers() )
{
+ getLogger().info( "check if type isEmpty" );
if ( StringUtils.isEmpty( notifier.getType() ) )
{
try
@@ -3027,6 +2496,7 @@
throw new InitializationException( "Database is corrupted.", e );
}
}
+ getLogger().info( "notifier sendOnScmFailure: " + notifier.isSendOnScmFailure() );
}
if ( project.getState() != ContinuumProjectState.NEW &&
@@ -3582,6 +3052,24 @@
throw new ContinuumException( "Error while retrieving projectScmRoot ", e );
}
}
+
+ public ProjectScmRoot getProjectScmRootByProject( int projectId )
+ throws ContinuumException
+ {
+ Project project = getProject( projectId );
+ ProjectGroup group = getProjectGroupByProjectId( projectId );
+
+ List<ProjectScmRoot> scmRoots = getProjectScmRootByProjectGroup( group.getId() );
+
+ for ( ProjectScmRoot scmRoot : scmRoots )
+ {
+ if( project.getScmUrl() != null && project.getScmUrl().startsWith( scmRoot.getScmRootAddress() ) )
+ {
+ return scmRoot;
+ }
+ }
+ return null;
+ }
public Collection<Map<Integer, Integer>> getProjectsAndBuildDefinitions( Collection<Project> projects,
List<BuildDefinition> bds,
@@ -3658,27 +3146,24 @@
continue;
}
- try
- {
- Project proj = projectDao.getProjectWithScmDetails( projectId );
+ ProjectScmRoot scmRoot = getProjectScmRootByProject( projectId );
- String scmRootAddress = proj.getScmRootAddress();
-
- Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRootAddress );
-
- if ( projectsAndBuildDefinitionsMap == null )
- {
- projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
- }
+ String scmRootAddress = "";
+ if ( scmRoot != null )
+ {
+ scmRootAddress = scmRoot.getScmRootAddress();
+ }
- projectsAndBuildDefinitionsMap.put( projectId, buildDefId );
+ Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRootAddress );
- map.put( scmRootAddress, projectsAndBuildDefinitionsMap );
- }
- catch ( ContinuumStoreException e )
+ if ( projectsAndBuildDefinitionsMap == null )
{
- throw new ContinuumException( "Erro while retrieving project", e );
+ projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
}
+
+ projectsAndBuildDefinitionsMap.put( projectId, buildDefId );
+
+ map.put( scmRootAddress, projectsAndBuildDefinitionsMap );
}
return map.values();
@@ -3707,9 +3192,13 @@
taskQueueManager.removeProjectFromCheckoutQueue( projectId );
}
- Project proj = projectDao.getProjectWithScmDetails( projectId );
-
- String scmRootAddress = proj.getScmRootAddress();
+ ProjectScmRoot scmRoot = getProjectScmRootByProject( projectId );
+
+ String scmRootAddress = "";
+ if ( scmRoot != null )
+ {
+ scmRootAddress = scmRoot.getScmRootAddress();
+ }
Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRootAddress );
@@ -3726,30 +3215,26 @@
{
throw new ContinuumException( e.getMessage(), e );
}
- catch ( ContinuumStoreException e )
- {
- throw new ContinuumException( "Error while retrieving project", e );
- }
}
return map.values();
}
- public void prepareBuildProjects( Collection<Map<Integer, Integer>> projectsBuildDefinitions )
+ public void prepareBuildProjects( Collection<Map<Integer, Integer>> projectsBuildDefinitions, int trigger )
throws ContinuumException
{
for ( Map<Integer, Integer> map : projectsBuildDefinitions )
{
- prepareBuildProjects( map );
+ prepareBuildProjects( map, trigger );
}
}
- public void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap )
+ public void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger )
throws ContinuumException
{
try
{
- PrepareBuildProjectsTask task = new PrepareBuildProjectsTask( projectsBuildDefinitionsMap );
+ PrepareBuildProjectsTask task = new PrepareBuildProjectsTask( projectsBuildDefinitionsMap, trigger );
taskQueueManager.getPrepareBuildQueue().put( task );
}
catch ( TaskQueueException e )
@@ -3758,32 +3243,6 @@
}
}
- private void setScmRootAddressForProject( Project project )
- throws ContinuumException
- {
- boolean found = false;
-
- ProjectGroup projectGroup = project.getProjectGroup();
-
- List<ProjectScmRoot> scmRoots = projectScmRootDao.getProjectScmRootByProjectGroup( projectGroup.getId() );
-
- for ( ProjectScmRoot scmRoot : scmRoots )
- {
- if ( project.getScmUrl().startsWith( scmRoot.getScmRootAddress() ) )
- {
- project.setScmRootAddress( scmRoot.getScmRootAddress() );
- found = true;
- break;
- }
- }
-
- if ( !found )
- {
- createProjectScmRootForProjectGroup( projectGroup );
- setScmRootAddressForProject( project );
- }
- }
-
private void createProjectScmRootForProjectGroup( ProjectGroup projectGroup )
throws ContinuumException
{
@@ -3816,14 +3275,21 @@
private ProjectScmRoot createProjectScmRoot( ProjectGroup projectGroup, String url )
throws ContinuumException
{
- ProjectScmRoot projectScmRoot = new ProjectScmRoot();
-
- projectScmRoot.setProjectGroup( projectGroup );
-
- projectScmRoot.setScmRootAddress( url );
-
try
{
+ ProjectScmRoot scmRoot = projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( projectGroup.getId(), url );
+
+ if ( scmRoot != null )
+ {
+ return null;
+ }
+
+ ProjectScmRoot projectScmRoot = new ProjectScmRoot();
+
+ projectScmRoot.setProjectGroup( projectGroup );
+
+ projectScmRoot.setScmRootAddress( url );
+
return projectScmRootDao.addProjectScmRoot( projectScmRoot );
}
catch ( ContinuumStoreException e )
Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java?rev=708091&r1=708090&r2=708091&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java Sun Oct 26 22:54:11 2008
@@ -19,8 +19,6 @@
* under the License.
*/
-import org.apache.continuum.taskqueue.manager.TaskQueueManager;
-import org.apache.continuum.taskqueue.manager.TaskQueueManagerException;
import org.apache.maven.continuum.buildqueue.BuildProjectTask;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.taskqueue.Task;
@@ -39,11 +37,6 @@
* @plexus.requirement
*/
private BuildController controller;
-
- /**
- * @plexus.requirement
- */
- private TaskQueueManager taskQueueManager;
// ----------------------------------------------------------------------
// TaskExecutor Implementation
@@ -53,23 +46,6 @@
throws TaskExecutionException
{
BuildProjectTask buildProjectTask = (BuildProjectTask) task;
-
- try
- {
- while ( taskQueueManager.isInPrepareBuildQueue( buildProjectTask.getProjectId() ) ||
- taskQueueManager.isInCurrentPrepareBuildTask( buildProjectTask.getProjectId() ) )
- {
- Thread.sleep( 1000 );
- }
- }
- catch ( TaskQueueManagerException e )
- {
- throw new TaskExecutionException( e.getMessage(), e );
- }
- catch ( InterruptedException e )
- {
- throw new TaskExecutionException( e.getMessage(), e );
- }
controller.build( buildProjectTask.getProjectId(), buildProjectTask.getBuildDefinitionId(), buildProjectTask
.getTrigger() );
Added: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java?rev=708091&view=auto
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java (added)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CreateBuildProjectTaskAction.java Sun Oct 26 22:54:11 2008
@@ -0,0 +1,147 @@
+package org.apache.maven.continuum.core.action;
+
+/*
+ * 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 java.util.Map;
+
+import org.apache.continuum.dao.BuildDefinitionDao;
+import org.apache.continuum.dao.ProjectDao;
+import org.apache.continuum.taskqueue.manager.TaskQueueManager;
+import org.apache.maven.continuum.ContinuumException;
+import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
+import org.apache.maven.continuum.execution.manager.BuildExecutorManager;
+import org.apache.maven.continuum.model.project.BuildDefinition;
+import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.project.ContinuumProjectState;
+import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.codehaus.plexus.taskqueue.TaskQueueException;
+import org.codehaus.plexus.util.StringUtils;
+
+/**
+ * @author <a href="mailto:ctan@apache.org">Maria Catherine Tan</a>
+ * @plexus.component role="org.codehaus.plexus.action.Action" role-hint="create-build-project-task"
+ */
+public class CreateBuildProjectTaskAction
+ extends AbstractContinuumAction
+{
+ /**
+ * @plexus.requirement
+ */
+ private TaskQueueManager taskQueueManager;
+
+ /**
+ * @plexus.requirement
+ */
+ private BuildExecutorManager executorManager;
+
+ /**
+ * @plexus.requirement
+ */
+ private ProjectDao projectDao;
+
+ /**
+ * @plexus.requirement
+ */
+ private BuildDefinitionDao buildDefinitionDao;
+
+ public synchronized void execute( Map context )
+ throws Exception
+ {
+ Project project = AbstractContinuumAction.getProject( context );
+ int buildDefinitionId = AbstractContinuumAction.getBuildDefinitionId( context );
+ int trigger = AbstractContinuumAction.getTrigger( context );
+
+ if ( taskQueueManager.isInBuildingQueue( project.getId(), buildDefinitionId ) )
+ {
+ return;
+ }
+
+ if ( taskQueueManager.isInCheckoutQueue( project.getId() ) )
+ {
+ taskQueueManager.removeProjectFromCheckoutQueue( project.getId() );
+ }
+
+ try
+ {
+ if ( project.getState() != ContinuumProjectState.NEW &&
+ project.getState() != ContinuumProjectState.CHECKEDOUT &&
+ project.getState() != ContinuumProjectState.OK && project.getState() != ContinuumProjectState.FAILED &&
+ project.getState() != ContinuumProjectState.ERROR )
+ {
+ ContinuumBuildExecutor executor = executorManager.getBuildExecutor( project.getExecutorId() );
+
+ if ( executor.isBuilding( project ) || project.getState() == ContinuumProjectState.UPDATING )
+ {
+ // project is building
+ getLogger().info( "Project '" + project.getName() + "' already being built." );
+
+ return;
+ }
+ else
+ {
+ project.setOldState( project.getState() );
+
+ project.setState( ContinuumProjectState.ERROR );
+
+ projectDao.updateProject( project );
+
+ project = projectDao.getProject( project.getId() );
+ }
+ }
+ else
+ {
+ project.setOldState( project.getState() );
+
+ projectDao.updateProject( project );
+
+ project = projectDao.getProject( project.getId() );
+ }
+
+ BuildDefinition buildDefinition = buildDefinitionDao.getBuildDefinition( buildDefinitionId );
+ String buildDefinitionLabel = buildDefinition.getDescription();
+ if ( StringUtils.isEmpty( buildDefinitionLabel ) )
+ {
+ buildDefinitionLabel = buildDefinition.getGoals();
+ }
+
+ getLogger().info( "Enqueuing '" + project.getName() + "' with build definition '" + buildDefinitionLabel +
+ "' - id=" + buildDefinitionId + ")." );
+
+ BuildProjectTask task = new BuildProjectTask( project.getId(), buildDefinitionId, trigger, project
+ .getName(), buildDefinitionLabel );
+
+ task.setMaxExecutionTime( buildDefinition.getSchedule()
+ .getMaxJobExecutionTime() * 1000 );
+
+ taskQueueManager.getBuildQueue().put( task );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ getLogger().error( "Error while creating build object", e );
+ throw new ContinuumException( "Error while creating build object.", e );
+ }
+ catch ( TaskQueueException e )
+ {
+ getLogger().error( "Error while enqueuing object", e );
+ throw new ContinuumException( "Error while enqueuing object.", e );
+ }
+ }
+}
Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTask.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTask.java?rev=708091&r1=708090&r2=708091&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTask.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTask.java Sun Oct 26 22:54:11 2008
@@ -9,9 +9,12 @@
{
private Map<Integer, Integer> projectsBuildDefinitionsMap;
- public PrepareBuildProjectsTask( Map<Integer, Integer> projectsBuildDefinitionsMap )
+ private int trigger;
+
+ public PrepareBuildProjectsTask( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger )
{
this.projectsBuildDefinitionsMap = projectsBuildDefinitionsMap;
+ this.trigger = trigger;
}
public long getMaxExecutionTime()
@@ -29,6 +32,16 @@
{
this.projectsBuildDefinitionsMap = projectsBuildDefinitionsMap;
}
+
+ public int getTrigger()
+ {
+ return trigger;
+ }
+
+ public void setTrigger( int trigger )
+ {
+ this.trigger = trigger;
+ }
public int getHashCode()
{
Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java?rev=708091&r1=708090&r2=708091&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java Sun Oct 26 22:54:11 2008
@@ -18,6 +18,7 @@
import org.apache.maven.continuum.project.ContinuumProjectState;
import org.apache.maven.continuum.store.ContinuumStoreException;
import org.apache.maven.continuum.utils.ContinuumUtils;
+import org.apache.maven.continuum.utils.ProjectSorter;
import org.apache.maven.continuum.utils.WorkingDirectoryService;
import org.codehaus.plexus.action.ActionManager;
import org.codehaus.plexus.action.ActionNotFoundException;
@@ -26,6 +27,7 @@
import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
import org.codehaus.plexus.taskqueue.execution.TaskExecutor;
import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.dag.CycleDetectedException;
/**
* @author <a href="mailto:ctan@apache.org">Maria Catherine Tan</a>
@@ -72,6 +74,7 @@
PrepareBuildProjectsTask prepareTask = (PrepareBuildProjectsTask) task;
Map<Integer, Integer> projectsBuildDefinitionsMap = prepareTask.getProjectsBuildDefinitionsMap();
+ int trigger = prepareTask.getTrigger();
Set<Integer> projectsId = projectsBuildDefinitionsMap.keySet();
Map context = new HashMap();
@@ -127,6 +130,9 @@
getLogger().info( "Ending prepare build" );
endPrepareBuild( context );
}
+
+ int projectGroupId = AbstractContinuumAction.getProjectGroupId( context );
+ buildProjects( projectGroupId, projectsBuildDefinitionsMap, trigger );
}
private Map initializeContext( int projectId, int buildDefinitionId )
@@ -150,7 +156,8 @@
break;
}
}
-
+
+ context.put( AbstractContinuumAction.KEY_PROJECT_GROUP_ID, projectGroup.getId() );
context.put( AbstractContinuumAction.KEY_PROJECT_ID, projectId );
context.put( AbstractContinuumAction.KEY_PROJECT, project );
@@ -416,4 +423,70 @@
throw new TaskExecutionException( "Error storing project scm root", e );
}
}
+
+ private void buildProjects( int projectGroupId, Map<Integer, Integer> projectsAndBuildDefinitionsMap, int trigger )
+ throws TaskExecutionException
+ {
+ List<Project> projects = projectDao.getProjectsWithDependenciesByGroupId( projectGroupId );
+ List<Project> projectList;
+
+ try
+ {
+ projectList = ProjectSorter.getSortedProjects( projects, getLogger() );
+ }
+ catch ( CycleDetectedException e )
+ {
+ projectList = projectDao.getAllProjectsByName();
+ }
+
+ for ( Project project : projectList )
+ {
+ boolean shouldBuild = false;
+ int buildDefinitionId = 0;
+
+ if ( projectsAndBuildDefinitionsMap.get( project.getId() ) != null )
+ {
+ buildDefinitionId = projectsAndBuildDefinitionsMap.get( project.getId() );
+ shouldBuild = true;
+ }
+ else if ( project.getState() == ContinuumProjectState.CHECKEDOUT || project.getState() == ContinuumProjectState.NEW ) //check if no build result yet for project
+ {
+ try
+ {
+ //get default build definition for project
+ buildDefinitionId = buildDefinitionDao.getDefaultBuildDefinition( project.getId() ).getId();
+ }
+ catch ( ContinuumStoreException e )
+ {
+ getLogger().error( "Error while creating build object", e );
+ throw new TaskExecutionException( "Error while creating build object", e );
+ }
+ shouldBuild = true;
+ }
+
+ if ( shouldBuild )
+ {
+ try
+ {
+ Map context = new HashMap();
+ context.put( AbstractContinuumAction.KEY_PROJECT, project );
+ context.put( AbstractContinuumAction.KEY_BUILD_DEFINITION_ID, buildDefinitionId );
+ context.put( AbstractContinuumAction.KEY_TRIGGER, trigger );
+
+ getLogger().info( "Performing action create-build-project-task" );
+ actionManager.lookup( "create-build-project-task" ).execute( context );
+ }
+ catch ( ActionNotFoundException e )
+ {
+ getLogger().error( "Error looking up action 'build-project'" );
+ throw new TaskExecutionException( "Error looking up action 'build-project'", e );
+ }
+ catch ( Exception e )
+ {
+ getLogger().error( e.getMessage(), e );
+ throw new TaskExecutionException( "Error executing action 'build-project'", e );
+ }
+ }
+ }
+ }
}
Modified: continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml?rev=708091&r1=708090&r2=708091&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml (original)
+++ continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml Sun Oct 26 22:54:11 2008
@@ -351,11 +351,6 @@
<type>ScmResult</type>
</association>
</field>
- <field jpox.fetch-groups="project-all-details project-with-scm-details">
- <name>scmRootAddress</name>
- <version>1.1.2+</version>
- <type>String</type>
- </field>
</fields>
</class>
Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java?rev=708091&r1=708090&r2=708091&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java (original)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java Sun Oct 26 22:54:11 2008
@@ -162,88 +162,7 @@
Collection<Map<Integer, Integer>> projectsBuildDefs = getProjectsBuildDefsMap( sortedProjects );
- getContinuum().prepareBuildProjects( projectsBuildDefs );
-
- for ( Project project : sortedProjects )
- {
- if ( this.getBuildDefinitionId() <= 0 )
- {
- for ( Map<Integer, Integer> map : projectsBuildDefs )
- {
- if ( map.get( project.getId() ) != null )
- {
- getContinuum().buildProject( project.getId(), map.get( project.getId() ),
- ContinuumProjectState.TRIGGER_FORCED );
- break;
- }
- }
- }
- else
- {
- getContinuum().buildProject( project.getId(), this.getBuildDefinitionId(),
- ContinuumProjectState.TRIGGER_FORCED );
- }
- }
-
- /*
- //TODO : Change this part because it's a duplicate of DefaultContinuum.buildProjectGroup*
- List<BuildDefinition> groupDefaultBDs = null;
-
- if ( getBuildDefinitionId() <= 0 )
- {
- groupDefaultBDs = getContinuum().getDefaultBuildDefinitionsForProjectGroup( projectGroupId );
- }
-
-
- for ( Iterator i = sortedProjects.iterator(); i.hasNext(); )
- {
- Project project = (Project) i.next();
- if ( this.getBuildDefinitionId() <= 0 )
- {
- int buildDefId = -1;
-
- if ( groupDefaultBDs != null )
- {
- for ( BuildDefinition bd : groupDefaultBDs )
- {
- if ( project.getExecutorId().equals( bd.getType() ) )
- {
- buildDefId = bd.getId();
- break;
- }
- }
- }
-
- BuildDefinition projectDefaultBD = null;
- if ( this.getBuildDefinitionId() == -1 )
- {
- try
- {
- projectDefaultBD = getContinuum().getDefaultBuildDefinition( project.getId() );
- }
- catch ( ContinuumException e )
- {
- // here skip ObjectNotException
- getLogger().debug( e.getMessage() );
- }
-
- if ( projectDefaultBD != null )
- {
- buildDefId = projectDefaultBD.getId();
- getLogger().debug( "Project " + project.getId() +
- " has own default build definition, will use it instead of group's." );
- }
- }
-
- getContinuum().buildProject( project.getId(), buildDefId, ContinuumProjectState.TRIGGER_FORCED );
- }
- else
- {
- getContinuum().buildProject( project.getId(), this.getBuildDefinitionId(),
- ContinuumProjectState.TRIGGER_FORCED );
- }
- }
- */
+ getContinuum().prepareBuildProjects( projectsBuildDefs, ContinuumProjectState.TRIGGER_FORCED );
}
return SUCCESS;