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 2009/01/14 17:46:47 UTC

svn commit: r734441 [2/3] - in /continuum/trunk: ./ continuum-api/src/main/java/org/apache/continuum/builder/ continuum-api/src/main/java/org/apache/continuum/builder/distributed/ continuum-api/src/main/java/org/apache/continuum/builder/distributed/man...

Propchange: continuum/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 14 08:31:04 2009
@@ -1 +1,2 @@
 /continuum/branches/continuum-1.2.x:690684,690689-690799,698449-698533,698817-698819,699529,700250,700273,700936,705894,705910,708339,722279,722624,723119,723487,724016,724024,725845,726103,726239,726462
+/continuum/branches/continuum-distributed-builds:713270-734307

Modified: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java Wed Jan 14 08:31:04 2009
@@ -71,7 +71,8 @@
      * @param scmRootAddress TODO
      * @throws BuildManagerException
      */
-    void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger, int projectGroupId, String scmRootAddress )
+    void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger, int projectGroupId, 
+                               String projectGroupName, String scmRootAddress, int scmRootId )
         throws BuildManagerException;
 
     /**

Copied: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/BuildAgentConfiguration.java (from r734307, continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/configuration/BuildAgentConfiguration.java)
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/BuildAgentConfiguration.java?p2=continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/BuildAgentConfiguration.java&p1=continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/configuration/BuildAgentConfiguration.java&r1=734307&r2=734441&rev=734441&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/configuration/BuildAgentConfiguration.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/BuildAgentConfiguration.java Wed Jan 14 08:31:04 2009
@@ -1,5 +1,24 @@
 package org.apache.continuum.configuration;
 
+/*
+ * 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.
+ */
+
 public class BuildAgentConfiguration
 {
     private String url;

Modified: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/GeneralConfiguration.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/GeneralConfiguration.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/GeneralConfiguration.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/configuration/GeneralConfiguration.java Wed Jan 14 08:31:04 2009
@@ -22,6 +22,7 @@
 import org.apache.commons.lang.builder.ReflectionToStringBuilder;
 
 import java.io.File;
+import java.util.List;
 
 /**
  * @author <a href="mailto:olamy@apache.org">olamy</a>
@@ -44,6 +45,8 @@
     
     private int numberOfBuildsInParallel = 1;
 
+    private List<BuildAgentConfiguration> buildAgents;
+
     public GeneralConfiguration()
     {
         // nothing here
@@ -124,4 +127,14 @@
     {
         this.numberOfBuildsInParallel = numberOfBuildsInParallel;
     }
+
+    public List<BuildAgentConfiguration> getBuildAgents()
+    {
+        return buildAgents;
+    }
+
+    public void setBuildAgents( List<BuildAgentConfiguration> buildAgents )
+    {
+        this.buildAgents = buildAgents;
+    }
 }

Modified: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java Wed Jan 14 08:31:04 2009
@@ -79,4 +79,7 @@
 
     ProjectGroup getProjectGroupByProjectId( int projectId )
         throws ContinuumObjectNotFoundException;
+
+    Project getProjectWithDependencies( int projectId )
+        throws ContinuumStoreException;
 }

Modified: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java Wed Jan 14 08:31:04 2009
@@ -19,17 +19,28 @@
  * under the License.
  */
 
+import java.util.List;
+
+import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
 import org.codehaus.plexus.taskqueue.TaskQueue;;
 
 /**
  * @author <a href="mailto:ctan@apache.org">Maria Catherine Tan</a>
  */
 public interface TaskQueueManager
-{            
+{
     String ROLE = TaskQueueManager.class.getName();
-    
+
+    TaskQueue getDistributedBuildQueue();
+
+    List<PrepareBuildProjectsTask> getDistributedBuildProjectsInQueue()
+        throws TaskQueueManagerException;
+
     TaskQueue getPurgeQueue();
 
+    boolean isInDistributedBuildQueue( int projectGroupId, String scmRootAddress )
+        throws TaskQueueManagerException;
+
     boolean isInPurgeQueue( int purgeConfigurationId )
         throws TaskQueueManagerException;
 
@@ -65,7 +76,10 @@
     
     boolean releaseInProgress()
         throws TaskQueueManagerException;
-    
+
+    boolean removeFromDistributedBuildQueue( int projectGroupId, String scmRootAddress )
+        throws TaskQueueManagerException;
+  
     /**
      * Remove local repository from the purge queue
      * 
@@ -94,4 +108,7 @@
      */
     void removeRepositoryFromPurgeQueue( int repositoryId )
         throws TaskQueueManagerException;
+
+    void removeTasksFromDistributedBuildQueueWithHashCodes( int[] hashCodes )
+        throws TaskQueueManagerException;
 }

Modified: continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Wed Jan 14 08:31:04 2009
@@ -625,6 +625,9 @@
     ProjectScmRoot getProjectScmRootByProject( int projectId )
         throws ContinuumException;
 
+    ProjectScmRoot getProjectScmRootByProjectGroupAndScmRootAddress( int projectGroupId, String scmRootAddress )
+        throws ContinuumException;
+
     // ----------------------------------------------------------------------
     // Task Queue Manager
     // ----------------------------------------------------------------------

Modified: continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/maven/continuum/configuration/ConfigurationService.java Wed Jan 14 08:31:04 2009
@@ -20,12 +20,14 @@
  */
 
 import org.apache.continuum.buildqueue.BuildQueueServiceException;
+import org.apache.continuum.configuration.BuildAgentConfiguration;
 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;
 
 import java.io.File;
+import java.util.List;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -36,7 +38,7 @@
     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";
 
     // ----------------------------------------------------------------------
@@ -95,6 +97,19 @@
     BuildQueue getDefaultBuildQueue()
         throws BuildQueueServiceException;
 
+    List<BuildAgentConfiguration> getBuildAgents();
+
+    void addBuildAgent( BuildAgentConfiguration buildAgent )
+        throws ConfigurationException;
+
+    void removeBuildAgent( BuildAgentConfiguration buildAgent );
+
+    void updateBuildAgent( BuildAgentConfiguration buildAgent );
+
+    boolean isDistributedBuildEnabled();
+
+    void setDistributedBuildEnabled( boolean distributedBuildEnabled );
+
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------

Modified: continuum/trunk/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java (original)
+++ continuum/trunk/continuum-base/continuum-configuration/src/main/java/org/apache/continuum/configuration/DefaultContinuumConfiguration.java Wed Jan 14 08:31:04 2009
@@ -24,6 +24,8 @@
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.continuum.configuration.model.ContinuumConfigurationModel;
@@ -41,13 +43,13 @@
  */
 public class DefaultContinuumConfiguration
     implements ContinuumConfiguration
-{ 
+{
     private Logger log = LoggerFactory.getLogger( getClass() );
 
     private File configurationFile;
 
     private GeneralConfiguration generalConfiguration;
-    
+
     public static final String CONFIGURATION_FILE = "continuum.xml";
 
     //----------------------------------------------------
@@ -120,7 +122,7 @@
                 .read( new InputStreamReader( new FileInputStream( file ) ) );
 
             this.generalConfiguration = new GeneralConfiguration();
-            
+
             this.generalConfiguration.setNumberOfBuildsInParallel( configuration.getNumberOfBuildsInParallel() );
             this.generalConfiguration.setBaseUrl( configuration.getBaseUrl() );
             if ( StringUtils.isNotEmpty( configuration.getBuildOutputDirectory() ) )
@@ -154,7 +156,21 @@
                 this.generalConfiguration.setReleaseOutputDirectory( new File( configuration
                     .getReleaseOutputDirectory() ) );
             }
-            
+            if ( configuration.getBuildAgents() != null )
+            {
+                List<BuildAgentConfiguration> buildAgents = new ArrayList<BuildAgentConfiguration>();
+
+                List<org.apache.continuum.configuration.model.BuildAgentConfiguration> agents = configuration.getBuildAgents();
+                for ( org.apache.continuum.configuration.model.BuildAgentConfiguration agent : agents )
+                {
+                    BuildAgentConfiguration buildAgent = new BuildAgentConfiguration( agent.getUrl(),
+                                                                                      agent.getDescription(),
+                                                                                      agent.isEnabled() );
+                    buildAgents.add( buildAgent );
+                }
+                
+                this.generalConfiguration.setBuildAgents( buildAgents );
+            }
         }
         catch ( IOException e )
         {
@@ -177,14 +193,13 @@
             ContinuumConfigurationModel configurationModel = new ContinuumConfigurationModel();
             configurationModel.setBaseUrl( this.generalConfiguration.getBaseUrl() );
             configurationModel.setNumberOfBuildsInParallel( this.generalConfiguration.getNumberOfBuildsInParallel() );
-                        
+
             // normally not null but NPE free is better !
             if ( this.generalConfiguration.getBuildOutputDirectory() != null )
             {
                 configurationModel.setBuildOutputDirectory( this.generalConfiguration.getBuildOutputDirectory()
-                    .getPath() );                
+                    .getPath() );
             }
-                        
             if ( this.generalConfiguration.getWorkingDirectory() != null )
             {
                 configurationModel.setWorkingDirectory( this.generalConfiguration.getWorkingDirectory().getPath() );
@@ -217,7 +232,23 @@
                 configurationModel.setReleaseOutputDirectory( this.generalConfiguration.getReleaseOutputDirectory()
                     .getPath() );
             }
-            
+            if ( this.generalConfiguration.getBuildAgents() != null )
+            {
+                List buildAgents = new ArrayList();
+
+                for ( BuildAgentConfiguration agent : this.generalConfiguration.getBuildAgents() )
+                {
+                    org.apache.continuum.configuration.model.BuildAgentConfiguration buildAgent = 
+                        new org.apache.continuum.configuration.model.BuildAgentConfiguration();
+                    buildAgent.setUrl( agent.getUrl() );
+                    buildAgent.setDescription( agent.getDescription() );
+                    buildAgent.setEnabled( agent.isEnabled() );
+                    
+                    buildAgents.add( buildAgent );
+                }
+                configurationModel.setBuildAgents( buildAgents );
+            }
+
             ContinuumConfigurationModelXpp3Writer writer = new ContinuumConfigurationModelXpp3Writer();
             FileWriter fileWriter = new FileWriter( file );
             writer.write( fileWriter, configurationModel );
@@ -234,7 +265,7 @@
     //  Spring injection
     // ----------------------------------------
 
-    
+
     public File getConfigurationFile()
     {
         return configurationFile;

Modified: continuum/trunk/continuum-base/continuum-configuration/src/main/mdo/continuum-configuration.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-configuration/src/main/mdo/continuum-configuration.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-configuration/src/main/mdo/continuum-configuration.xml (original)
+++ continuum/trunk/continuum-base/continuum-configuration/src/main/mdo/continuum-configuration.xml Wed Jan 14 08:31:04 2009
@@ -65,12 +65,20 @@
           <name>releaseOutputDirectory</name>
           <version>1.1.0+</version>
           <type>String</type>
-        </field>    
+        </field>
         <field>
           <name>numberOfBuildsInParallel</name>
           <version>1.1.0+</version>
           <type>int</type>
-        </field>            
+        </field>
+        <field>
+          <name>buildAgents</name>
+          <version>1.1.0+</version>
+          <association>
+            <type>BuildAgentConfiguration</type>
+            <multiplicity>*</multiplicity>
+          </association>
+        </field>
       </fields>
     </class>
     <class xml.tagName="proxy-configuration">
@@ -98,6 +106,27 @@
           <type>String</type>
         </field>                     
       </fields>
+    </class>
+    <class xml.tagName="buildagent-configuration">
+      <name>BuildAgentConfiguration</name>
+      <version>1.1.0+</version>
+      <fields>
+        <field>
+          <name>url</name>
+          <version>1.1.0+</version>
+          <type>String</type>
+        </field>
+        <field>
+          <name>description</name>
+          <version>1.1.0+</version>
+          <type>String</type>
+        </field>
+        <field>
+          <name>enabled</name>
+          <version>1.1.0+</version>
+          <type>boolean</type>
+        </field>
+      </fields>
     </class>    
   </classes>
 </model>

Modified: continuum/trunk/continuum-base/continuum-configuration/src/test/java/org/apache/continuum/configuration/TestDefaultContinuumConfiguration.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-configuration/src/test/java/org/apache/continuum/configuration/TestDefaultContinuumConfiguration.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-configuration/src/test/java/org/apache/continuum/configuration/TestDefaultContinuumConfiguration.java (original)
+++ continuum/trunk/continuum-base/continuum-configuration/src/test/java/org/apache/continuum/configuration/TestDefaultContinuumConfiguration.java Wed Jan 14 08:31:04 2009
@@ -25,6 +25,8 @@
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author <a href="mailto:olamy@apache.org">olamy</a>
@@ -67,6 +69,11 @@
         assertNotNull( generalConfiguration.getBaseUrl() );
         assertEquals( "http://test", generalConfiguration.getBaseUrl() );
         assertEquals( new File( "myBuildOutputDir" ), generalConfiguration.getBuildOutputDirectory() );
+        assertNotNull( generalConfiguration.getBuildAgents() );
+        org.apache.continuum.configuration.BuildAgentConfiguration buildAgentConfig = generalConfiguration.getBuildAgents().get( 0 );
+        assertEquals( "http://buildagent/xmlrpc", buildAgentConfig.getUrl() );
+        assertEquals( "linux", buildAgentConfig.getDescription() );
+        assertTrue( buildAgentConfig.isEnabled() );
     }
 
     public void testDefaultConfiguration()
@@ -87,6 +94,13 @@
         generalConfiguration.getProxyConfiguration().setProxyPort( 8080 );
         File targetDir = new File(getBasedir(), "target");
         generalConfiguration.setBuildOutputDirectory( targetDir );
+        BuildAgentConfiguration buildAgentConfiguration = new BuildAgentConfiguration();
+        buildAgentConfiguration.setUrl( "http://buildagent/test" );
+        buildAgentConfiguration.setDescription( "windows xp" );
+        buildAgentConfiguration.setEnabled( false );
+        List<BuildAgentConfiguration> buildAgents = new ArrayList<BuildAgentConfiguration>();
+        buildAgents.add( buildAgentConfiguration );
+        generalConfiguration.setBuildAgents( buildAgents );
         configuration.setGeneralConfiguration( generalConfiguration );
         configuration.save();
 
@@ -94,12 +108,16 @@
         assertTrue( contents.indexOf( "http://test/zloug" ) > 0 );
         assertTrue( contents.indexOf( "localhost" ) > 0 );
         assertTrue( contents.indexOf( "8080" ) > 0 );
-
+        assertTrue( contents.indexOf( "http://buildagent/test" ) > 0 );
+        assertTrue( contents.indexOf( "windows xp" ) > 0 );
+        
         configuration.reload();
         assertEquals( "http://test/zloug", configuration.getGeneralConfiguration().getBaseUrl() );
         assertEquals( "localhost", configuration.getGeneralConfiguration().getProxyConfiguration().getProxyHost() );
         assertEquals( 8080, configuration.getGeneralConfiguration().getProxyConfiguration().getProxyPort() );
         assertEquals(targetDir.getPath(), configuration.getGeneralConfiguration().getBuildOutputDirectory().getPath());
+        assertEquals( "http://buildagent/test", configuration.getGeneralConfiguration().getBuildAgents().get( 0 ).getUrl() );
+        assertFalse( configuration.getGeneralConfiguration().getBuildAgents().get( 0 ).isEnabled() );
         log.info( "generalConfiguration " + configuration.getGeneralConfiguration().toString() );
     }
 }

Modified: continuum/trunk/continuum-base/continuum-configuration/src/test/resources/conf/continuum.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-base/continuum-configuration/src/test/resources/conf/continuum.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-base/continuum-configuration/src/test/resources/conf/continuum.xml (original)
+++ continuum/trunk/continuum-base/continuum-configuration/src/test/resources/conf/continuum.xml Wed Jan 14 08:31:04 2009
@@ -2,4 +2,11 @@
 <continuum-configuration>
   <baseUrl>http://test</baseUrl>
   <buildOutputDirectory>myBuildOutputDir</buildOutputDirectory>
+  <buildAgents>
+    <buildAgent>
+      <url>http://buildagent/xmlrpc</url>
+      <description>linux</description>
+      <enabled>true</enabled>
+    </buildAgent>
+  </buildAgents>
 </continuum-configuration>
\ No newline at end of file

Propchange: continuum/trunk/continuum-builder/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,5 @@
+.settings
+build
+target
+.classpath
+.project

Modified: continuum/trunk/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java (original)
+++ continuum/trunk/continuum-commons/src/main/java/org/apache/maven/continuum/configuration/DefaultConfigurationService.java Wed Jan 14 08:31:04 2009
@@ -21,6 +21,7 @@
 
 import org.apache.continuum.buildqueue.BuildQueueService;
 import org.apache.continuum.buildqueue.BuildQueueServiceException;
+import org.apache.continuum.configuration.BuildAgentConfiguration;
 import org.apache.continuum.configuration.ContinuumConfiguration;
 import org.apache.continuum.configuration.ContinuumConfigurationException;
 import org.apache.continuum.configuration.GeneralConfiguration;
@@ -37,6 +38,8 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.annotation.Resource;
 
@@ -287,6 +290,77 @@
         generalConfiguration.setReleaseOutputDirectory( f );
     }
 
+    public List<BuildAgentConfiguration> getBuildAgents()
+    {
+        return generalConfiguration.getBuildAgents();
+    }
+
+    public void addBuildAgent( BuildAgentConfiguration buildAgent )
+        throws ConfigurationException
+    {
+        List<BuildAgentConfiguration> buildAgents = generalConfiguration.getBuildAgents();
+        if ( buildAgents == null )
+        {
+            buildAgents = new ArrayList<BuildAgentConfiguration>();
+        }
+
+        for ( BuildAgentConfiguration agent : buildAgents )
+        {
+            if ( agent.getUrl().equals( buildAgent.getUrl() ) )
+            {
+                throw new ConfigurationException( "Unable to add build agent: build agent already exist" );
+            }
+        }
+
+        buildAgents.add( buildAgent );
+        generalConfiguration.setBuildAgents( buildAgents );
+    }
+
+    public void removeBuildAgent( BuildAgentConfiguration buildAgent )
+    {
+        List<BuildAgentConfiguration> buildAgents = getBuildAgents();
+        if ( buildAgents != null )
+        {
+            for ( BuildAgentConfiguration agent : buildAgents )
+            {
+                if ( agent.getUrl().equals( buildAgent.getUrl() ) )
+                {
+                    buildAgents.remove( agent );
+                    break;
+                }
+            }
+            generalConfiguration.setBuildAgents( buildAgents );
+        }
+    }
+
+    public void updateBuildAgent( BuildAgentConfiguration buildAgent )
+    {
+        List<BuildAgentConfiguration> buildAgents = getBuildAgents();
+        if ( buildAgents != null )
+        {
+            for ( BuildAgentConfiguration agent : buildAgents )
+            {
+                if ( agent.getUrl().equals( buildAgent.getUrl() ) )
+                {
+                    agent.setDescription( buildAgent.getDescription() );
+                    agent.setEnabled( buildAgent.isEnabled() );
+                    
+                    return;
+                }
+            }
+        }
+    }
+
+    public boolean isDistributedBuildEnabled()
+    {
+        return systemConf.isDistributedBuildEnabled();
+    }
+
+    public void setDistributedBuildEnabled( boolean distributedBuildEnabled )
+    {
+        systemConf.setDistributedBuildEnabled( distributedBuildEnabled );
+    }
+
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------

Modified: continuum/trunk/continuum-commons/src/test/java/org/apache/maven/continuum/configuration/ConfigurationServiceTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-commons/src/test/java/org/apache/maven/continuum/configuration/ConfigurationServiceTest.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-commons/src/test/java/org/apache/maven/continuum/configuration/ConfigurationServiceTest.java (original)
+++ continuum/trunk/continuum-commons/src/test/java/org/apache/maven/continuum/configuration/ConfigurationServiceTest.java Wed Jan 14 08:31:04 2009
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.continuum.configuration.BuildAgentConfiguration;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.plexus.util.FileUtils;
 import org.slf4j.Logger;
@@ -88,9 +89,14 @@
 
 //        assertEquals( "working-directory", service.getWorkingDirectory().getName() );
 
+        assertEquals( "check # build agents", 1, service.getBuildAgents().size() );
+        
         service.setUrl( "http://test/zloug" );
         service.setBuildOutputDirectory( new File( "testBuildOutputDir" ) );
 
+        BuildAgentConfiguration buildAgent = new BuildAgentConfiguration( "http://test/xmlrpc", "windows", false );
+        service.addBuildAgent( buildAgent );
+
         service.store();
 
         String contents = FileUtils.fileRead( conf );
@@ -99,5 +105,19 @@
         service.reload();
 
         assertEquals( "http://test/zloug", service.getUrl() );
+        assertEquals( "check # build agents", 2, service.getBuildAgents().size() );        
+        assertEquals( "http://test/xmlrpc", service.getBuildAgents().get( 1 ).getUrl() );
+        assertEquals( "windows", service.getBuildAgents().get( 1 ).getDescription() );
+        assertFalse( service.getBuildAgents().get( 1 ).isEnabled() );
+
+        assertEquals( "http://test/xmlrpc", buildAgent.getUrl() );
+        service.removeBuildAgent( buildAgent );
+        service.store();
+        service.reload();
+
+        assertEquals( "check # build agents", 1, service.getBuildAgents().size() );
+        assertEquals( "http://buildagent/xmlrpc", service.getBuildAgents().get( 0 ).getUrl() );
+        assertEquals( "linux", service.getBuildAgents().get( 0 ).getDescription() );
+        assertTrue( service.getBuildAgents().get( 0 ).isEnabled() );
     }
 }

Modified: continuum/trunk/continuum-commons/src/test/resources/conf/continuum.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-commons/src/test/resources/conf/continuum.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-commons/src/test/resources/conf/continuum.xml (original)
+++ continuum/trunk/continuum-commons/src/test/resources/conf/continuum.xml Wed Jan 14 08:31:04 2009
@@ -2,4 +2,12 @@
 <continuum-configuration>
   <baseUrl>http://test</baseUrl>
   <buildOutputDirectory>target/myBuildOutputDir</buildOutputDirectory>
+  <buildAgents>
+    <buildAgent>
+      <url>http://buildagent/xmlrpc</url>
+      <description>linux</description>
+      <enabled>true</enabled>
+    </buildAgent>
+  </buildAgents>
+  <distributedBuildEnabled>true</distributedBuildEnabled>
 </continuum-configuration>
\ No newline at end of file

Modified: continuum/trunk/continuum-core/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/pom.xml (original)
+++ continuum/trunk/continuum-core/pom.xml Wed Jan 14 08:31:04 2009
@@ -176,6 +176,10 @@
       <artifactId>mail</artifactId>
       <version>1.4</version>
       <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.continuum</groupId>
+      <artifactId>continuum-builder</artifactId>
     </dependency>    
     <!-- === Testing Dependencies === -->
     <dependency>

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java Wed Jan 14 08:31:04 2009
@@ -31,15 +31,15 @@
 import org.apache.continuum.buildqueue.BuildQueueService;
 import org.apache.continuum.buildqueue.BuildQueueServiceException;
 import org.apache.continuum.dao.BuildDefinitionDao;
+import org.apache.continuum.taskqueue.CheckOutTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.apache.continuum.taskqueue.OverallBuildQueue;
+import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
 import org.apache.continuum.taskqueueexecutor.ParallelBuildsThreadedTaskQueueExecutor;
-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;
-import org.apache.maven.continuum.scm.queue.CheckOutTask;
-import org.apache.maven.continuum.scm.queue.PrepareBuildProjectsTask;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
@@ -531,13 +531,13 @@
     /**
      * @see BuildsManager#prepareBuildProjects(Map, int, int, String)
      */
-    public void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger, int projectGroupId, String scmRootAddress )
+    public void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger, int projectGroupId, String projectGroupName, String scmRootAddress, int scmRootId )
         throws BuildManagerException
     {
         try
         {            
             PrepareBuildProjectsTask task =
-                new PrepareBuildProjectsTask( projectsBuildDefinitionsMap, trigger, projectGroupId, scmRootAddress );
+                new PrepareBuildProjectsTask( projectsBuildDefinitionsMap, trigger, projectGroupId, projectGroupName, scmRootAddress, scmRootId );
             
             log.info( "Queueing prepare-build-project task '" + task + "' to prepare-build queue." );
             prepareBuildQueue.put( task );

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueue.java Wed Jan 14 08:31:04 2009
@@ -27,9 +27,9 @@
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.continuum.dao.BuildDefinitionDao;
 import org.apache.continuum.taskqueueexecutor.ParallelBuildsThreadedTaskQueueExecutor;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.CheckOutTask;
 import org.apache.maven.continuum.model.project.BuildDefinition;
-import org.apache.maven.continuum.scm.queue.CheckOutTask;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 import org.codehaus.plexus.taskqueue.Task;
 import org.codehaus.plexus.taskqueue.TaskQueue;

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java Wed Jan 14 08:31:04 2009
@@ -32,7 +32,8 @@
 import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
 import org.apache.continuum.purge.PurgeConfigurationService;
 import org.apache.continuum.purge.task.PurgeTask;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
 import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.release.tasks.PerformReleaseProjectTask;
 import org.apache.maven.continuum.release.tasks.PrepareReleaseProjectTask;
@@ -60,10 +61,15 @@
 	private Logger log = LoggerFactory.getLogger( DefaultTaskQueueManager.class );
 
     /**
+     * @plexus.requirement role-hint="distributed-build-project"
+     */
+     private TaskQueue distributedBuildQueue;
+
+    /**
      * @plexus.requirement role-hint="purge"
      */
     private TaskQueue purgeQueue;
-    
+
     /**
      * @plexus.requirement role-hint="prepare-release"
      */
@@ -91,10 +97,54 @@
     
     private PlexusContainer container;
 
+    public TaskQueue getDistributedBuildQueue()
+    {
+        return distributedBuildQueue;
+    }
+
+    public List<PrepareBuildProjectsTask> getDistributedBuildProjectsInQueue()
+        throws TaskQueueManagerException
+    {
+        try
+        {
+            return distributedBuildQueue.getQueueSnapshot();
+        }
+        catch ( TaskQueueException e )
+        {
+            throw new TaskQueueManagerException( "Error while getting the distributed building queue", e );
+        }
+    }
+
     public TaskQueue getPurgeQueue()
     {
         return purgeQueue;
-    }    
+    }
+
+    public boolean isInDistributedBuildQueue( int projectGroupId, String scmRootAddress )
+        throws TaskQueueManagerException
+    {
+        try
+        {
+            List<PrepareBuildProjectsTask> queue = distributedBuildQueue.getQueueSnapshot();
+
+            for ( PrepareBuildProjectsTask task : queue )
+            {
+                if ( task != null )
+                {
+                    if ( task.getProjectGroupId() == projectGroupId && task.getScmRootAddress().equals( scmRootAddress ) )
+                    {
+                        return true;
+                    }
+                }
+            }
+
+            return false;
+        }
+        catch ( TaskQueueException e )
+        {
+            throw new TaskQueueManagerException( "Error while getting the tasks in distributed build queue", e );
+        }
+    }
     
     public boolean isInPurgeQueue( int purgeConfigId )
         throws TaskQueueManagerException
@@ -241,6 +291,21 @@
         return false;
     }
 
+    public boolean removeFromDistributedBuildQueue( int projectGroupId, String scmRootAddress )
+        throws TaskQueueManagerException
+    {
+        List<PrepareBuildProjectsTask> queue = getDistributedBuildProjectsInQueue();
+
+        for ( PrepareBuildProjectsTask task : queue )
+        {
+            if ( task != null && task.getProjectGroupId() == projectGroupId && task.getScmRootAddress().equals( scmRootAddress ) )
+            {
+                return distributedBuildQueue.remove( task );
+            }
+        }
+        return false;
+    }
+
     public boolean removeFromPurgeQueue( int purgeConfigId )
         throws TaskQueueManagerException
     {
@@ -303,6 +368,20 @@
             removeFromPurgeQueue( repoPurge.getId() );
         }
     }
+
+    public void removeTasksFromDistributedBuildQueueWithHashCodes( int[] hashCodes )
+        throws TaskQueueManagerException
+    {
+        List<PrepareBuildProjectsTask> queue = getDistributedBuildProjectsInQueue();
+        
+        for ( PrepareBuildProjectsTask task : queue )
+        {
+            if ( ArrayUtils.contains( hashCodes, task.hashCode() ) )
+            {
+                distributedBuildQueue.remove( task );
+            }
+        }
+    }
     
     public void contextualize( Context context )
         throws ContextException

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Wed Jan 14 08:31:04 2009
@@ -52,8 +52,10 @@
 import org.apache.continuum.purge.ContinuumPurgeManager;
 import org.apache.continuum.purge.PurgeConfigurationService;
 import org.apache.continuum.repository.RepositoryService;
+import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
 import org.apache.continuum.taskqueue.manager.TaskQueueManager;
 import org.apache.continuum.taskqueue.manager.TaskQueueManagerException;
+import org.apache.continuum.utils.ProjectSorter;
 import org.apache.maven.continuum.build.settings.SchedulesActivationException;
 import org.apache.maven.continuum.build.settings.SchedulesActivator;
 import org.apache.maven.continuum.builddefinition.BuildDefinitionService;
@@ -87,7 +89,6 @@
 import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 import org.apache.maven.continuum.utils.ContinuumUrlValidator;
-import org.apache.maven.continuum.utils.ProjectSorter;
 import org.apache.maven.continuum.utils.WorkingDirectoryService;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
@@ -102,6 +103,7 @@
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.StartingException;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.StoppingException;
+import org.codehaus.plexus.taskqueue.TaskQueueException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
@@ -916,7 +918,7 @@
         Collection<Project> projectsList;
 
         Map projectsMap = null;
-        
+
         try
         {
             projectsMap = daoUtils.getAggregatedProjectIdsAndBuildDefinitionIdsBySchedule( schedule.getId() );
@@ -957,7 +959,7 @@
                                 !parallelBuildsManager.isInAnyCheckoutQueue( project.getId() ) && !parallelBuildsManager.isInPrepareBuildQueue( project.getId() ) )
                         {
                             ProjectScmRoot scmRoot = getProjectScmRootByProject( project.getId() );
-                            
+
                             Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRoot );
                             
                             if ( projectsAndBuildDefinitionsMap == null )
@@ -1001,7 +1003,7 @@
         {
             throw new ContinuumException( "Project (id=" + projectId + ") is currently in release stage." );
         }
-            
+
         BuildDefinition buildDef = getDefaultBuildDefinition( projectId );
 
         if ( buildDef == null )
@@ -1027,7 +1029,8 @@
         projectsBuildDefinitionsMap.put( projectId, buildDef.getId() );
         
         ProjectScmRoot scmRoot = getProjectScmRootByProject( projectId );
-        prepareBuildProjects( projectsBuildDefinitionsMap, trigger, scmRoot.getScmRootAddress(), scmRoot.getProjectGroup().getId() );
+        prepareBuildProjects( projectsBuildDefinitionsMap, trigger, scmRoot.getScmRootAddress(), 
+                              scmRoot.getProjectGroup().getId(), scmRoot.getId() );
     }
 
     public void buildProject( int projectId, int buildDefinitionId, int trigger )
@@ -1057,7 +1060,8 @@
         projectsBuildDefinitionsMap.put( projectId, buildDefinitionId );
 
         ProjectScmRoot scmRoot = getProjectScmRootByProject( projectId );
-        prepareBuildProjects( projectsBuildDefinitionsMap, trigger, scmRoot.getScmRootAddress(), scmRoot.getProjectGroup().getId() );
+        prepareBuildProjects( projectsBuildDefinitionsMap, trigger, scmRoot.getScmRootAddress(), 
+                              scmRoot.getProjectGroup().getId(), scmRoot.getId() );
     }
 
     public BuildResult getBuildResult( int buildId )
@@ -1502,7 +1506,10 @@
 
         executeAction( "store-project", context );
 
-        executeAction( "add-project-to-checkout-queue", context );
+        if ( !configurationService.isDistributedBuildEnabled() )
+        {
+            executeAction( "add-project-to-checkout-queue", context );
+        }
 
         executeAction( "add-assignable-roles", context );
 
@@ -1658,7 +1665,7 @@
 
             String url = (String) context.get( CreateProjectsFromMetadataAction.KEY_URL );
             
-            projectScmRoot = projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( projectGroup.getId(), url );
+            projectScmRoot = getProjectScmRootByProjectGroupAndScmRootAddress( projectGroup.getId(), url );
             
             if ( projectScmRoot == null )
             {
@@ -1752,8 +1759,11 @@
                     
                 // 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 );
+
+                if ( !configurationService.isDistributedBuildEnabled() )
+                {
+                    executeAction( "add-project-to-checkout-queue", context );
+                }
             }
         }
         catch ( BuildDefinitionServiceException e )
@@ -3300,7 +3310,20 @@
         }
         return null;
     }
-    
+
+    public ProjectScmRoot getProjectScmRootByProjectGroupAndScmRootAddress( int projectGroupId, String scmRootAddress )
+        throws ContinuumException
+    {
+        try
+        {
+            return projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( projectGroupId, scmRootAddress );
+        }
+        catch ( ContinuumStoreException e )
+        {
+            throw new ContinuumException( "Error while retrieving project scm root for " + projectGroupId, e );
+        }
+    }
+
     public BuildQueue addBuildQueue( BuildQueue buildQueue ) throws ContinuumException
     {
         try
@@ -3487,7 +3510,7 @@
                 }
                 
                 ProjectScmRoot scmRoot = getProjectScmRootByProject( projectId );
-                
+
                 Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRoot );
                 
                 if ( projectsAndBuildDefinitionsMap == null )
@@ -3513,19 +3536,44 @@
     {
         for ( ProjectScmRoot scmRoot : map.keySet() )
         {
-            prepareBuildProjects( map.get( scmRoot ), trigger, scmRoot.getScmRootAddress(), scmRoot.getProjectGroup().getId() );
+            prepareBuildProjects( map.get( scmRoot ), trigger, scmRoot.getScmRootAddress(),
+                                  scmRoot.getProjectGroup().getId(), scmRoot.getId() );
         }
     }
 
     private void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap, int trigger, 
-                                       String scmRootAddress, int projectGroupId )
+                                       String scmRootAddress, int projectGroupId, int scmRootId )
         throws ContinuumException
     {
+        ProjectGroup group = getProjectGroup( projectGroupId );
+        
         try
-        {     
-        	parallelBuildsManager.prepareBuildProjects(
+        {
+            if ( configurationService.isDistributedBuildEnabled() )
+            {
+                if ( !taskQueueManager.isInDistributedBuildQueue( projectGroupId, scmRootAddress ) )
+                {
+                    PrepareBuildProjectsTask task = new PrepareBuildProjectsTask( projectsBuildDefinitionsMap, trigger,
+                                                                      projectGroupId, group.getName(), 
+                                                                      scmRootAddress, scmRootId );
+                    
+                    taskQueueManager.getDistributedBuildQueue().put( task );
+                }
+            }
+            else
+            {
+        	    parallelBuildsManager.prepareBuildProjects(
 					projectsBuildDefinitionsMap, trigger, projectGroupId,
-					scmRootAddress);
+					group.getName(), scmRootAddress, scmRootId );
+		    }
+        }
+        catch ( TaskQueueManagerException e )
+        {
+            throw logAndCreateException( e.getMessage(), e );
+        }
+        catch ( TaskQueueException e )
+        {
+            throw logAndCreateException( "Error while creating enqueuing object.", e );
         }
         catch( BuildManagerException e )
         {

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java Wed Jan 14 08:31:04 2009
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.codehaus.plexus.taskqueue.Task;
 import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
 import org.codehaus.plexus.taskqueue.execution.TaskExecutor;

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java Wed Jan 14 08:31:04 2009
@@ -25,6 +25,7 @@
 import org.apache.continuum.dao.ProjectGroupDao;
 import org.apache.continuum.dao.ProjectScmRootDao;
 import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.continuum.utils.ContinuumUtils;
 import org.apache.maven.continuum.core.action.AbstractContinuumAction;
 import org.apache.maven.continuum.execution.ContinuumBuildExecutor;
 import org.apache.maven.continuum.execution.ContinuumBuildExecutorConstants;
@@ -39,7 +40,6 @@
 import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
 import org.apache.maven.continuum.store.ContinuumStoreException;
-import org.apache.maven.continuum.utils.ContinuumUtils;
 import org.apache.maven.continuum.utils.WorkingDirectoryService;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.repository.ScmRepositoryException;

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/buildqueue/evaluator/BuildProjectTaskViabilityEvaluator.java Wed Jan 14 08:31:04 2009
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.codehaus.plexus.taskqueue.TaskViabilityEvaluator;
 

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/CheckoutProjectContinuumAction.java Wed Jan 14 08:31:04 2009
@@ -23,6 +23,7 @@
 import org.apache.continuum.dao.ProjectDao;
 import org.apache.continuum.scm.ContinuumScm;
 import org.apache.continuum.scm.ContinuumScmConfiguration;
+import org.apache.continuum.utils.ContinuumUtils;
 import org.apache.maven.continuum.model.project.BuildDefinition;
 import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.model.scm.ScmResult;
@@ -30,7 +31,6 @@
 import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
 import org.apache.maven.continuum.store.ContinuumStoreException;
-import org.apache.maven.continuum.utils.ContinuumUtils;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
 import org.apache.maven.scm.manager.NoSuchScmProviderException;

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/ExecuteBuilderContinuumAction.java Wed Jan 14 08:31:04 2009
@@ -21,6 +21,7 @@
 
 import org.apache.continuum.dao.BuildResultDao;
 import org.apache.continuum.dao.ProjectDao;
+import org.apache.continuum.utils.ContinuumUtils;
 import org.apache.maven.continuum.configuration.ConfigurationService;
 import org.apache.maven.continuum.execution.ContinuumBuildCancelledException;
 import org.apache.maven.continuum.execution.ContinuumBuildExecutionResult;
@@ -32,7 +33,6 @@
 //import org.apache.maven.continuum.model.scm.ScmResult;
 import org.apache.maven.continuum.notification.ContinuumNotificationDispatcher;
 import org.apache.maven.continuum.project.ContinuumProjectState;
-import org.apache.maven.continuum.utils.ContinuumUtils;
 
 import java.io.File;
 import java.util.Date;

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/core/action/UpdateWorkingDirectoryFromScmContinuumAction.java Wed Jan 14 08:31:04 2009
@@ -23,6 +23,7 @@
 import org.apache.continuum.dao.ProjectDao;
 import org.apache.continuum.scm.ContinuumScm;
 import org.apache.continuum.scm.ContinuumScmConfiguration;
+import org.apache.continuum.utils.ContinuumUtils;
 import org.apache.maven.continuum.model.project.BuildDefinition;
 import org.apache.maven.continuum.model.project.BuildResult;
 import org.apache.maven.continuum.model.project.Project;
@@ -30,10 +31,8 @@
 import org.apache.maven.continuum.model.scm.ChangeSet;
 import org.apache.maven.continuum.model.scm.ScmResult;
 import org.apache.maven.continuum.notification.ContinuumNotificationDispatcher;
-import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.store.ContinuumObjectNotFoundException;
 import org.apache.maven.continuum.store.ContinuumStoreException;
-import org.apache.maven.continuum.utils.ContinuumUtils;
 import org.apache.maven.continuum.utils.WorkingDirectoryService;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFile;
@@ -88,11 +87,13 @@
 
         BuildDefinition buildDefinition = getBuildDefinition( context );
 
-        int state = project.getState();
+        // do not set state of project to updating
 
-        project.setState( ContinuumProjectState.UPDATING );
+        //int state = project.getState();
 
-        projectDao.updateProject( project );
+        //project.setState( ContinuumProjectState.UPDATING );
+
+        //projectDao.updateProject( project );
 
         UpdateScmResult scmResult;
 
@@ -175,19 +176,19 @@
         {
             // set back to the original state
             // TODO: transient states!
-            try
-            {
-                project = projectDao.getProject( project.getId() );
-
-                project.setState( state );
-
-                projectDao.updateProject( project );
-            }
-            catch ( Exception e )
-            {
+            //try
+            //{
+            //    project = projectDao.getProject( project.getId() );
+
+            //    project.setState( state );
+
+            //    projectDao.updateProject( project );
+            //}
+            //catch ( Exception e )
+            //{
                 // nasty nasty, but we're in finally, so just sacrifice the state to keep the original exception
-                getLogger().error( e.getMessage(), e );
-            }
+            //    getLogger().error( e.getMessage(), e );
+            //}
 
             notifier.checkoutComplete( project, buildDefinition );
         }

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/MavenTwoBuildExecutor.java Wed Jan 14 08:31:04 2009
@@ -161,7 +161,7 @@
         LocalRepository repository = project.getProjectGroup().getLocalRepository();
         if ( repository != null )
         {
-            arguments.append( "\"-Dmaven.repo.local=" ).append( StringUtils.clean(repository.getLocation() ) ).append( "\" " );
+            arguments.append( "\"-Dmaven.repo.local=" ).append( StringUtils.clean( repository.getLocation() ) ).append( "\" " );
         }
         
         arguments.append( StringUtils.clean( buildDefinition.getGoals() ) );

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/CheckOutTaskExecutor.java Wed Jan 14 08:31:04 2009
@@ -20,6 +20,7 @@
  */
 
 import org.apache.continuum.dao.ProjectDao;
+import org.apache.continuum.taskqueue.CheckOutTask;
 import org.apache.maven.continuum.core.action.AbstractContinuumAction;
 import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.store.ContinuumStoreException;

Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java (original)
+++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java Wed Jan 14 08:31:04 2009
@@ -29,6 +29,9 @@
 import org.apache.continuum.dao.ProjectDao;
 import org.apache.continuum.dao.ProjectScmRootDao;
 import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
+import org.apache.continuum.utils.ContinuumUtils;
+import org.apache.continuum.utils.ProjectSorter;
 import org.apache.maven.continuum.core.action.AbstractContinuumAction;
 import org.apache.maven.continuum.model.project.BuildDefinition;
 import org.apache.maven.continuum.model.project.Project;
@@ -38,8 +41,6 @@
 import org.apache.maven.continuum.notification.ContinuumNotificationDispatcher;
 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;
@@ -468,7 +469,7 @@
 
         List<Project> projectsToBeBuilt = new ArrayList<Project>();
         Map<Integer, BuildDefinition> projectsBuildDefinitionsMap = new HashMap<Integer, BuildDefinition>();
-        
+
         for ( Project project : projectList )
         {
             //boolean shouldBuild = false;

Modified: continuum/trunk/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java (original)
+++ continuum/trunk/continuum-core/src/test/java/org/apache/continuum/buildmanager/ParallelBuildsManagerTest.java Wed Jan 14 08:31:04 2009
@@ -30,12 +30,12 @@
 import org.apache.continuum.dao.BuildDefinitionDao;
 import org.apache.continuum.taskqueue.OverallBuildQueue;
 import org.apache.continuum.taskqueueexecutor.ParallelBuildsThreadedTaskQueueExecutor;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.CheckOutTask;
 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.Schedule;
-import org.apache.maven.continuum.scm.queue.CheckOutTask;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.plexus.taskqueue.Task;
 import org.codehaus.plexus.taskqueue.TaskQueue;

Modified: continuum/trunk/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java (original)
+++ continuum/trunk/continuum-core/src/test/java/org/apache/continuum/taskqueue/DefaultOverallBuildQueueTest.java Wed Jan 14 08:31:04 2009
@@ -25,9 +25,9 @@
 
 import org.apache.continuum.dao.BuildDefinitionDao;
 import org.apache.continuum.taskqueueexecutor.ParallelBuildsThreadedTaskQueueExecutor;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.CheckOutTask;
 import org.apache.maven.continuum.model.project.BuildDefinition;
-import org.apache.maven.continuum.scm.queue.CheckOutTask;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.plexus.taskqueue.Task;
 import org.codehaus.plexus.taskqueue.TaskQueue;

Modified: continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutorTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutorTest.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutorTest.java (original)
+++ continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutorTest.java Wed Jan 14 08:31:04 2009
@@ -19,8 +19,8 @@
  * under the License.
  */
 
+import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.apache.maven.continuum.AbstractContinuumTest;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
 import org.apache.maven.continuum.core.action.AbstractContinuumAction;
 import org.apache.maven.continuum.model.project.BuildDefinition;
 import org.apache.maven.continuum.model.project.Project;

Modified: continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildqueue/BuildQueueTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildqueue/BuildQueueTest.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildqueue/BuildQueueTest.java (original)
+++ continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/buildqueue/BuildQueueTest.java Wed Jan 14 08:31:04 2009
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.apache.maven.continuum.AbstractContinuumTest;
 import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.project.ContinuumProjectState;

Propchange: continuum/trunk/continuum-distributed-build/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,2 @@
+target
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-buildagent/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,7 @@
+.settings
+build
+target
+.classpath
+.project
+*.iml
+bin

Propchange: continuum/trunk/continuum-distributed-build/continuum-buildagent/continuum-buildagent-api/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,7 @@
+.settings
+build
+target
+.classpath
+.project
+*.iml
+bin

Propchange: continuum/trunk/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,7 @@
+.settings
+build
+target
+.classpath
+.project
+*.iml
+bin

Propchange: continuum/trunk/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/build/execution/maven/m1/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Jan 14 08:31:04 2009
@@ -0,0 +1,2 @@
+/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/build/execution/maven/m1:713270-734307
+/continuum/trunk/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/build/execution/maven/m1:724671-733412

Propchange: continuum/trunk/continuum-distributed-build/continuum-buildagent/continuum-buildagent-jetty/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,4 @@
+bin
+target
+.classpath
+.project

Propchange: continuum/trunk/continuum-distributed-build/continuum-buildagent/continuum-buildagent-webapp/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,6 @@
+.settings
+build
+target
+.classpath
+.project
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,2 @@
+target
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,3 @@
+target
+*.iml
+bin

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,6 @@
+.settings
+target
+.classpath
+.project
+build
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,6 @@
+.settings
+target
+.classpath
+.project
+build
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,6 @@
+.settings
+target
+.classpath
+.project
+build
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,3 @@
+target
+*.iml
+bin

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-api/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,6 @@
+.settings
+target
+.classpath
+.project
+build
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-client/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,6 @@
+.settings
+build
+target
+.classpath
+.project
+*.iml

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-slave/continuum-distributed-build-transport-slave-server/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,5 @@
+.settings
+build
+target
+.classpath
+.project

Propchange: continuum/trunk/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jan 14 08:31:04 2009
@@ -0,0 +1,6 @@
+.settings
+build
+target
+.classpath
+.project
+bin

Modified: continuum/trunk/continuum-docs/src/site/apt/administrator_guides/configuration.apt
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-docs/src/site/apt/administrator_guides/configuration.apt?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-docs/src/site/apt/administrator_guides/configuration.apt (original)
+++ continuum/trunk/continuum-docs/src/site/apt/administrator_guides/configuration.apt Wed Jan 14 08:31:04 2009
@@ -23,10 +23,17 @@
 *---------------------------------+------------------------------------------------------+
 | Number of Allowed Builds in Parallel | The number of build queues that will be utilized to build projects. This allows concurrent checkouts and builds of multiple projects. Available since version 1.3.1. |
 *---------------------------------+------------------------------------------------------+
+| Enable Distributed Builds       | When checked, this Continuum instance will delegate all builds to configured agents. |
+*---------------------------------+------------------------------------------------------+
 
     You can modify values or keep defaults then save. 
 
-    You'll can modify values at a later time with the following steps:
+    Although Continuum defaults to storing its data within the installation, it is a best practice to separate the
+    installation and data directories.
+
+    These values can be pre-configured in continuum.xml.  Make sure that Continuum is not running when editing this file.
+
+    You can modify values at a later time with the following steps:
 
     [[1]] Login to Continuum with an Administrator account
 

Modified: continuum/trunk/continuum-docs/src/site/apt/administrator_guides/index.apt
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-docs/src/site/apt/administrator_guides/index.apt?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-docs/src/site/apt/administrator_guides/index.apt (original)
+++ continuum/trunk/continuum-docs/src/site/apt/administrator_guides/index.apt Wed Jan 14 08:31:04 2009
@@ -18,6 +18,8 @@
 
  * {{{profiles.html}Managing Build Environments}}
 
+ * {{{build-agents.html}Managing Build Agents}}
+
  * {{{schedules.html}Managing Schedules}}
 
  * {{{configuration.html}Managing General Configuration}}
@@ -37,3 +39,5 @@
  * {{{builddefTemplate.html}Build Definition Templates}}
 
  * {{{shutdown.html}Shutting Down Continuum}}
+
+ * {{{distributed-builds.html}Distributed Builds}}
\ No newline at end of file

Copied: continuum/trunk/continuum-docs/src/site/resources/images/build-agent-edit.png (from r734307, continuum/branches/continuum-distributed-builds/continuum-docs/src/site/resources/images/build-agent-edit.png)
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-docs/src/site/resources/images/build-agent-edit.png?p2=continuum/trunk/continuum-docs/src/site/resources/images/build-agent-edit.png&p1=continuum/branches/continuum-distributed-builds/continuum-docs/src/site/resources/images/build-agent-edit.png&r1=734307&r2=734441&rev=734441&view=diff
==============================================================================
Binary files - no diff available.

Modified: continuum/trunk/continuum-docs/src/site/resources/images/configuration.png
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-docs/src/site/resources/images/configuration.png?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
Binary files - no diff available.

Propchange: continuum/trunk/continuum-docs/src/site/xdoc/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 14 08:31:04 2009
@@ -1,2 +1,3 @@
 /continuum/branches/continuum-1.2.x/continuum-docs/src/site/xdoc:698449-698533,698817-698819,699529,700250,700273,700936,705894,705910,708339,722279,722624,723119,723487,724016,724024,725845,726103,726239,726462
+/continuum/branches/continuum-distributed-builds/continuum-docs/src/site/xdoc:713270-734307
 /continuum/trunk/continuum-docs/src/site/xdoc:690494-690520

Modified: continuum/trunk/continuum-model/src/main/mdo/continuum.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-model/src/main/mdo/continuum.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-model/src/main/mdo/continuum.xml (original)
+++ continuum/trunk/continuum-model/src/main/mdo/continuum.xml Wed Jan 14 08:31:04 2009
@@ -1279,6 +1279,11 @@
           <type>int</type>
           <defaultValue>1</defaultValue>
         </field>
+        <field>
+          <name>distributedBuildEnabled</name>
+          <version>1.1.4+</version>
+          <type>boolean</type>
+        </field>
       </fields>
     </class>
 

Modified: continuum/trunk/continuum-security/src/main/java/org/apache/maven/continuum/security/ContinuumRoleConstants.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-security/src/main/java/org/apache/maven/continuum/security/ContinuumRoleConstants.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-security/src/main/java/org/apache/maven/continuum/security/ContinuumRoleConstants.java (original)
+++ continuum/trunk/continuum-security/src/main/java/org/apache/maven/continuum/security/ContinuumRoleConstants.java Wed Jan 14 08:31:04 2009
@@ -121,4 +121,6 @@
     public static final String CONTINUUM_MANAGE_REPOSITORIES = "continuum-manage-repositories";
     
     public static final String CONTINUUM_MANAGE_PURGING = "continuum-manage-purging";
+
+    public static final String CONTINUUM_MANAGE_DISTRIBUTED_BUILDS = "continuum-manage-distributed-builds";
 }

Modified: continuum/trunk/continuum-security/src/main/resources/META-INF/redback/redback.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-security/src/main/resources/META-INF/redback/redback.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-security/src/main/resources/META-INF/redback/redback.xml (original)
+++ continuum/trunk/continuum-security/src/main/resources/META-INF/redback/redback.xml Wed Jan 14 08:31:04 2009
@@ -185,6 +185,11 @@
           <name>continuum-manage-purging</name>
           <description>Continuum Manage Purging</description>
         </operation>
+        <operation>
+          <id>continuum-manage-distributed-builds</id>
+          <name>continuum-manage-distributed-builds</name>
+          <description>Continuum Manage Distributed Builds</description>
+        </operation>
       </operations>
       <roles>
         <role>
@@ -200,6 +205,13 @@
               <operation>continuum-manage-configuration</operation>
               <resource>global</resource>
             </permission>
+            <permission>
+              <id>continuum-manage-distributed-builds</id>
+              <name>Manage Continuum Distributed Builds</name>
+              <permanent>true</permanent>
+              <operation>continuum-manage-distributed-builds</operation>
+              <resource>global</resource>
+            </permission>
           </permissions>
           <parentRoles>
             <parentRole>system-administrator</parentRole>

Modified: continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java (original)
+++ continuum/trunk/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java Wed Jan 14 08:31:04 2009
@@ -298,4 +298,10 @@
 
         }
     }
+
+    public Project getProjectWithDependencies( int projectId )
+        throws ContinuumStoreException
+    {
+        return (Project) getObjectById( Project.class, projectId, PROJECT_DEPENDENCIES_FETCH_GROUP );
+    }
 }

Modified: continuum/trunk/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java (original)
+++ continuum/trunk/continuum-test/src/main/java/org/apache/maven/continuum/configuration/ConfigurationServiceMock.java Wed Jan 14 08:31:04 2009
@@ -20,11 +20,13 @@
  */
 
 import org.apache.continuum.buildqueue.BuildQueueServiceException;
+import org.apache.continuum.configuration.BuildAgentConfiguration;
 import org.apache.maven.continuum.model.project.BuildQueue;
 import org.apache.maven.continuum.model.project.Schedule;
 import org.apache.maven.continuum.store.ContinuumStoreException;
 
 import java.io.File;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -195,7 +197,7 @@
     {
         return null;
     }
-    
+
     public Schedule getDefaultSchedule()
         throws ContinuumStoreException
     {
@@ -257,4 +259,31 @@
     {
         
     }
+
+    public void addBuildAgent( BuildAgentConfiguration buildAgent )
+        throws ConfigurationException
+    {    
+    }
+
+    public List<BuildAgentConfiguration> getBuildAgents()
+    {
+        return null;
+    }
+
+    public boolean isDistributedBuildEnabled()
+    {
+        return false;
+    }
+
+    public void removeBuildAgent( BuildAgentConfiguration buildAgent )
+    {   
+    }
+
+    public void setDistributedBuildEnabled( boolean distributedBuildEnabled )
+    {
+    }
+
+    public void updateBuildAgent( BuildAgentConfiguration buildAgent )
+    {
+    }
 }

Propchange: continuum/trunk/continuum-webapp-test/src/test/selenium-ide/
------------------------------------------------------------------------------
    svn:mergeinfo = 

Modified: continuum/trunk/continuum-webapp/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/pom.xml (original)
+++ continuum/trunk/continuum-webapp/pom.xml Wed Jan 14 08:31:04 2009
@@ -461,6 +461,10 @@
     <dependency>
       <groupId>org.apache.continuum</groupId>
       <artifactId>continuum-reports</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.continuum</groupId>
+      <artifactId>continuum-distributed-build-transport-master-server</artifactId>
     </dependency>    
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>

Copied: continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/BuildAgentAction.java (from r734307, continuum/branches/continuum-distributed-builds/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/BuildAgentAction.java)
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/BuildAgentAction.java?p2=continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/BuildAgentAction.java&p1=continuum/branches/continuum-distributed-builds/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/BuildAgentAction.java&r1=734307&r2=734441&rev=734441&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/BuildAgentAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/action/admin/BuildAgentAction.java Wed Jan 14 08:31:04 2009
@@ -21,6 +21,7 @@
 
 import org.apache.continuum.configuration.BuildAgentConfiguration;
 import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
+import org.apache.maven.continuum.ContinuumException;
 import org.apache.maven.continuum.configuration.ConfigurationService;
 import org.apache.maven.continuum.model.system.Installation;
 import org.apache.maven.continuum.security.ContinuumRoleConstants;
@@ -108,7 +109,16 @@
             if ( agent.getUrl().equals( buildAgent.getUrl() ) )
             {
                 buildAgent = agent;
-                installations = distributedBuildManager.getAvailableInstallations( buildAgent.getUrl() );
+
+                try
+                {
+                    installations = distributedBuildManager.getAvailableInstallations( buildAgent.getUrl() );
+                }
+                catch ( ContinuumException e )
+                {
+                    getLogger().error( "Unable to retrieve installations of build agent '" + agent.getUrl() + "'", e );
+                }
+
                 break;
             }
         }

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/continuum/web/startup/ContinuumStartup.java Wed Jan 14 08:31:04 2009
@@ -23,6 +23,7 @@
 import javax.servlet.ServletContextListener;
 
 import org.apache.continuum.buildmanager.BuildsManager;
+import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
 import org.apache.maven.continuum.Continuum;
 import org.codehaus.plexus.spring.PlexusToSpringUtils;
 import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
@@ -61,7 +62,7 @@
 
         // to simulate Plexus load on start with Spring
         Continuum continuum = (Continuum) wac.getBean( PlexusToSpringUtils.buildSpringId( Continuum.class ) );
-        
+
         BuildsManager buildsManager = (BuildsManager) wac.getBean( PlexusToSpringUtils.buildSpringId( BuildsManager.class, "parallel" ) );
 
         TaskQueueExecutor prepareRelease = (TaskQueueExecutor) wac.getBean( PlexusToSpringUtils
@@ -78,6 +79,9 @@
 
         TaskQueueExecutor prepareBuildProject = (TaskQueueExecutor) wac.getBean( PlexusToSpringUtils
             .buildSpringId( TaskQueueExecutor.class, "prepare-build-project" ) );
+
+        DistributedBuildManager distributedBuildManager = (DistributedBuildManager) wac.getBean( PlexusToSpringUtils
+            .buildSpringId( DistributedBuildManager.class ) );
     }
 
 }