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 2008/12/18 12:10:35 UTC
svn commit: r727697 - in /continuum/branches/continuum-parallel-builds:
continuum-api/src/main/java/org/apache/maven/continuum/
continuum-core/src/main/java/org/apache/continuum/buildmanager/
continuum-core/src/main/java/org/apache/maven/continuum/ con...
Author: oching
Date: Thu Dec 18 03:10:35 2008
New Revision: 727697
URL: http://svn.apache.org/viewvc?rev=727697&view=rev
Log:
o invoke build queue CRUD operations via Continuum class if used from webapp
Modified:
continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java
continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildQueueAction.java
Modified: continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=727697&r1=727696&r2=727697&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Thu Dec 18 03:10:35 2008
@@ -35,6 +35,7 @@
import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.installation.InstallationService;
import org.apache.maven.continuum.model.project.BuildDefinition;
+import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.project.ProjectGroup;
@@ -634,6 +635,28 @@
// ----------------------------------------------------------------------
BuildsManager getBuildsManager();
+ // ----------------------------------------------------------------------
+ // Build Queue
+ // ----------------------------------------------------------------------
+
+ BuildQueue addBuildQueue( BuildQueue buildQueue )
+ throws ContinuumException;
+
+ BuildQueue getBuildQueue( int buildQueueId )
+ throws ContinuumException;
+
+ BuildQueue getBuildQueueByName( String buildQueueName )
+ throws ContinuumException;
+
+ void removeBuildQueue( BuildQueue buildQueue )
+ throws ContinuumException;
+
+ BuildQueue storeBuildQueue( BuildQueue buildQueue )
+ throws ContinuumException;
+
+ List<BuildQueue> getAllBuildQueues()
+ throws ContinuumException;
+
public void startup()
throws ContinuumException;
Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java?rev=727697&r1=727696&r2=727697&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java Thu Dec 18 03:10:35 2008
@@ -717,6 +717,12 @@
try
{
+ if( overallBuildQueue.getBuildTaskQueueExecutor().getCurrentTask() != null ||
+ overallBuildQueue.getCheckoutTaskQueueExecutor().getCurrentTask() != null )
+ {
+ throw new BuildManagerException( "Cannot remove build queue. A task is currently executing." );
+ }
+
tasks = overallBuildQueue.getProjectsInBuildQueue();
checkoutTasks = overallBuildQueue.getCheckOutTasksInQueue();
Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=727697&r1=727696&r2=727697&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Thu Dec 18 03:10:35 2008
@@ -37,6 +37,7 @@
import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.continuum.configuration.ContinuumConfigurationException;
import org.apache.continuum.dao.BuildDefinitionDao;
+import org.apache.continuum.dao.BuildQueueDao;
import org.apache.continuum.dao.BuildResultDao;
import org.apache.continuum.dao.ContinuumReleaseResultDao;
import org.apache.continuum.dao.DaoUtils;
@@ -67,6 +68,7 @@
import org.apache.maven.continuum.installation.InstallationService;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.BuildDefinitionTemplate;
+import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.BuildResult;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.model.project.ProjectGroup;
@@ -250,6 +252,11 @@
* @plexus.requirement role-hint="parallel"
*/
private BuildsManager parallelBuildsManager;
+
+ /**
+ * @plexus.requirement
+ */
+ private BuildQueueDao buildQueueDao;
public DefaultContinuum()
{
@@ -3225,6 +3232,78 @@
}
return null;
}
+
+ public BuildQueue addBuildQueue( BuildQueue buildQueue ) throws ContinuumException
+ {
+ try
+ {
+ return buildQueueDao.addBuildQueue( buildQueue );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error adding build queue.", e );
+ }
+ }
+
+ public BuildQueue getBuildQueue( int buildQueueId ) throws ContinuumException
+ {
+ try
+ {
+ return buildQueueDao.getBuildQueue( buildQueueId );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error retrieving build queue.", e );
+ }
+ }
+
+ public BuildQueue getBuildQueueByName( String buildQueueName ) throws ContinuumException
+ {
+ try
+ {
+ return buildQueueDao.getBuildQueueByName( buildQueueName );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error retrieving build queue.", e );
+ }
+ }
+
+ public void removeBuildQueue( BuildQueue buildQueue ) throws ContinuumException
+ {
+ try
+ {
+ buildQueueDao.removeBuildQueue( buildQueue );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error deleting build queue.", e );
+ }
+ }
+
+ public BuildQueue storeBuildQueue( BuildQueue buildQueue ) throws ContinuumException
+ {
+ try
+ {
+ return buildQueueDao.storeBuildQueue( buildQueue );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error updating build queue.", e );
+ }
+ }
+
+ public List<BuildQueue> getAllBuildQueues() throws ContinuumException
+ {
+ try
+ {
+ return buildQueueDao.getAllBuildQueues();
+ }
+ catch ( ContinuumStoreException e )
+ {
+ throw new ContinuumException( "Error adding build queue.", e );
+ }
+ }
private void prepareBuildProjects( Collection<Project> projects, List<BuildDefinition> bds,
boolean checkDefaultBuildDefinitionForProject, int trigger )
Modified: continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java?rev=727697&r1=727696&r2=727697&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ScheduleAction.java Thu Dec 18 03:10:35 2008
@@ -24,12 +24,9 @@
import java.util.Collections;
import java.util.List;
-import org.apache.continuum.dao.BuildQueueDao;
-
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.Schedule;
-import org.apache.maven.continuum.store.ContinuumStoreException;
import org.apache.maven.continuum.web.exception.AuthenticationRequiredException;
import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
@@ -74,25 +71,20 @@
private String dayOfWeek = "?";
private String year;
-
+
private List<BuildQueue> schedulesBuildQueue;
-
+
private BuildQueue buildQueue;
-
+
private List<BuildQueue> buildQueues;
-
+
private List<String> buildQueueIds;
-
- /**
- * @plexus.requirement
- */
- private BuildQueueDao buildQueueDao;
-
+
public void prepare()
throws Exception
{
- super.prepare();
- buildQueues = buildQueueDao.getAllBuildQueues();
+ super.prepare();
+ buildQueues = getContinuum().getAllBuildQueues();
}
public String summary()
@@ -112,7 +104,7 @@
addActionError( e.getMessage() );
return REQUIRES_AUTHENTICATION;
- }
+ }
buildQueueIds = new ArrayList<String>();
schedules = getContinuum().getSchedules();
@@ -123,7 +115,7 @@
public String input()
throws ContinuumException
{
-
+
try
{
checkManageSchedulesAuthorization();
@@ -159,8 +151,8 @@
description = schedule.getDescription();
name = schedule.getName();
delay = schedule.getDelay();
- maxJobExecutionTime = schedule.getMaxJobExecutionTime();
-
+ maxJobExecutionTime = schedule.getMaxJobExecutionTime();
+
getBuildQueueIdsFromSchedule();
}
else
@@ -174,14 +166,14 @@
private void getBuildQueueIdsFromSchedule()
{
- if( schedule != null )
+ if ( schedule != null )
{
List<BuildQueue> buildQueues = schedule.getBuildQueues();
- if( buildQueueIds == null )
+ if ( buildQueueIds == null )
{
buildQueueIds = new ArrayList<String>();
}
- for( BuildQueue buildQueue : buildQueues )
+ for ( BuildQueue buildQueue : buildQueues )
{
buildQueueIds.add( buildQueue.getName() );
}
@@ -191,7 +183,7 @@
public String save()
throws ContinuumException
{
-
+
try
{
checkManageSchedulesAuthorization();
@@ -214,14 +206,14 @@
return ERROR;
}
else
- {
+ {
if ( id == 0 )
{
try
{
getContinuum().addSchedule( setFields( new Schedule() ) );
}
- catch ( ContinuumStoreException e )
+ catch ( ContinuumException e )
{
addActionError( "schedule.buildqueues.add.error" );
return ERROR;
@@ -234,8 +226,8 @@
{
getContinuum().updateSchedule( setFields( getContinuum().getSchedule( id ) ) );
}
- catch ( ContinuumStoreException e )
- {
+ catch ( ContinuumException e )
+ {
addActionError( "schedule.buildqueues.add.error" );
return ERROR;
}
@@ -244,26 +236,26 @@
}
}
- private Schedule setFields( Schedule schedule )
- throws ContinuumStoreException
+ private Schedule setFields( Schedule schedule )
+ throws ContinuumException
{
- schedule.setActive( active );
+ schedule.setActive( active );
schedule.setCronExpression( getCronExpression() );
schedule.setDelay( delay );
schedule.setDescription( description );
schedule.setName( name );
schedule.setMaxJobExecutionTime( maxJobExecutionTime );
-
+
// remove old build queues
schedule.setBuildQueues( null );
-
+
// add selected build queues
for ( String buildQueueId : buildQueueIds )
- {
- BuildQueue buildQueue = buildQueueDao.getBuildQueueByName( buildQueueId ) ;
- schedule.addBuildQueue( buildQueue );
+ {
+ BuildQueue buildQueue = getContinuum().getBuildQueueByName( buildQueueId );
+ schedule.addBuildQueue( buildQueue );
}
-
+
return schedule;
}
@@ -330,7 +322,7 @@
}
return SUCCESS;
- }
+ }
public Collection getSchedules()
{
@@ -489,58 +481,46 @@
private String getCronExpression()
{
- return ( second + " " + minute + " " + hour + " " + dayOfMonth + " " + month + " " + dayOfWeek + " " +
- year ).trim();
+ return ( second + " " + minute + " " + hour + " " + dayOfMonth + " " + month + " " + dayOfWeek + " " + year ).trim();
}
- public BuildQueue getBuildQueue()
- {
- return buildQueue;
- }
-
- public void setBuildQueue(BuildQueue buildQueue)
- {
- this.buildQueue = buildQueue;
- }
-
- public List<BuildQueue> getBuildQueues()
- {
- return buildQueues;
- }
-
- public void setBuildQueues(List<BuildQueue> buildQueues)
- {
- this.buildQueues = buildQueues;
- }
-
- public List<String> getBuildQueueIds()
- {
- return buildQueueIds == null ? Collections.EMPTY_LIST : buildQueueIds;
- }
-
- public void setBuildQueueIds(List<String> buildQueueIds)
- {
- this.buildQueueIds = buildQueueIds;
- }
-
- public BuildQueueDao getBuildQueueDao()
- {
- return buildQueueDao;
- }
-
- public void setBuildQueueDao(BuildQueueDao buildQueueDao)
- {
- this.buildQueueDao = buildQueueDao;
- }
-
- public List<BuildQueue> getSchedulesBuildQueue()
- {
- return schedulesBuildQueue;
- }
-
- public void setSchedulesBuildQueue(List<BuildQueue> schedulesBuildQueue)
- {
- this.schedulesBuildQueue = schedulesBuildQueue;
- }
-}
+ public BuildQueue getBuildQueue()
+ {
+ return buildQueue;
+ }
+ public void setBuildQueue( BuildQueue buildQueue )
+ {
+ this.buildQueue = buildQueue;
+ }
+
+ public List<BuildQueue> getBuildQueues()
+ {
+ return buildQueues;
+ }
+
+ public void setBuildQueues( List<BuildQueue> buildQueues )
+ {
+ this.buildQueues = buildQueues;
+ }
+
+ public List<String> getBuildQueueIds()
+ {
+ return buildQueueIds == null ? Collections.EMPTY_LIST : buildQueueIds;
+ }
+
+ public void setBuildQueueIds( List<String> buildQueueIds )
+ {
+ this.buildQueueIds = buildQueueIds;
+ }
+
+ public List<BuildQueue> getSchedulesBuildQueue()
+ {
+ return schedulesBuildQueue;
+ }
+
+ public void setSchedulesBuildQueue( List<BuildQueue> schedulesBuildQueue )
+ {
+ this.schedulesBuildQueue = schedulesBuildQueue;
+ }
+}
Modified: continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildQueueAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildQueueAction.java?rev=727697&r1=727696&r2=727697&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildQueueAction.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/BuildQueueAction.java Thu Dec 18 03:10:35 2008
@@ -22,184 +22,163 @@
import java.util.List;
import org.apache.continuum.buildmanager.BuildManagerException;
-import org.apache.continuum.dao.BuildQueueDao;
+import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.BuildQueue;
-import org.apache.maven.continuum.store.ContinuumStoreException;
import com.opensymphony.xwork2.Preparable;
/**
- *
* @plexus.component role="com.opensymphony.xwork2.Action" role-hint="buildQueueAction"
*/
-public class BuildQueueAction
+public class BuildQueueAction
extends AbstractBuildQueueAction
implements Preparable
-{
- //TODO:
- // - move all access to buildQueueDao to Continuum class
-
- private String name;
-
- private int size;
-
+{
+ private String name;
+
+ private int size;
+
private List<BuildQueue> buildQueueList;
-
- /**
- * @plexus.requirement
- */
- private BuildQueueDao buildQueueDao;
-
+
private BuildQueue buildQueue;
public void prepare()
- throws ContinuumStoreException
- {
- this.buildQueueList = buildQueueDao.getAllBuildQueues();
+ throws ContinuumException
+ {
+ this.buildQueueList = getContinuum().getAllBuildQueues();
}
-
+
public String input()
- {
+ {
return INPUT;
}
-
+
public String list()
throws Exception
{
try
{
- this.buildQueueList = buildQueueDao.getAllBuildQueues();
+ this.buildQueueList = getContinuum().getAllBuildQueues();
}
- catch ( ContinuumStoreException e )
+ catch ( ContinuumException e )
{
addActionError( "Cannot get build queues from the database : " + e.getMessage() );
return ERROR;
}
return SUCCESS;
}
-
+
public String save()
throws Exception
- {
- int allowedBuilds = getContinuum().getConfiguration().getNumberOfBuildsInParallel();
- if ( allowedBuilds < this.buildQueueList.size() )
- {
- addActionError( "You are only allowed " + allowedBuilds + " number of builds in parallel." );
- return ERROR;
- }
- else
- {
- try
- {
- BuildQueue buildQueue = new BuildQueue();
- buildQueue.setName( name );
- BuildQueue addedBuildQueue = buildQueueDao.addBuildQueue( buildQueue );
-
- getContinuum().getBuildsManager().addOverallBuildQueue( addedBuildQueue );
- }
- catch ( ContinuumStoreException e )
- {
- addActionError( "Error adding build queue to database: " + e.getMessage() );
- return ERROR;
- }
- catch ( BuildManagerException e )
- {
- addActionError( "Error creating overall build queue: " + e.getMessage() );
+ {
+ int allowedBuilds = getContinuum().getConfiguration().getNumberOfBuildsInParallel();
+ if ( allowedBuilds < this.buildQueueList.size() )
+ {
+ addActionError( "You are only allowed " + allowedBuilds + " number of builds in parallel." );
+ return ERROR;
+ }
+ else
+ {
+ try
+ {
+ BuildQueue buildQueue = new BuildQueue();
+ buildQueue.setName( name );
+ BuildQueue addedBuildQueue = getContinuum().addBuildQueue( buildQueue );
+
+ getContinuum().getBuildsManager().addOverallBuildQueue( addedBuildQueue );
+ }
+ catch ( ContinuumException e )
+ {
+ addActionError( "Error adding build queue to database: " + e.getMessage() );
+ return ERROR;
+ }
+ catch ( BuildManagerException e )
+ {
+ addActionError( "Error creating overall build queue: " + e.getMessage() );
return ERROR;
- }
-
- return SUCCESS;
- }
+ }
+
+ return SUCCESS;
+ }
}
-
+
public String edit()
throws Exception
{
try
{
- BuildQueue buildQueueToBeEdited = buildQueueDao.getBuildQueue( this.buildQueue.getId() );
+ BuildQueue buildQueueToBeEdited = getContinuum().getBuildQueue( this.buildQueue.getId() );
}
- catch ( ContinuumStoreException e )
+ catch ( ContinuumException e )
{
addActionError( "Error retrieving build queue from the database : " + e.getMessage() );
return ERROR;
}
return SUCCESS;
}
-
+
public String delete()
throws Exception
{
try
{
- BuildQueue buildQueueToBeDeleted = buildQueueDao.getBuildQueue( this.buildQueue.getId() );
- buildQueueDao.removeBuildQueue( buildQueueToBeDeleted );
-
- getContinuum().getBuildsManager().removeOverallBuildQueue( buildQueueToBeDeleted.getId() );
-
- this.buildQueueList = buildQueueDao.getAllBuildQueues();
+ BuildQueue buildQueueToBeDeleted = getContinuum().getBuildQueue( this.buildQueue.getId() );
+ getContinuum().getBuildsManager().removeOverallBuildQueue( buildQueueToBeDeleted.getId() );
+ getContinuum().removeBuildQueue( buildQueueToBeDeleted );
+
+ this.buildQueueList = getContinuum().getAllBuildQueues();
}
catch ( BuildManagerException e )
{
addActionError( "Cannot delete overall build queue: " + e.getMessage() );
return ERROR;
}
- catch ( ContinuumStoreException e )
+ catch ( ContinuumException e )
{
addActionError( "Cannot delete build queue from the database: " + e.getMessage() );
return ERROR;
}
-
+
return SUCCESS;
}
- public String getName()
- {
- return name;
- }
-
- public void setName(String name)
- {
- this.name = name;
- }
-
- public List<BuildQueue> getBuildQueueList()
- {
- return buildQueueList;
- }
-
- public void setBuildQueueList(List<BuildQueue> buildQueueList)
- {
- this.buildQueueList = buildQueueList;
- }
-
- public BuildQueueDao getBuildQueueDao()
- {
- return buildQueueDao;
- }
-
- public void setBuildQueueDao(BuildQueueDao buildQueueDao)
- {
- this.buildQueueDao = buildQueueDao;
- }
-
- public int getSize()
- {
- return size;
- }
-
- public void setSize(int size)
- {
- this.size = size;
- }
-
- public BuildQueue getBuildQueue()
- {
- return buildQueue;
- }
-
- public void setBuildQueue(BuildQueue buildQueue)
- {
- this.buildQueue = buildQueue;
- }
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName( String name )
+ {
+ this.name = name;
+ }
+
+ public List<BuildQueue> getBuildQueueList()
+ {
+ return buildQueueList;
+ }
+
+ public void setBuildQueueList( List<BuildQueue> buildQueueList )
+ {
+ this.buildQueueList = buildQueueList;
+ }
+
+ public int getSize()
+ {
+ return size;
+ }
+
+ public void setSize( int size )
+ {
+ this.size = size;
+ }
+
+ public BuildQueue getBuildQueue()
+ {
+ return buildQueue;
+ }
+
+ public void setBuildQueue( BuildQueue buildQueue )
+ {
+ this.buildQueue = buildQueue;
+ }
}