You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ct...@apache.org on 2008/12/17 09:31:27 UTC

svn commit: r727313 - in /continuum/branches/continuum-distributed-builds: continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/ continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/ continuum-builde...

Author: ctan
Date: Wed Dec 17 00:31:26 2008
New Revision: 727313

URL: http://svn.apache.org/viewvc?rev=727313&view=rev
Log:
- more fixes in transport test, distributed build implementation

Added:
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/BuildAgentStartup.java   (with props)
Modified:
    continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/DistributedBuildManager.java
    continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java
    continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/manager/DefaultDistributedBuildManager.java
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/pom.xml
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentManager.java
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentManager.java
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/BuildProjectTaskExecutor.java
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/resources/META-INF/spring-context.xml
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml
    continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml

Modified: continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/DistributedBuildManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/DistributedBuildManager.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/DistributedBuildManager.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-api/src/main/java/org/apache/continuum/builder/distributed/manager/DistributedBuildManager.java Wed Dec 17 00:31:26 2008
@@ -23,7 +23,10 @@
     void prepareBuildFinished( Map context )
         throws ContinuumException;
 
-    void updateProjectCurrentlyBuilding( int projectId )
+    void startProjectBuild( int projectId )
+        throws ContinuumException;
+
+    void startPrepareBuild( Map context )
         throws ContinuumException;
 
     void reload()

Modified: continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/executor/DistributedBuildProjectTaskExecutor.java Wed Dec 17 00:31:26 2008
@@ -79,21 +79,12 @@
         {
             SlaveBuildAgentTransportClient client = new SlaveBuildAgentTransportClient( new URL( buildAgentUrl ) );
 
-            ProjectScmRoot scmRoot = projectScmRootDao.
-                getProjectScmRootByProjectGroupAndScmRootAddress( prepareBuildTask.getProjectGroupId(), 
-                                                                  prepareBuildTask.getScmRootAddress() );
-
             log.info( "initializing buildContext" );
             List buildContext = initializeBuildContext( prepareBuildTask.getProjectsBuildDefinitionsMap(), 
                                                         prepareBuildTask.getTrigger(), 
                                                         prepareBuildTask.getScmRootAddress() );
 
             startTime = System.currentTimeMillis();
-
-            scmRoot.setOldState( scmRoot.getState() );
-            scmRoot.setState( ContinuumProjectState.UPDATING );
-            projectScmRootDao.updateProjectScmRoot( scmRoot );
-
             client.buildProjects( buildContext );
 
             endTime = System.currentTimeMillis();

Modified: continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/manager/DefaultDistributedBuildManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/manager/DefaultDistributedBuildManager.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/manager/DefaultDistributedBuildManager.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-builder/src/main/java/org/apache/continuum/builder/distributed/manager/DefaultDistributedBuildManager.java Wed Dec 17 00:31:26 2008
@@ -497,7 +497,7 @@
         return null;
     }
 
-    public void updateProjectCurrentlyBuilding( int projectId )
+    public void startProjectBuild( int projectId )
         throws ContinuumException
     {
         try
@@ -513,6 +513,26 @@
         }
     }
 
+    public void startPrepareBuild( Map context )
+        throws ContinuumException
+    {
+        try
+        {
+            int projectGroupId = ContinuumBuildConstant.getProjectGroupId( context );
+            String scmRootAddress = ContinuumBuildConstant.getScmRootAddress( context );
+            
+            ProjectScmRoot scmRoot = projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( projectGroupId, scmRootAddress );
+            scmRoot.setOldState( scmRoot.getState() );
+            scmRoot.setState( ContinuumProjectState.UPDATING );
+            projectScmRootDao.updateProjectScmRoot( scmRoot );
+        }
+        catch ( ContinuumStoreException e )
+        {
+            log.error( "Error while updating project scm root's state", e );
+            throw new ContinuumException( "Error while updating project scm root's state", e );
+        }
+    }
+
     public Map<String, Object> getBuildResult( int projectId )
         throws ContinuumException
     {

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/pom.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/pom.xml?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/pom.xml (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/pom.xml Wed Dec 17 00:31:26 2008
@@ -53,6 +53,10 @@
       <artifactId>continuum-scm</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.continuum</groupId>
+      <artifactId>continuum-distributed-build-transport-master-client</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>file-management</artifactId>
     </dependency>

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentManager.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentManager.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/BuildAgentManager.java Wed Dec 17 00:31:26 2008
@@ -1,6 +1,7 @@
 package org.apache.continuum.buildagent.manager;
 
 import java.util.List;
+import java.util.Map;
 
 import org.apache.continuum.buildagent.buildcontext.BuildContext;
 import org.apache.maven.continuum.ContinuumException;
@@ -11,4 +12,10 @@
 
     void prepareBuildProjects( List<BuildContext> buildContextList )
         throws ContinuumException;
+
+    void returnBuildResult( Map result )
+        throws ContinuumException;
+    
+    void startProjectBuild( int projectId )
+        throws ContinuumException;
 }

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentManager.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentManager.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/manager/DefaultBuildAgentManager.java Wed Dec 17 00:31:26 2008
@@ -1,5 +1,7 @@
 package org.apache.continuum.buildagent.manager;
 
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -10,6 +12,7 @@
 import org.apache.continuum.buildagent.utils.BuildContextToBuildDefinition;
 import org.apache.continuum.buildagent.utils.BuildContextToProject;
 import org.apache.continuum.buildagent.utils.ContinuumBuildAgentUtil;
+import org.apache.continuum.distributed.transport.master.MasterBuildAgentTransportClient;
 import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.apache.maven.continuum.ContinuumException;
 import org.apache.maven.continuum.model.project.BuildDefinition;
@@ -67,11 +70,12 @@
                         break;
                     }
                     
+                    log.info( "Starting prepare build" );
+                    startPrepareBuild( buildContext );
+                    
                     log.info( "Initializing prepare build" );
                     initializeActionContext( buildContext );
                     
-                    log.info( "Starting prepare build" );
-    
                     try
                     {
                         if ( buildDef.isBuildFresh() )
@@ -101,6 +105,78 @@
         }
     }
 
+    public void startProjectBuild( int projectId )
+        throws ContinuumException
+    {
+        try
+        {
+            MasterBuildAgentTransportClient client = new MasterBuildAgentTransportClient(
+                new URL( buildAgentConfigurationService.getContinuumServerUrl() ) );
+            client.startProjectBuild( projectId );
+        }
+        catch ( MalformedURLException e )
+        {
+            log.error( "Invalid continuum server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'" );
+            throw new ContinuumException( "Invalid continuum server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'" );
+        }
+        catch ( Exception e )
+        {
+            log.error( "Error starting project build", e );
+            throw new ContinuumException( "Error starting project build", e );
+        }
+    }
+
+    public void returnBuildResult( Map buildResult )
+        throws ContinuumException
+    {
+        try
+        {
+            MasterBuildAgentTransportClient client = new MasterBuildAgentTransportClient(
+                new URL( buildAgentConfigurationService.getContinuumServerUrl() ) );
+            client.returnBuildResult( buildResult );
+        }
+        catch ( MalformedURLException e )
+        {
+            log.error( "Invalid continuum server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'" );
+            throw new ContinuumException( "Invalid continuum server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'" );
+        }
+        catch ( Exception e )
+        {
+            log.error( "Error while returning build result to the continuum server", e );
+            throw new ContinuumException( e.getMessage(), e );
+        }
+    }
+
+    private void startPrepareBuild( BuildContext buildContext )
+        throws ContinuumException
+    {
+        Map<String, Object> actionContext = buildContext.getActionContext();
+        
+        if ( actionContext == null || !( ContinuumBuildAgentUtil.getScmRootState( actionContext ) == ContinuumProjectState.UPDATING ) ) 
+        {
+            Map<String, Object> map = new HashMap<String, Object>();
+            map.put( ContinuumBuildAgentUtil.KEY_PROJECT_GROUP_ID, new Integer( buildContext.getProjectGroupId() ) );
+            map.put( ContinuumBuildAgentUtil.KEY_SCM_ROOT_ADDRESS, buildContext.getScmRootAddress() );
+            
+            try
+            {
+                MasterBuildAgentTransportClient client = new MasterBuildAgentTransportClient(
+                    new URL( buildAgentConfigurationService.getContinuumServerUrl() ) );
+                client.startPrepareBuild( map );
+            }
+            catch ( MalformedURLException e )
+            {
+                log.error( "Invalid continuum server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'" );
+                throw new ContinuumException( "Invalid continuum server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'", e );
+            }
+            catch ( Exception e )
+            {
+                log.error( "Error starting prepare build", e );
+                throw new ContinuumException( "Error starting prepare build", e );
+            }
+        }
+    }
+
     private void initializeActionContext( BuildContext buildContext )
     {
         Map<String, Object> actionContext = new HashMap<String, Object>();
@@ -177,23 +253,59 @@
         {
             context.put( ContinuumBuildAgentUtil.KEY_SCM_ROOT_STATE, ContinuumProjectState.ERROR );
         }
+
+        // connect to continuum server (master)
+        try
+        {
+            MasterBuildAgentTransportClient client = new MasterBuildAgentTransportClient(
+                 new URL( buildAgentConfigurationService.getContinuumServerUrl() ) );
+            client.returnScmResult( createScmResult( buildContext ) );
+        }
+        catch ( MalformedURLException e )
+        {
+            throw new ContinuumException( "Invalid Continuum Server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'" );
+        }
+        catch ( Exception e )
+        {
+            throw new ContinuumException( "Error while returning scm result to the continuum server", e );
+        }
     }
 
     private void endPrepareBuild( Map context )
         throws ContinuumException
     {
-        Map<String, Object> result = new HashMap<String, Object>();
-        result.put( ContinuumBuildAgentUtil.KEY_PROJECT_GROUP_ID, new Integer( ContinuumBuildAgentUtil.getProjectGroupId( context ) ) );
-        result.put( ContinuumBuildAgentUtil.KEY_SCM_ROOT_ADDRESS, ContinuumBuildAgentUtil.getScmRootAddress( context ) );
-        
-        String error = convertScmResultToError( ContinuumBuildAgentUtil.getScmResult( context, null ) );
-        if ( StringUtils.isEmpty( error ) )
+        if ( context != null )
         {
-            result.put( ContinuumBuildAgentUtil.KEY_SCM_ERROR, "" );
-        }
-        else
-        {
-            result.put( ContinuumBuildAgentUtil.KEY_SCM_ERROR, error );
+            Map<String, Object> result = new HashMap<String, Object>();
+            result.put( ContinuumBuildAgentUtil.KEY_PROJECT_GROUP_ID, new Integer( ContinuumBuildAgentUtil.getProjectGroupId( context ) ) );
+            result.put( ContinuumBuildAgentUtil.KEY_SCM_ROOT_ADDRESS, ContinuumBuildAgentUtil.getScmRootAddress( context ) );
+            result.put( ContinuumBuildAgentUtil.KEY_SCM_ROOT_STATE, new Integer( ContinuumBuildAgentUtil.getScmRootState( context ) ) );
+            
+            String error = convertScmResultToError( ContinuumBuildAgentUtil.getScmResult( context, null ) );
+            if ( StringUtils.isEmpty( error ) )
+            {
+                result.put( ContinuumBuildAgentUtil.KEY_SCM_ERROR, "" );
+            }
+            else
+            {
+                result.put( ContinuumBuildAgentUtil.KEY_SCM_ERROR, error );
+            }
+    
+            // connect to continuum server (master)
+            try
+            {
+                MasterBuildAgentTransportClient client = new MasterBuildAgentTransportClient(
+                     new URL( buildAgentConfigurationService.getContinuumServerUrl() ) );
+                client.prepareBuildFinished( result );
+            }
+            catch ( MalformedURLException e )
+            {
+                throw new ContinuumException( "Invalid Continuum Server URL '" + buildAgentConfigurationService.getContinuumServerUrl() + "'" );
+            }
+            catch ( Exception e )
+            {
+                throw new ContinuumException( "Error while finishing prepare build", e );
+            }
         }
     }
 

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/BuildProjectTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/BuildProjectTaskExecutor.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/BuildProjectTaskExecutor.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/java/org/apache/continuum/buildagent/taskqueue/execution/BuildProjectTaskExecutor.java Wed Dec 17 00:31:26 2008
@@ -10,9 +10,11 @@
 import org.apache.continuum.buildagent.buildcontext.BuildContext;
 import org.apache.continuum.buildagent.buildcontext.manager.BuildContextManager;
 import org.apache.continuum.buildagent.configuration.BuildAgentConfigurationService;
+import org.apache.continuum.buildagent.manager.BuildAgentManager;
 import org.apache.continuum.buildagent.utils.BuildContextToBuildDefinition;
 import org.apache.continuum.buildagent.utils.ContinuumBuildAgentUtil;
 import org.apache.continuum.taskqueue.BuildProjectTask;
+import org.apache.maven.continuum.ContinuumException;
 import org.apache.maven.continuum.model.project.BuildResult;
 import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.scm.ScmException;
@@ -50,6 +52,11 @@
      */
     private BuildAgentConfigurationService buildAgentConfigurationService;
 
+    /**
+     * @plexus.requirement
+     */
+    private BuildAgentManager buildAgentManager;
+
     public void executeTask( Task task )
         throws TaskExecutionException
     {
@@ -100,9 +107,18 @@
     }
 
     private void startBuild( BuildContext buildContext )
+        throws TaskExecutionException
     {
-        // inform master that project is building ( to set the state )
-        
+        try
+        {
+            buildAgentManager.startProjectBuild( buildContext.getProjectId() );
+        }
+        catch ( ContinuumException e )
+        {
+            // do not throw exception, just log?
+            log.error( "Failed to start project '" + buildContext.getProjectName() + "'", e );
+            throw new TaskExecutionException( "Failed to start project '" + buildContext.getProjectName() + "'", e );
+        }
     }
 
     private void endBuild( BuildContext buildContext )

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/resources/META-INF/spring-context.xml?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/resources/META-INF/spring-context.xml (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-buildagent/continuum-buildagent-core/src/main/resources/META-INF/spring-context.xml Wed Dec 17 00:31:26 2008
@@ -25,11 +25,13 @@
          class="org.apache.continuum.buildagent.build.execution.shell.ShellBuildExecutor" autowire="byName">
   </bean>
 
-  <bean id="buildAgentConfigurationService" class="org.apache.continuum.buildagent.configuration.DefaultBuildAgentConfigurationService">
+  <bean id="buildAgentConfigurationService" class="org.apache.continuum.buildagent.configuration.DefaultBuildAgentConfigurationService"
+        init-method="initialize">
     <property name="configuration" ref="buildAgentConfiguration" />
   </bean>
   
-  <bean id="buildAgentConfiguration" class="org.apache.continuum.buildagent.configuration.DefaultBuildAgentConfiguration">
+  <bean id="buildAgentConfiguration" class="org.apache.continuum.buildagent.configuration.DefaultBuildAgentConfiguration"
+     init-method="initialize">
     <property name="configurationFile" value="file:${appserver.base}/conf/continuum-buildagent.xml" />
   </bean>
 

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-api/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportService.java Wed Dec 17 00:31:26 2008
@@ -33,9 +33,11 @@
     
     public Boolean returnScmResult( Map scmResult ) throws Exception;
 
-    public Boolean returnProjectCurrentlyBuilding( Integer projectId ) throws Exception;
+    public Boolean startProjectBuild( Integer projectId ) throws Exception;
 
     public Boolean prepareBuildFinished( Map prepareBuildResult ) throws Exception; 
 
+    public Boolean startPrepareBuild( Map prepareBuildResult ) throws Exception;
+
     public Boolean ping() throws Exception;
 }

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-client/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportClient.java Wed Dec 17 00:31:26 2008
@@ -139,14 +139,14 @@
         return result;
     }
 
-    public Boolean returnProjectCurrentlyBuilding( Integer projectId )
+    public Boolean startProjectBuild( Integer projectId )
         throws Exception
     {
         Boolean result = null;
         
         try
         {
-            result = master.returnProjectCurrentlyBuilding( projectId );
+            result = master.startProjectBuild( projectId );
             log.info( "Return project currently building" );
         }
         catch ( Exception e )
@@ -157,4 +157,23 @@
 
         return result;
     }
+
+    public Boolean startPrepareBuild( Map prepareBuildResult )
+        throws Exception
+    {
+        Boolean result = null;
+
+        try
+        {
+            result = master.startPrepareBuild( prepareBuildResult );
+            log.info( "Started prepare build" );
+        }
+        catch ( Exception e )
+        {
+            log.error( "Failed to start prepare build", e );
+            throw new Exception( "Failed to start prepare build", e );
+        }
+
+        return result;
+    }
 }

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-master/continuum-distributed-build-transport-master-server/src/main/java/org/apache/continuum/distributed/transport/master/MasterBuildAgentTransportServer.java Wed Dec 17 00:31:26 2008
@@ -71,11 +71,19 @@
         return Boolean.TRUE;
     }
 
-    public Boolean returnProjectCurrentlyBuilding( Integer projectId )
+    public Boolean startProjectBuild( Integer projectId )
         throws Exception
     {
-        log.info( "Project currently building returned." );
-        distributedBuildManager.updateProjectCurrentlyBuilding( projectId.intValue() );
+        log.info( "Start project build." );
+        distributedBuildManager.startProjectBuild( projectId.intValue() );
+        return Boolean.TRUE;
+    }
+
+    public Boolean startPrepareBuild( Map prepareBuildResult )
+        throws Exception
+    {
+        log.info( "Start prepare build." );
+        distributedBuildManager.startPrepareBuild( prepareBuildResult );
         return Boolean.TRUE;
     }
 }

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/pom.xml Wed Dec 17 00:31:26 2008
@@ -65,6 +65,12 @@
       <artifactId>slf4j-log4j12</artifactId>
       <scope>runtime</scope>
     </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>2.4</version>
+      <scope>provided</scope>
+    </dependency>
   </dependencies>
   
   <build>
@@ -86,6 +92,12 @@
               <maxIdleTime>60000</maxIdleTime>
             </connector>
           </connectors>
+          <systemProperties>
+            <systemProperty>
+              <name>appserver.base</name>
+              <value>${project.build.directory}/appserver-base</value>
+            </systemProperty>
+          </systemProperties>
         </configuration>
         <executions>
           <execution>

Added: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/BuildAgentStartup.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/BuildAgentStartup.java?rev=727313&view=auto
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/BuildAgentStartup.java (added)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/BuildAgentStartup.java Wed Dec 17 00:31:26 2008
@@ -0,0 +1,40 @@
+package org.apache.continuum.web.startup;
+
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
+import org.codehaus.plexus.spring.PlexusToSpringUtils;
+import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+
+public class BuildAgentStartup
+    implements ServletContextListener
+{
+    private Logger log = LoggerFactory.getLogger( getClass() );
+    
+    /** 
+     * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
+     */
+    public void contextDestroyed( ServletContextEvent sce )
+    {
+        // nothing to do here
+
+    }
+    
+    /** 
+     * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
+     */
+    public void contextInitialized( ServletContextEvent sce )
+    {
+        log.info( "Initializing Build Agent Task Queue Executor" );
+
+        WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext( sce
+            .getServletContext() );
+        
+        TaskQueueExecutor buildAgent = (TaskQueueExecutor) wac.getBean( PlexusToSpringUtils
+            .buildSpringId( TaskQueueExecutor.class, "build-agent" ) );
+    }
+}

Propchange: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/BuildAgentStartup.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/java/org/apache/continuum/web/startup/BuildAgentStartup.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/resources/log4j.xml Wed Dec 17 00:31:26 2008
@@ -14,6 +14,9 @@
   <logger name="org.apache.continuum.buildagent">
     <level value="info"/>
   </logger>
+  <logger name="org.apache.continuum.web">
+    <level value="info"/>
+  </logger>
   <logger name="org.springframework">
     <level value="error"/>
   </logger>

Modified: continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml?rev=727313&r1=727312&r2=727313&view=diff
==============================================================================
--- continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml (original)
+++ continuum/branches/continuum-distributed-builds/continuum-distributed-build/continuum-distributed-build-transport/continuum-distributed-build-transport-tests/src/main/webapp/WEB-INF/web.xml Wed Dec 17 00:31:26 2008
@@ -9,6 +9,11 @@
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>
   
+  <listener>
+    <!-- TODO: some Spring technique for this? -->
+  	<listener-class>org.apache.continuum.web.startup.BuildAgentStartup</listener-class>
+  </listener>
+  
   <context-param>
     <param-name>contextClass</param-name>
     <param-value>org.codehaus.plexus.spring.PlexusWebApplicationContext</param-value>