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/15 00:10:17 UTC
svn commit: r726572 - in /continuum/branches/continuum-parallel-builds:
continuum-api/src/main/java/org/apache/continuum/dao/
continuum-api/src/main/java/org/apache/maven/continuum/configuration/
continuum-commons/src/main/java/org/apache/maven/continu...
Author: oching
Date: Sun Dec 14 15:10:16 2008
New Revision: 726572
URL: http://svn.apache.org/viewvc?rev=726572&view=rev
Log:
-fixed some test cases
-added BuildQueueDao
Added:
continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/dao/BuildQueueDao.java
continuum/branches/continuum-parallel-builds/continuum-store/src/main/java/org/apache/continuum/dao/BuildQueueDaoImpl.java
Modified:
continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java
continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java
continuum/branches/continuum-parallel-builds/continuum-commons/src/main/resources/META-INF/spring-context.xml
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-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
continuum/branches/continuum-parallel-builds/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java
Added: continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/dao/BuildQueueDao.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/dao/BuildQueueDao.java?rev=726572&view=auto
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/dao/BuildQueueDao.java (added)
+++ continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/dao/BuildQueueDao.java Sun Dec 14 15:10:16 2008
@@ -0,0 +1,49 @@
+package org.apache.continuum.dao;
+
+/*
+ * 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.List;
+
+import org.apache.maven.continuum.model.project.BuildQueue;
+import org.apache.maven.continuum.store.ContinuumStoreException;
+
+/**
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ */
+public interface BuildQueueDao
+{
+ BuildQueue addBuildQueue( BuildQueue buildQueue )
+ throws ContinuumStoreException;
+
+ BuildQueue getBuildQueue( int buildQueueId )
+ throws ContinuumStoreException;
+
+ BuildQueue getBuildQueueByName( String buildQueueName )
+ throws ContinuumStoreException;
+
+ void removeBuildQueue( BuildQueue buildQueue )
+ throws ContinuumStoreException;
+
+ BuildQueue storeBuildQueue( BuildQueue buildQueue )
+ throws ContinuumStoreException;
+
+ List<BuildQueue> getAllBuildQueues()
+ throws ContinuumStoreException;
+}
Modified: continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java?rev=726572&r1=726571&r2=726572&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java Sun Dec 14 15:10:16 2008
@@ -20,6 +20,7 @@
*/
import org.apache.continuum.configuration.ContinuumConfigurationException;
+import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.store.ContinuumStoreException;
@@ -34,6 +35,8 @@
String ROLE = ConfigurationService.class.getName();
public static final String DEFAULT_SCHEDULE_NAME = "DEFAULT_SCHEDULE";
+
+ public static final String DEFAULT_BUILD_QUEUE_NAME = "DEFAULT_BUILD_QUEUE";
// ----------------------------------------------------------------------
//
@@ -87,6 +90,9 @@
int getNumberOfBuildsInParallel();
void setNumberOfBuildsInParallel( int num );
+
+ BuildQueue getDefaultBuildQueue()
+ throws ContinuumStoreException;
// ----------------------------------------------------------------------
//
Modified: continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java?rev=726572&r1=726571&r2=726572&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java Sun Dec 14 15:10:16 2008
@@ -22,8 +22,10 @@
import org.apache.continuum.configuration.ContinuumConfiguration;
import org.apache.continuum.configuration.ContinuumConfigurationException;
import org.apache.continuum.configuration.GeneralConfiguration;
+import org.apache.continuum.dao.BuildQueueDao;
import org.apache.continuum.dao.ScheduleDao;
import org.apache.continuum.dao.SystemConfigurationDao;
+import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.model.system.SystemConfiguration;
import org.apache.maven.continuum.store.ContinuumStoreException;
@@ -44,7 +46,7 @@
{
private Logger log = LoggerFactory.getLogger( this.getClass() );
- // when adding requirement the template in application.xml must be updated CONTINUUM-1207
+ // when adding requirement the template in spring-context.xml must be updated CONTINUUM-1207
/**
* @plexus.configuration default-value="${plexus.home}"
@@ -60,6 +62,11 @@
* @plexus.requirement
*/
private SystemConfigurationDao systemConfigurationDao;
+
+ /**
+ * @plexus.requirement
+ */
+ private BuildQueueDao buildQueueDao;
/**
* @plexus.requirement
@@ -95,6 +102,16 @@
{
this.scheduleDao = scheduleDao;
}
+
+ public BuildQueueDao getBuildQueueDao()
+ {
+ return buildQueueDao;
+ }
+
+ public void setBuildQueueDao( BuildQueueDao buildQueueDao )
+ {
+ this.buildQueueDao = buildQueueDao;
+ }
public SystemConfigurationDao getSystemConfigurationDao()
{
@@ -390,7 +407,7 @@
{
generalConfiguration.setNumberOfBuildsInParallel( num );
}
-
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
@@ -495,13 +512,28 @@
return defaultSchedule;
}
-
+
+ public BuildQueue getDefaultBuildQueue()
+ throws ContinuumStoreException
+ {
+ BuildQueue defaultBuildQueue = buildQueueDao.getBuildQueueByName( DEFAULT_BUILD_QUEUE_NAME );
+
+ if ( defaultBuildQueue == null )
+ {
+ defaultBuildQueue = createDefaultBuildQueue();
+
+ defaultBuildQueue = buildQueueDao.addBuildQueue( defaultBuildQueue );
+ }
+
+ return defaultBuildQueue;
+ }
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
private Schedule createDefaultSchedule()
- throws ConfigurationLoadingException, ContinuumConfigurationException
+ throws ConfigurationLoadingException, ContinuumConfigurationException, ContinuumStoreException
{
log.info( "create Default Schedule" );
@@ -521,8 +553,22 @@
schedule.setCronExpression( systemConf.getDefaultScheduleCronExpression() );
schedule.setActive( true );
+
+ BuildQueue buildQueue = getDefaultBuildQueue();
+
+ schedule.addBuildQueue( buildQueue );
return schedule;
}
-
+
+ private BuildQueue createDefaultBuildQueue()
+ {
+ log.info( "create Default Build Queue" );
+
+ BuildQueue buildQueue = new BuildQueue();
+
+ buildQueue.setName( DEFAULT_BUILD_QUEUE_NAME );
+
+ return buildQueue;
+ }
}
Modified: continuum/branches/continuum-parallel-builds/continuum-commons/src/main/resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-commons/src/main/resources/META-INF/spring-context.xml?rev=726572&r1=726571&r2=726572&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-commons/src/main/resources/META-INF/spring-context.xml (original)
+++ continuum/branches/continuum-parallel-builds/continuum-commons/src/main/resources/META-INF/spring-context.xml Sun Dec 14 15:10:16 2008
@@ -29,6 +29,7 @@
<property name="scheduleDao" ref="scheduleDao"/>
<property name="systemConfigurationDao" ref="systemConfigurationDao"/>
<property name="configuration" ref="continuumConfiguration"/>
+ <property name="buildQueueDao" ref="buildQueueDao"/>
</bean>
<bean id="workingDirectoryService" class="org.apache.maven.continuum.utils.DefaultWorkingDirectoryService">
<property name="configurationService" ref="configurationService"/>
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=726572&r1=726571&r2=726572&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 Sun Dec 14 15:10:16 2008
@@ -29,6 +29,7 @@
import org.apache.continuum.dao.BuildDefinitionDao;
import org.apache.continuum.taskqueue.OverallBuildQueue;
import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.Project;
@@ -90,28 +91,12 @@
*/
private TaskQueue prepareBuildQueue;
- private PlexusContainer container;
-
- public ParallelBuildsManager()
- {
- /*synchronized( overallBuildQueues )
- {
- try
- {
- OverallBuildQueue defaultOverallBuildQueue = ( OverallBuildQueue ) container.lookup( OverallBuildQueue.class );
- defaultOverallBuildQueue.setId( 1 );
- defaultOverallBuildQueue.setName( "DEFAULT_BUILD_QUEUE" );
- }
- catch ( ComponentLookupException e )
- {
- log.error( "Cannot create default build queue: " + e.getMessage() );
- }
- }*/
- // - add a default OverallBuildQueue which cannot be deleted nor edited
- // - this default overall build queue must be used whenever no build queue is found or configured
- // NOTE: as a workaround for now.. just throw an exception when build or checkout is attempted without a
- // build queue configured
- }
+ /**
+ * @plexus.requirement
+ */
+ private ConfigurationService configurationService;
+
+ private PlexusContainer container;
// REQUIREMENTS:
// UI:
@@ -153,7 +138,10 @@
OverallBuildQueue overallBuildQueue =
getOverallBuildQueue( projectId, BUILD_QUEUE, buildDefinition.getSchedule().getBuildQueues() );
-
+
+ log.info( "\n+++++ project :: " + projectId );
+ log.info( "+++++overall build queue :: " + overallBuildQueue.getId() );
+
String buildDefinitionLabel = buildDefinition.getDescription();
if ( StringUtils.isEmpty( buildDefinitionLabel ) )
{
@@ -672,7 +660,14 @@
synchronized( overallBuildQueues )
{
- this.overallBuildQueues.put( overallBuildQueue.getId(), overallBuildQueue );
+ if( overallBuildQueues.get( overallBuildQueue.getId() ) == null )
+ {
+ this.overallBuildQueues.put( overallBuildQueue.getId(), overallBuildQueue );
+ }
+ else
+ {
+ log.warn( "Overall build queue already in the map" );
+ }
}
}
@@ -689,6 +684,11 @@
synchronized( overallBuildQueues )
{
OverallBuildQueue overallBuildQueue = overallBuildQueues.get( overallBuildQueueId );
+ if( overallBuildQueue.getName().equals( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME ) )
+ {
+ throw new BuildManagerException( "Cannot remove default build queue." );
+ }
+
try
{
tasks = overallBuildQueue.getProjectsInBuildQueue();
@@ -832,12 +832,14 @@
throw new BuildManagerException( "No build queues configured." );
}
+ System.out.println( "+++++build queues size : " + buildQueues.size() );
int size = 0;
int idx = 0;
try
{
for( BuildQueue buildQueue : buildQueues )
{
+ System.out.println( "+++++build queue id : " + buildQueue.getId() );
OverallBuildQueue overallBuildQueue = overallBuildQueues.get( buildQueue.getId() );
if( overallBuildQueue != null )
{
@@ -879,6 +881,7 @@
if( whereToBeQueued == null )
{
+ // TODO queue in the default overall build queue
throw new BuildManagerException( "No build queue found." );
}
@@ -892,8 +895,31 @@
public void contextualize( Context context )
throws ContextException
- {
+ {
container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
+
+ synchronized( overallBuildQueues )
+ {
+ try
+ {
+ BuildQueue defaultBuildQueue = configurationService.getDefaultBuildQueue();
+
+ OverallBuildQueue defaultOverallBuildQueue = ( OverallBuildQueue ) container.lookup( OverallBuildQueue.class );
+ defaultOverallBuildQueue.setId( defaultBuildQueue.getId() );
+ defaultOverallBuildQueue.setName( defaultBuildQueue.getName() );
+ defaultOverallBuildQueue.setContainer( container );
+
+ overallBuildQueues.put( defaultOverallBuildQueue.getId(), defaultOverallBuildQueue );
+ }
+ catch ( ComponentLookupException e )
+ {
+ log.error( "Cannot add default build queue: " + e.getMessage() );
+ }
+ catch ( ContinuumStoreException e )
+ {
+ log.error( "Cannot add default build queue: " + e.getMessage() );
+ }
+ }
}
public void setContainer( PlexusContainer container )
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=726572&r1=726571&r2=726572&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 Sun Dec 14 15:10:16 2008
@@ -1478,6 +1478,9 @@
context.put( AbstractContinuumAction.KEY_UNVALIDATED_PROJECT_GROUP, projectGroup );
context.put( AbstractContinuumAction.KEY_PROJECT_GROUP_ID, new Integer( projectGroup.getId() ) );
+
+ // used by BuildManager to determine on which build queue will the project be put
+ context.put( AbstractContinuumAction.KEY_BUILD_DEFINITION, ( BuildDefinition ) project.getBuildDefinitions().get( 0 ) );
executeAction( "validate-project", context );
@@ -1705,6 +1708,20 @@
// olamy : read again the project to have values because store.updateProjectGroup( projectGroup );
// remove object data -> we don't display the project name in the build queue
context.put( AbstractContinuumAction.KEY_PROJECT, projectDao.getProject( project.getId() ) );
+
+ BuildDefinition defaultBuildDefinition = null;
+ if( projectBuilderId.equals( MavenTwoContinuumProjectBuilder.ID ) )
+ {
+ defaultBuildDefinition = ( BuildDefinition ) buildDefinitionService.getDefaultMavenTwoBuildDefinitionTemplate().getBuildDefinitions().get( 0 );
+ }
+ else if( projectBuilderId.equals( MavenOneContinuumProjectBuilder.ID ) )
+ {
+ defaultBuildDefinition = ( BuildDefinition ) buildDefinitionService.getDefaultMavenOneBuildDefinitionTemplate().getBuildDefinitions().get( 0 );
+ }
+
+ // used by BuildManager to determine on which build queue will the project be put
+ context.put( AbstractContinuumAction.KEY_BUILD_DEFINITION, defaultBuildDefinition );
+
executeAction( "add-project-to-checkout-queue", context );
}
}
@@ -1712,6 +1729,10 @@
{
throw new ContinuumException( "Error adding projects from modules", e );
}
+ catch ( BuildDefinitionServiceException e )
+ {
+ throw new ContinuumException( "Error adding projects from modules", e );
+ }
context.put( AbstractContinuumAction.KEY_PROJECT_GROUP_ID, new Integer( projectGroup.getId() ) );
// add the relevent security administration roles for this project
Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java?rev=726572&r1=726571&r2=726572&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java Sun Dec 14 15:10:16 2008
@@ -27,6 +27,7 @@
import org.apache.continuum.dao.BuildDefinitionDao;
import org.apache.continuum.taskqueue.OverallBuildQueue;
+import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.model.project.BuildDefinition;
import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.Project;
@@ -35,6 +36,8 @@
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit3.JUnit3Mockery;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
*
@@ -100,7 +103,7 @@
private void setupOverallBuildQueues()
{
- for( int i = 1; i <= 5; i++ )
+ for( int i = 2; i <= 5; i++ )
{
OverallBuildQueue overallBuildQueue = ( OverallBuildQueue ) lookup( OverallBuildQueue.class );
overallBuildQueue.setId( i );
@@ -140,7 +143,7 @@
assertNotNull( whereBuildIsQueued );
assertEquals( 1, whereBuildIsQueued.getId() );
- assertEquals( "BUILD_QUEUE_1", whereBuildIsQueued.getName() );
+ assertEquals( ConfigurationService.DEFAULT_BUILD_QUEUE_NAME, whereBuildIsQueued.getName() );
// verify that other build queues are not used
assertFalse( overallBuildQueues.get( 2 ).isInBuildQueue( 1 ) );
@@ -537,9 +540,23 @@
}*/
- public void testRemoveOverallBuildQueue()
+ public void testRemoveDefaultOverallBuildQueue()
throws Exception
{
+ try
+ {
+ buildsManager.removeOverallBuildQueue( 1 );
+ fail( "An exception should have been thrown." );
+ }
+ catch ( BuildManagerException e )
+ {
+ assertEquals( "Cannot remove default build queue.", e.getMessage() );
+ }
+ }
+
+ public void testRemoveOverallBuildQueue()
+ throws Exception
+ {
// queued tasks (both checkout & build tasks) must be transferred to the other queues!
setupOverallBuildQueues();
assertEquals( 5, buildsManager.getOverallBuildQueues().size() );
@@ -596,15 +613,15 @@
context.checking( new Expectations()
{
{
- one( buildDefinitionDao ).getDefaultBuildDefinition( 6 );
+ one( buildDefinitionDao ).getDefaultBuildDefinition( 7 );
will( returnValue( buildDefinition ) );
- one( buildDefinitionDao ).getDefaultBuildDefinition( 9 );
+ one( buildDefinitionDao ).getDefaultBuildDefinition( 10 );
will( returnValue( buildDefinition ) );
}
} );
- buildsManager.removeOverallBuildQueue( 1 );
+ buildsManager.removeOverallBuildQueue( 2 );
// verify
context.assertIsSatisfied();
@@ -613,21 +630,24 @@
assertEquals( 4, overallBuildQueues.size() );
// checkout queues
- assertNull( overallBuildQueues.get( 1 ) );
- assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 7 ) );
+ assertNull( overallBuildQueues.get( 2 ) );
+ assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 6 ) );
+ assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 7 ) );
assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 8 ) );
- assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 10 ) );
- assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 6 ) );
- assertTrue( overallBuildQueues.get( 2 ).isInCheckoutQueue( 9 ) );
+ assertTrue( overallBuildQueues.get( 1 ).isInCheckoutQueue( 9 ) );
+ // shouldn't this be queued in build queue #1?
+ assertTrue( overallBuildQueues.get( 3 ).isInCheckoutQueue( 10 ) );
- // build queues
- assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 2 ) );
- assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 3 ) );
- assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 5 ) );
- assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 1 ) );
- assertTrue( overallBuildQueues.get( 2 ).isInBuildQueue( 4 ) );
+ // build queues
+ assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 1 ) );
+ assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 2 ) );
+ assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 3 ) );
+ assertTrue( overallBuildQueues.get( 1 ).isInBuildQueue( 4 ) );
+ // shouldn't this be queued in build queue #1?
+ assertTrue( overallBuildQueues.get( 3 ).isInBuildQueue( 5 ) );
}
+ // TODO use the default build queue instead!
public void testNoBuildQueuesConfigured()
throws Exception
{
Added: continuum/branches/continuum-parallel-builds/continuum-store/src/main/java/org/apache/continuum/dao/BuildQueueDaoImpl.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-store/src/main/java/org/apache/continuum/dao/BuildQueueDaoImpl.java?rev=726572&view=auto
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-store/src/main/java/org/apache/continuum/dao/BuildQueueDaoImpl.java (added)
+++ continuum/branches/continuum-parallel-builds/continuum-store/src/main/java/org/apache/continuum/dao/BuildQueueDaoImpl.java Sun Dec 14 15:10:16 2008
@@ -0,0 +1,141 @@
+package org.apache.continuum.dao;
+
+/*
+ * 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.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import javax.jdo.Extent;
+import javax.jdo.PersistenceManager;
+import javax.jdo.Query;
+import javax.jdo.Transaction;
+
+import org.apache.maven.continuum.model.project.BuildQueue;
+import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ * @plexus.component role="org.apache.continuum.dao.BuildQueueDao"
+ */
+public class BuildQueueDaoImpl
+ extends AbstractDao
+ implements BuildQueueDao
+{
+ private static Logger log = LoggerFactory.getLogger( BuildQueueDaoImpl.class );
+
+ public BuildQueue addBuildQueue( BuildQueue buildQueue )
+ throws ContinuumStoreException
+ {
+ return (BuildQueue) addObject( buildQueue );
+ }
+
+ public List<BuildQueue> getAllBuildQueues()
+ throws ContinuumStoreException
+ {
+ PersistenceManager pm = getPersistenceManager();
+
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Extent extent = pm.getExtent( BuildQueue.class, true );
+
+ Query query = pm.newQuery( extent );
+
+ List result = (List) query.execute();
+
+ return result == null ? Collections.EMPTY_LIST : (List<BuildQueue>) pm.detachCopyAll( result );
+ }
+ finally
+ {
+ tx.commit();
+
+ rollback( tx );
+ }
+ }
+
+ public BuildQueue getBuildQueue( int buildQueueId )
+ throws ContinuumStoreException
+ {
+ return (BuildQueue) getObjectById( BuildQueue.class, buildQueueId );
+ }
+
+ public BuildQueue getBuildQueueByName( String name )
+ throws ContinuumStoreException
+ {
+ PersistenceManager pm = getPersistenceManager();
+
+ Transaction tx = pm.currentTransaction();
+
+ try
+ {
+ tx.begin();
+
+ Extent extent = pm.getExtent( BuildQueue.class, true );
+
+ Query query = pm.newQuery( extent );
+
+ query.declareImports( "import java.lang.String" );
+
+ query.declareParameters( "String name" );
+
+ query.setFilter( "this.name == name" );
+
+ Collection result = (Collection) query.execute( name );
+
+ if ( result.size() == 0 )
+ {
+ tx.commit();
+
+ return null;
+ }
+
+ Object object = pm.detachCopy( result.iterator().next() );
+
+ tx.commit();
+
+ return (BuildQueue) object;
+ }
+ finally
+ {
+ rollback( tx );
+ }
+ }
+
+ public void removeBuildQueue( BuildQueue buildQueue )
+ throws ContinuumStoreException
+ {
+ removeObject( buildQueue );
+ }
+
+ public BuildQueue storeBuildQueue( BuildQueue buildQueue )
+ throws ContinuumStoreException
+ {
+ updateObject( buildQueue );
+
+ return buildQueue;
+ }
+}
Modified: continuum/branches/continuum-parallel-builds/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java?rev=726572&r1=726571&r2=726572&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java Sun Dec 14 15:10:16 2008
@@ -19,6 +19,7 @@
* under the License.
*/
+import org.apache.maven.continuum.model.project.BuildQueue;
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.store.ContinuumStoreException;
@@ -188,6 +189,12 @@
{
}
+ public BuildQueue getDefaultBuildQueue()
+ throws ContinuumStoreException
+ {
+ return null;
+ }
+
public Schedule getDefaultSchedule()
throws ContinuumStoreException
{