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 [3/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...

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/AbstractBuildAction.java Wed Jan 14 08:31:04 2009
@@ -22,7 +22,7 @@
 import java.util.Set;
 
 import org.apache.continuum.buildmanager.BuildManagerException;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.apache.maven.continuum.model.project.BuildResult;
 import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.codehaus.plexus.taskqueue.Task;

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/BuildResultAction.java Wed Jan 14 08:31:04 2009
@@ -22,10 +22,13 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.continuum.buildmanager.BuildManagerException;
+import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
+import org.apache.continuum.builder.utils.ContinuumBuildConstant;
 import org.apache.maven.continuum.ContinuumException;
 import org.apache.maven.continuum.configuration.ConfigurationException;
 import org.apache.maven.continuum.model.project.BuildResult;
 import org.apache.maven.continuum.model.project.Project;
+import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
 import org.apache.maven.continuum.web.util.StateGenerator;
 import org.apache.struts2.ServletActionContext;
@@ -36,6 +39,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -46,6 +50,11 @@
 public class BuildResultAction
     extends AbstractBuildAction
 {
+    /**
+     * @plexus.requirement
+     */
+    private DistributedBuildManager distributedBuildManager;
+
     private Project project;
 
     private BuildResult buildResult;
@@ -62,6 +71,8 @@
 
     private String projectGroupName = "";
 
+    private int projectGroupId;
+
     public String execute()
         throws ContinuumException, ConfigurationException, IOException, BuildManagerException
     {
@@ -78,27 +89,54 @@
         // check if there are surefire results to display
         project = getContinuum().getProject( getProjectId() );
 
-        buildResult = getContinuum().getBuildResult( getBuildId() );
-
-        // directory contains files ?
-        File surefireReportsDirectory =
-            getContinuum().getConfiguration().getTestReportsDirectory( buildId, getProjectId() );
-        File[] files = surefireReportsDirectory.listFiles();
-        if ( files == null )
+        if ( getContinuum().getConfiguration().isDistributedBuildEnabled() && project.getState() == ContinuumProjectState.BUILDING )
         {
+            Map<String, Object> map = distributedBuildManager.getBuildResult( project.getId() );
+
+            if ( map == null )
+            {
+                projectGroupId = project.getProjectGroup().getId();
+
+                return ERROR;
+            }
+
+            if ( map.size() > 0 )
+            {
+                buildResult = ContinuumBuildConstant.getBuildResult( map, null );
+
+                buildOutput = ContinuumBuildConstant.getBuildOutput( map );
+            }
+            changeSet = null;
+
             hasSurefireResults = false;
+
+            this.setCanDelete( false );
         }
         else
         {
-            hasSurefireResults = files.length > 0;
-        }
-        changeSet = getContinuum().getChangesSinceLastUpdate( getProjectId() );
+            buildResult = getContinuum().getBuildResult( getBuildId() );
 
-        buildOutput = getBuildOutputText();
+            // directory contains files ?
+            File surefireReportsDirectory =
+                getContinuum().getConfiguration().getTestReportsDirectory( buildId, getProjectId() );
+            File[] files = surefireReportsDirectory.listFiles();
+            if ( files == null )
+            {
+                hasSurefireResults = false;
+            }
+            else
+            {
+                hasSurefireResults = files.length > 0;
+            }
+            changeSet = getContinuum().getChangesSinceLastUpdate( getProjectId() );
+
+            buildOutput = getBuildOutputText();
 
-        state = StateGenerator.generate( buildResult.getState(), ServletActionContext.getRequest().getContextPath() );
+            state = StateGenerator.generate( buildResult.getState(), ServletActionContext.getRequest().getContextPath() );
+
+            this.setCanDelete( this.canRemoveBuildResult( buildResult ) );
+        }
 
-        this.setCanDelete( this.canRemoveBuildResult( buildResult ) );
         return SUCCESS;
     }
 
@@ -206,4 +244,8 @@
         return projectGroupName;
     }
 
+    public int getProjectGroupId()
+    {
+        return projectGroupId;
+    }
 }

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/CancelBuildAction.java Wed Jan 14 08:31:04 2009
@@ -29,8 +29,8 @@
 import org.apache.continuum.buildmanager.BuildManagerException;
 import org.apache.continuum.buildmanager.BuildsManager;
 import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.continuum.taskqueue.BuildProjectTask;
 import org.apache.maven.continuum.ContinuumException;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
 import org.apache.maven.continuum.model.project.Project;
 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
 import org.codehaus.plexus.taskqueue.Task;

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java Wed Jan 14 08:31:04 2009
@@ -20,15 +20,12 @@
  */
 
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.maven.continuum.ContinuumException;
 import org.apache.maven.continuum.model.project.BuildDefinition;
 import org.apache.maven.continuum.model.project.Project;
-import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.dag.CycleDetectedException;

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/ConfigurationAction.java Wed Jan 14 08:31:04 2009
@@ -60,7 +60,9 @@
     private int numberOfAllowedBuildsinParallel = 1;
     
     private boolean requireReleaseOutput;
-    
+
+    private boolean distributedBuildEnabled;
+
     public void prepare()
     {
         ConfigurationService configuration = getContinuum().getConfiguration();
@@ -108,6 +110,8 @@
                
         String requireRelease = ServletActionContext.getRequest().getParameter( "requireReleaseOutput" );
         setRequireReleaseOutput( new Boolean( requireRelease ) );
+
+        distributedBuildEnabled = configuration.isDistributedBuildEnabled();
     }
 
     public String input()
@@ -150,7 +154,7 @@
         {
             configuration.setDeploymentRepositoryDirectory( null );
         }
-        
+
         configuration.setUrl( baseUrl );
 
         configuration.setInitialized( true );
@@ -169,6 +173,8 @@
             configuration.setReleaseOutputDirectory( null );
         }
 
+        configuration.setDistributedBuildEnabled( distributedBuildEnabled );
+
         configuration.store();
 
         return SUCCESS;
@@ -253,4 +259,14 @@
 	{
 	    this.numberOfAllowedBuildsinParallel = numberOfAllowedBuildsinParallel;
 	}
+
+    public boolean isDistributedBuildEnabled()
+    {
+        return distributedBuildEnabled;
+    }
+
+    public void setDistributedBuildEnabled( boolean distributedBuildEnabled )
+    {
+        this.distributedBuildEnabled = distributedBuildEnabled;
+    }
 }

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java Wed Jan 14 08:31:04 2009
@@ -27,13 +27,21 @@
 
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.continuum.buildmanager.BuildManagerException;
-import org.apache.maven.continuum.buildqueue.BuildProjectTask;
+import org.apache.continuum.builder.distributed.manager.DistributedBuildManager;
+import org.apache.continuum.model.project.ProjectScmRoot;
+import org.apache.continuum.taskqueue.BuildProjectTask;
+import org.apache.continuum.taskqueue.CheckOutTask;
+import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
+import org.apache.continuum.taskqueue.manager.TaskQueueManager;
+import org.apache.maven.continuum.Continuum;
 import org.apache.maven.continuum.model.project.Project;
-import org.apache.maven.continuum.scm.queue.CheckOutTask;
+import org.apache.maven.continuum.model.project.ProjectGroup;
+import org.apache.maven.continuum.project.ContinuumProjectState;
 import org.apache.maven.continuum.security.ContinuumRoleConstants;
 import org.apache.maven.continuum.web.action.ContinuumActionSupport;
 import org.apache.maven.continuum.web.exception.AuthenticationRequiredException;
 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
+import org.apache.maven.continuum.web.model.DistributedBuildSummary;
 import org.codehaus.plexus.logging.LogEnabled;
 import org.codehaus.plexus.redback.rbac.Resource;
 import org.codehaus.plexus.taskqueue.Task;
@@ -50,7 +58,9 @@
 public class QueuesAction
 	extends ContinuumActionSupport
 	implements SecureAction, LogEnabled
-{            
+{
+    private static final String DISTRIBUTED_BUILD_SUCCESS = "distributed-build-success";
+
 	private List<String> selectedBuildTaskHashCodes;
 	    
 	private List<String> selectedCheckOutTaskHashCodes;
@@ -70,7 +80,24 @@
 	private Map<String, List<BuildProjectTask>> buildsInQueue = new HashMap<String, List<BuildProjectTask>>();
 	
 	private Map<String, List<CheckOutTask>> checkoutsInQueue = new HashMap<String, List<CheckOutTask>>();
-	
+
+    /**
+     * @plexus.requirement
+     */
+    DistributedBuildManager distributedBuildManager;
+
+    private List<DistributedBuildSummary> distributedBuildSummary;
+
+    private List<PrepareBuildProjectsTask> distributedBuildQueues;
+
+    private String buildAgentUrl;
+
+    private int projectGroupId;
+
+    private String scmRootAddress;
+
+    private List<String> selectedDistributedBuildTaskHashCodes;
+
 	// -----------------------------------------------------
 	//  webwork
 	// -----------------------------------------------------     
@@ -170,84 +197,123 @@
 	public String display()
 	    throws Exception
 	{
-	    try
-	    {
-	        // current builds
-	        Map<String, Task> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
-	        Set<String> keySet = currentBuilds.keySet();
-	        for( String key : keySet )
-	        {   
-	            BuildProjectTask buildTask = (BuildProjectTask) currentBuilds.get( key );
-	            currentBuildProjectTasks.put( key, buildTask );
+	    if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+        {
+            distributedBuildSummary = new ArrayList<DistributedBuildSummary>();
+
+            Map<String, PrepareBuildProjectsTask> map = distributedBuildManager.getDistributedBuildProjects();
+
+            for ( String url : map.keySet() )
+            {
+               PrepareBuildProjectsTask task = map.get( url );
+               
+               ProjectGroup projectGroup = getContinuum().getProjectGroup( task.getProjectGroupId() );
+               
+               DistributedBuildSummary summary = new DistributedBuildSummary();
+               summary.setUrl( url );
+               summary.setProjectGroupId( task.getProjectGroupId() );
+               summary.setProjectGroupName( projectGroup.getName() );
+               summary.setScmRootAddress( task.getScmRootAddress() );
+               
+               ProjectScmRoot scmRoot = getContinuum().getProjectScmRootByProjectGroupAndScmRootAddress( task.getProjectGroupId(), 
+                                                                                                         task.getScmRootAddress() );
+               if ( scmRoot.getState() == ContinuumProjectState.UPDATING )
+               {
+                   summary.setCancelEnabled( false );
+               }
+               else
+               {
+                   summary.setCancelEnabled( true );
+               }
+
+               distributedBuildSummary.add( summary );
+            }
+
+            distributedBuildQueues = getContinuum().getTaskQueueManager().getDistributedBuildProjectsInQueue();
+
+            return DISTRIBUTED_BUILD_SUCCESS;
+        }
+        else
+        {
+	        try
+	        {
+	            // current builds
+	            Map<String, Task> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
+	            Set<String> keySet = currentBuilds.keySet();
+	            for( String key : keySet )
+	            {
+	                BuildProjectTask buildTask = (BuildProjectTask) currentBuilds.get( key );
+	                currentBuildProjectTasks.put( key, buildTask );
+	            }
 	        }
-	    }
-	    catch ( BuildManagerException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return ERROR;
-	    }
-	    
-	    try
-	    {
-	        // queued builds
-	        Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
-	        Set<String> keySet = builds.keySet();            
-	        for( String key : keySet )
+	        catch ( BuildManagerException e )
+	        {
+	            addActionError( e.getMessage() );
+	            return ERROR;
+	        }
+
+   	        try
 	        {
-	            List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
-	            for( Task task : builds.get( key ) )
+	            // queued builds
+	            Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
+	            Set<String> keySet = builds.keySet();            
+	            for( String key : keySet )
 	            {
-	                BuildProjectTask buildTask = (BuildProjectTask) task;
-	                buildTasks.add( buildTask ); 
+	                List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
+	                for( Task task : builds.get( key ) )
+	                {
+	                    BuildProjectTask buildTask = (BuildProjectTask) task;
+	                    buildTasks.add( buildTask ); 
+	                }
+	                buildsInQueue.put( key, buildTasks );
 	            }
-	            buildsInQueue.put( key, buildTasks );
 	        }
-	    }
-	    catch ( BuildManagerException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return ERROR;
-	    }
-	    
-	    try
-	    {
-	        // current checkouts
-	        Map<String, Task> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
-	        Set<String> keySet = currentCheckouts.keySet();
-	        for( String key : keySet )
+	        catch ( BuildManagerException e )
 	        {
-	            CheckOutTask checkoutTask = (CheckOutTask) currentCheckouts.get( key );
-	            currentCheckoutTasks.put( key, checkoutTask );
+	            addActionError( e.getMessage() );
+	            return ERROR;
 	        }
-	    }
-	    catch ( BuildManagerException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return ERROR;
-	    }
-	    
-	    try
-	    {
-	        // queued checkouts
-	        Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
-	        Set<String> keySet = checkouts.keySet();
-	        for( String key : keySet )
+
+ 	        try
 	        {
-	            List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
-	            for( Task task : checkouts.get( key ) )
+	            // current checkouts
+	            Map<String, Task> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
+	            Set<String> keySet = currentCheckouts.keySet();
+	            for( String key : keySet )
 	            {
-	                CheckOutTask checkoutTask = (CheckOutTask) task;
-	                checkoutTasks.add( checkoutTask ); 
+	                CheckOutTask checkoutTask = (CheckOutTask) currentCheckouts.get( key );
+   	                currentCheckoutTasks.put( key, checkoutTask );
 	            }
-	            checkoutsInQueue.put( key, checkoutTasks );
+	        }
+	        catch ( BuildManagerException e )
+	        {
+	            addActionError( e.getMessage() );
+	            return ERROR;
+	        }
+
+	        try
+	        {
+	            // queued checkouts
+	            Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
+	            Set<String> keySet = checkouts.keySet();
+	            for( String key : keySet )
+	            {
+	                List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
+	                for( Task task : checkouts.get( key ) )
+	                {
+	                    CheckOutTask checkoutTask = (CheckOutTask) task;
+	                    checkoutTasks.add( checkoutTask ); 
+	                }
+	                checkoutsInQueue.put( key, checkoutTasks );
+	            }
+	        }
+	        catch ( BuildManagerException e )
+	        {
+	            addActionError( e.getMessage() );
+	            return ERROR;
 	        }
 	    }
-	    catch ( BuildManagerException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return ERROR;
-	    }
-	    
+
 	    return SUCCESS;
 	}
 	
@@ -322,7 +388,77 @@
 	                listToIntArray( this.getSelectedCheckOutTaskHashCodes() ) );
 	    return SUCCESS;
 	}
-	
+
+    public String cancelDistributedBuild()
+        throws Exception
+    {
+        try 
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        distributedBuildManager.cancelDistributedBuild( buildAgentUrl, projectGroupId, scmRootAddress );
+
+        return SUCCESS;
+    }
+
+    public String removeDistributedBuildEntry()
+        throws Exception
+    {
+        try 
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        getContinuum().getTaskQueueManager().removeFromDistributedBuildQueue( projectGroupId, scmRootAddress );
+
+        return SUCCESS;
+    }
+
+    public String removeDistributedBuildEntries()
+        throws Exception
+    {
+        try 
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        getContinuum().getTaskQueueManager()
+            .removeTasksFromDistributedBuildQueueWithHashCodes( listToIntArray( this.getSelectedDistributedBuildTaskHashCodes() ) );
+
+        return SUCCESS;
+    }
+
 	private int[] listToIntArray( List<String> strings )
 	{
 	    if ( strings == null || strings.isEmpty() )
@@ -485,4 +621,44 @@
 	{
 	    this.checkoutsInQueue = checkoutsInQueue;
 	}
+
+    public List<DistributedBuildSummary> getDistributedBuildSummary()
+    {
+        return distributedBuildSummary;
+    }
+
+    public void setDistributedBuildSummary( List<DistributedBuildSummary> distributedBuildSummary )
+    {
+        this.distributedBuildSummary = distributedBuildSummary;
+    }
+
+    public String getBuildAgentUrl()
+    {
+        return buildAgentUrl;
+    }
+
+    public void setBuildAgentUrl( String buildAgentUrl )
+    {
+        this.buildAgentUrl = buildAgentUrl;
+    }
+
+    public List<PrepareBuildProjectsTask> getDistributedBuildQueues()
+    {
+        return distributedBuildQueues;
+    }
+
+    public void setDistributedBuildQueues( List<PrepareBuildProjectsTask> distributedBuildQueues )
+    {
+        this.distributedBuildQueues = distributedBuildQueues;
+    }
+
+    public List<String> getSelectedDistributedBuildTaskHashCodes()
+    {
+        return selectedDistributedBuildTaskHashCodes;
+    }
+
+    public void setSelectedDistributedBuildTaskHashCodes( List<String> selectedDistributedBuildTaskHashCodes )
+    {
+        this.selectedDistributedBuildTaskHashCodes = selectedDistributedBuildTaskHashCodes;
+    }
 }

Modified: continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo (original)
+++ continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo Wed Jan 14 08:31:04 2009
@@ -494,5 +494,46 @@
         </field>
       </fields>
     </class>    
+    <class>
+      <name>DistributedBuildSummary</name>
+      <version>1.0.0+</version>
+      <fields>
+        <field>
+          <name>url</name>
+          <version>1.0.0</version>
+          <required>true</required>
+          <description>URL of the build agent</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>projectGroupId</name>
+          <version>1.0.0</version>
+          <required>true</required>
+          <description>ID of the project group</description>
+          <type>int</type>
+        </field>
+        <field>
+          <name>projectGroupName</name>
+          <version>1.0.0</version>
+          <required>true</required>
+          <description>Name of the project group</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>scmRootAddress</name>
+          <version>1.0.0</version>
+          <required>true</required>
+          <description>Scm root address of projects</description>
+          <type>String</type>
+        </field>
+        <field>
+          <name>cancelEnabled</name>
+          <version>1.0.0</version>
+          <required>true</required>
+          <description>Determines if the cancel button is enabled</description>
+          <type>boolean</type>
+        </field>
+      </fields>
+    </class>
   </classes>
 </model>

Modified: continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties Wed Jan 14 08:31:04 2009
@@ -84,6 +84,7 @@
 menu.administration.queues = Queues
 menu.administration.repositories = Local Repositories
 menu.administration.purge = Purge Configurations
+menu.administration.buildAgents = Build Agents
 
 # ----------------------------------------------------------------------
 # Page: error
@@ -248,6 +249,7 @@
 configuration.releaseOutputDirectory.message = Enter the release output directory of the Continuum web application
 configuration.releaseOutputDirectory.required = You must define a release output directory
 configuration.numberOfBuildsInParallel.invalid = Number of Allowed Builds in Parallel must be greater than zero
+configuration.distributedBuildEnabled.label = Enable Distributed Builds
 
 # ----------------------------------------------------------------------
 # Page: Add Project
@@ -1029,3 +1031,49 @@
 parallel.build.queue.page.title= Continuum - Add/Edit Parallel Build Queue
 parallel.build.queue.section.title=Continuum - Add/Edit Parallel Build Queue
 parallel.build.queue.name = Name
+
+# ----------------------------------------------------------------------
+# Page: BuildAgents
+# ----------------------------------------------------------------------
+buildAgents.page.title = Continuum - Build Agents
+buildAgents.section.title = Build Agents
+buildAgents.table.url = Build Agent URL
+buildAgents.table.description = Description
+buildAgents.table.enabled = Enabled
+
+# ----------------------------------------------------------------------
+# Page: Add/Edit BuildAgent
+# ----------------------------------------------------------------------
+buildAgent.page.title = Continuum - Add/Edit Build Agent
+buildAgent.section.title = Add/Edit Build Agent
+buildAgent.url.label = Build Agent URL
+buildAgent.description.label = Description
+buildAgent.enabled.label = Enabled
+buildAgent.error.doesnotexist = Build agent does not exist
+buildAgent.error.duplicate = Build agent already exists
+
+# ----------------------------------------------------------------------
+# Page: View BuildAgent
+# ----------------------------------------------------------------------
+viewBuildAgent.page.title = Continuum - View Build Agent
+viewBuildAgent.section.title = Build Agent
+viewBuildAgent.installations.title = Available Installations
+
+# ----------------------------------------------------------------------
+# Page: Delete BuildAgent
+# ----------------------------------------------------------------------
+deleteBuildAgent.page.title = Continuum - Delete Build Agent
+deleteBuildAgent.section.title = Delete Build Agent
+deleteBuildAgent.confirmation.message = Are you sure you want to delete build agent {0} ?
+
+# ----------------------------------------------------------------------
+# Page: View Distributed Build
+# ----------------------------------------------------------------------
+distributedBuilds.page.title = Continuum - View Distributed Builds
+distributedBuilds.section.title = Distributed Builds
+distributedBuilds.buildQueue.section.title = Build Queue
+distributedBuild.table.projectGroupName = Project Group Name
+distributedBuild.table.scmRootAddress = Scm Root Address
+distributedBuild.table.agentUrl = Build Agent URL
+distributedBuilds.empty = No Distributed Builds
+distributedBuilds.removeEntries = Cancel Entries
\ No newline at end of file

Modified: continuum/trunk/continuum-webapp/src/main/resources/struts.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/resources/struts.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/struts.xml (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/struts.xml Wed Jan 14 08:31:04 2009
@@ -369,6 +369,10 @@
 
     <action name="buildResult" class="buildResult">
       <result name="success">/WEB-INF/jsp/buildResult.jsp</result>
+      <result name="error" type="redirect-action">
+        <param name="actionName">projectGroupSummary</param>
+        <param name="projectGroupId">${projectGroupId}</param>
+      </result>
     </action>
     
     <action name="buildOutputText" class="buildResult">
@@ -754,6 +758,7 @@
     
     <action name="displayQueues" class="queues" method="display">
       <result name="success">/WEB-INF/jsp/admin/buildQueueView.jsp</result>
+      <result name="distributed-build-success">/WEB-INF/jsp/admin/viewDistributedBuilds.jsp</result>
     </action>
     
     <action name="removeBuildQueueEntry" class="queues" method="remove">
@@ -792,6 +797,24 @@
       </result>      
     </action>    
     
+    <action name="cancelDistributedBuild" class="queues" method="cancelDistributedBuild">
+      <result name="success" type="redirect-action">
+        <param name="actionName">displayQueues</param>
+      </result>
+    </action>
+
+    <action name="removeDistributedBuildEntries" class="queues" method="removeDistributedBuildEntries">
+      <result name="success" type="redirect-action">
+        <param name="actionName">displayQueues</param>
+      </result>
+    </action>
+    
+    <action name="removeDistributedBuildEntry" class="queues" method="removeDistributedBuildEntry">
+      <result name="success" type="redirect-action">
+        <param name="actionName">displayQueues</param>
+      </result>
+    </action>
+    
     <!--
     * Build Queue (Parallel Builds)
     -->
@@ -893,6 +916,38 @@
       </result>
     </action>
     
+    <action name="buildAgentList" class="buildAgent" method="list">
+      <result name="success">/WEB-INF/jsp/admin/buildAgentsList.jsp</result>
+    </action>
+    
+    <action name="editBuildAgent" class="buildAgent" method="input">
+      <result name="input">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+      <result name="error">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+    </action>
+    
+    <action name="saveBuildAgent" class="buildAgent" method="save">
+      <result name="input">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+      <result name="error">/WEB-INF/jsp/admin/editBuildAgent.jsp</result>
+      <result name="success" type="redirect-action">
+        <param name="actionName">buildAgentList</param>
+      </result>
+    </action>
+    
+    <action name="deleteBuildAgent" class="buildAgent" method="delete">
+      <result name="error" type="redirect-action">
+        <param name="actionName">buildAgentList</param>
+        <param name="errorMessage">${message}</param>
+      </result>
+      <result name="confirm">/WEB-INF/jsp/admin/confirmDeleteBuildAgent.jsp</result>
+      <result name="success" type="redirect-action">
+        <param name="actionName">buildAgentList</param>
+      </result>
+    </action>
+    
+    <action name="viewBuildAgent" class="buildAgent" method="view">
+      <result name="success">/WEB-INF/jsp/admin/viewBuildAgent.jsp</result>
+    </action>
+
   </package>
 
   <package name="component" extends="default">

Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/applicationContext.xml Wed Jan 14 08:31:04 2009
@@ -65,4 +65,16 @@
     <property name="session" ref="mailSession"/>
   </bean>	
   
+  <bean id="masterBuildAgentTransportServer" class="org.apache.continuum.distributed.transport.master.MasterBuildAgentTransportServer">
+    <constructor-arg ref="distributedBuildManager"/>
+  </bean>
+  
+  <bean name="xmlrpcServicesList" class="java.util.ArrayList">
+    <constructor-arg>
+      <list>
+        <ref bean="masterBuildAgentTransportServer"/>
+      </list>
+    </constructor-arg>
+  </bean>
+    
 </beans>

Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configuration.jsp Wed Jan 14 08:31:04 2009
@@ -31,7 +31,7 @@
     <h3>
       <s:text name="configuration.section.title"/>
     </h3>
-     
+
     <div class="axial">
       <table border="1" cellspacing="2" cellpadding="3" width="100%">
         <c1:data label="%{getText('configuration.workingDirectory.label')}" name="workingDirectory"/>
@@ -41,6 +41,7 @@
                  name="deploymentRepositoryDirectory"/>
         <c1:data label="%{getText('configuration.baseUrl.label')}" name="baseUrl"/>
         <c1:data label="%{getText('configuration.allowed.build.parallel')}" name="numberOfAllowedBuildsinParallel"/>
+        <c1:data label="%{getText('configuration.distributedBuildEnabled.label')}" name="distributedBuildEnabled"/>
       </table>
       <div class="functnbar3">
         <s:form action="configuration!input.action" method="post">

Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/configurationEdit.jsp Wed Jan 14 08:31:04 2009
@@ -82,7 +82,7 @@
                 <s:text name="configuration.baseUrl.message"/>
               </p></s:param>
             </s:textfield>
-            
+
             <s:textfield label="%{getText('configuration.allowed.build.parallel')}" name="numberOfAllowedBuildsinParallel" size="10">
               <s:param name="desc"><p>
                 <s:text name="configuration.allowed.build.paralle.message"/>
@@ -92,7 +92,9 @@
             <%--
             <s:checkbox label="%{getText('configuration.disable.parallel.builds')}" name="requireParallelBuilds" required="true"/>
             --%>
-            
+
+            <s:checkbox label="%{getText('configuration.distributedBuildEnabled.label')}" name="distributedBuildEnabled"/>
+
             <s:hidden name="requireReleaseOutput"/>
           </tbody>
         </table>

Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/navigations/Menu.jsp Wed Jan 14 08:31:04 2009
@@ -166,6 +166,16 @@
             </s:a>
           </div>
         </redback:ifAuthorized>
+        <redback:ifAuthorized permission="continuum-manage-distributed-builds">
+          <s:url id="buildAgentList" action="buildAgentList" namespace="/security" includeParams="none"/>
+          <div class="body">
+            <s:a href="%{buildAgentList}">
+              <s:text name="menu.administration.buildAgents"/>
+            </s:a>
+          </div>
+        </redback:ifAuthorized>
+        <redback:ifAuthorized permission="continuum-manage-distributed-builds">
+        </redback:ifAuthorized>
         <redback:ifAuthorized permission="continuum-manage-users">
           <s:url id="userListUrl" action="userlist" namespace="/security" includeParams="none"/>
           <div class="body">

Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/web.xml Wed Jan 14 08:31:04 2009
@@ -91,11 +91,32 @@
     <servlet-class>org.apache.maven.continuum.xmlrpc.server.ContinuumXmlRpcServlet</servlet-class>
   </servlet>
 
+  <servlet>
+    <servlet-name>MasterXmlRpcServlet</servlet-name>
+    <servlet-class>
+      com.atlassian.xmlrpc.spring.BinderSpringXmlRpcServlet
+    </servlet-class>
+    <init-param>
+      <param-name>serviceListBeanName</param-name>
+      <param-value>xmlrpcServicesList</param-value>
+    </init-param>
+    <init-param>
+      <param-name>enabledForExtensions</param-name>
+      <param-value>true</param-value>
+    </init-param>
+    <load-on-startup>1</load-on-startup>
+  </servlet>
+  
   <servlet-mapping>
     <servlet-name>XmlRpcServlet</servlet-name>
     <url-pattern>/xmlrpc</url-pattern>
   </servlet-mapping>
 
+  <servlet-mapping>
+    <servlet-name>MasterXmlRpcServlet</servlet-name>
+    <url-pattern>/master-xmlrpc</url-pattern>
+  </servlet-mapping>
+  
   <error-page>
     <error-code>403</error-code>
     <location>/WEB-INF/jsp/error/httpError.jsp?errorCode=403</location>

Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-api/pom.xml Wed Jan 14 08:31:04 2009
@@ -31,7 +31,7 @@
     <dependency>
       <groupId>org.apache.xmlrpc</groupId>
       <artifactId>xmlrpc-common</artifactId>
-      <version>3.0</version>
+      <version>3.1</version>
     </dependency>
   </dependencies>
 

Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-client/pom.xml Wed Jan 14 08:31:04 2009
@@ -36,7 +36,7 @@
     <dependency>
       <groupId>org.apache.xmlrpc</groupId>
       <artifactId>xmlrpc-client</artifactId>
-      <version>3.0</version>
+      <version>3.1</version>
     </dependency>
   </dependencies>
   <build>

Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/pom.xml Wed Jan 14 08:31:04 2009
@@ -56,7 +56,7 @@
     <dependency>
       <groupId>org.apache.xmlrpc</groupId>
       <artifactId>xmlrpc-server</artifactId>
-      <version>3.0</version>
+      <version>3.1</version>
     </dependency>
     <dependency>
       <groupId>net.sf.dozer</groupId>

Modified: continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java (original)
+++ continuum/trunk/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java Wed Jan 14 08:31:04 2009
@@ -1063,15 +1063,15 @@
         {  
             Map<String, List<Task>> buildTasks = parallelBuildsManager.getProjectsInBuildQueues();
             Set<String> keys = buildTasks.keySet();
-            List<org.apache.maven.continuum.buildqueue.BuildProjectTask> convertedTasks =
-                new ArrayList<org.apache.maven.continuum.buildqueue.BuildProjectTask>();
+            List<org.apache.continuum.taskqueue.BuildProjectTask> convertedTasks =
+                new ArrayList<org.apache.continuum.taskqueue.BuildProjectTask>();
             
             for( String key : keys )
             {
                 List<Task> tasks = buildTasks.get( key );
                 for( Task task : tasks )
                 {
-                    convertedTasks.add( ( org.apache.maven.continuum.buildqueue.BuildProjectTask ) task );
+                    convertedTasks.add( ( org.apache.continuum.taskqueue.BuildProjectTask ) task );
                 }
             }
             
@@ -1469,10 +1469,10 @@
     // ----------------------------------------------------------------------
 
     private List<BuildProjectTask> populateBuildProjectTaskList(
-        List<org.apache.maven.continuum.buildqueue.BuildProjectTask> buildProjectTasks )
+        List<org.apache.continuum.taskqueue.BuildProjectTask> buildProjectTasks )
     {
         List<BuildProjectTask> responses = new ArrayList<BuildProjectTask>();
-        for ( org.apache.maven.continuum.buildqueue.BuildProjectTask buildProjectTask : buildProjectTasks )
+        for ( org.apache.continuum.taskqueue.BuildProjectTask buildProjectTask : buildProjectTasks )
         {
 
             responses.add( (BuildProjectTask) mapper.map( buildProjectTask, BuildProjectTask.class ) );

Modified: continuum/trunk/pom.xml
URL: http://svn.apache.org/viewvc/continuum/trunk/pom.xml?rev=734441&r1=734440&r2=734441&view=diff
==============================================================================
--- continuum/trunk/pom.xml (original)
+++ continuum/trunk/pom.xml Wed Jan 14 08:31:04 2009
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding='UTF-8'?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
@@ -16,8 +16,7 @@
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+--><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.continuum</groupId>
@@ -220,6 +219,8 @@
     <module>continuum-docs</module>
     <module>continuum-jetty</module>
     <module>continuum-purge</module>
+    <module>continuum-distributed-build</module>
+    <module>continuum-builder</module>
   </modules>
   <!-- TODO: confirm whether these are needed -->
   <repositories>
@@ -584,6 +585,57 @@
         <version>${pom.version}</version>
       </dependency>
       <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-builder</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-buildagent-api</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-buildagent-core</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-buildagent-webapp</artifactId>
+        <version>${pom.version}</version>
+        <type>war</type>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-distributed-build-transport-slave-api</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-distributed-build-transport-slave-server</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-distributed-build-transport-slave-client</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-distributed-build-transport-master-api</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-distributed-build-transport-master-server</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.continuum</groupId>
+        <artifactId>continuum-distributed-build-transport-master-client</artifactId>
+        <version>${pom.version}</version>
+      </dependency>
+      <dependency>
         <groupId>net.sf.ehcache</groupId>
         <artifactId>ehcache</artifactId>
         <version>1.5.0</version>

Propchange: continuum/trunk/src/site/
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: continuum/trunk/src/site/apt/
------------------------------------------------------------------------------
    svn:mergeinfo =