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/09/14 16:28:59 UTC

svn commit: r695224 - in /continuum/branches/continuum-transient-state: continuum-api/src/main/java/org/apache/continuum/dao/ continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/ continuum-api/src/main/java/org/apache/maven/continuum/ co...

Author: ctan
Date: Sun Sep 14 07:28:58 2008
New Revision: 695224

URL: http://svn.apache.org/viewvc?rev=695224&view=rev
Log:
fixed prepare build of projects

Modified:
    continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java
    continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java
    continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
    continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java
    continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
    continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
    continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java
    continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java
    continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml
    continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/AbstractDao.java
    continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java
    continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java

Modified: continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java (original)
+++ continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/dao/ProjectDao.java Sun Sep 14 07:28:58 2008
@@ -57,7 +57,7 @@
     Project getProjectWithCheckoutResult( int projectId )
         throws ContinuumStoreException;
 
-    Project getProjectWithScmResult( int projectId )
+    Project getProjectWithScmDetails( int projectId )
         throws ContinuumStoreException;
 
     List<Project> getProjectsInGroup( int projectGroupId )

Modified: continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java (original)
+++ continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/continuum/taskqueue/manager/TaskQueueManager.java Sun Sep 14 07:28:58 2008
@@ -51,6 +51,9 @@
     boolean isInCheckoutQueue( int projectId )
         throws TaskQueueManagerException;
 
+    boolean isInCurrentPrepareBuildTask( int projectId )
+        throws TaskQueueManagerException;
+
     boolean isInPrepareBuildQueue( int projectId )
         throws TaskQueueManagerException;
 

Modified: continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java (original)
+++ continuum/branches/continuum-transient-state/continuum-api/src/main/java/org/apache/maven/continuum/Continuum.java Sun Sep 14 07:28:58 2008
@@ -673,17 +673,20 @@
     // ----------------------------------------------------------------------
     //
     // ----------------------------------------------------------------------
-    Map<Integer, Integer> getProjectsAndBuildDefinitionsMap( Collection<Project> projects, 
+    Collection<Map<Integer, Integer>> getProjectsAndBuildDefinitions( Collection<Project> projects, 
                                                              List<BuildDefinition> bds,
                                                              boolean checkDefaultBuildDefinitionForProject )
         throws ContinuumException;
 
-    Map<Integer, Integer> getProjectsAndBuildDefinitionsMap( Collection<Project> projects, 
+    Collection<Map<Integer, Integer>> getProjectsAndBuildDefinitions( Collection<Project> projects, 
                                                              int buildDefinitionId )
         throws ContinuumException;
 
-    void prepareBuildProjects( Map<Integer, Integer> projectsAndBuildDefinitionsMap )
+    void prepareBuildProjects( Collection<Map<Integer, Integer>> projectsAndBuildDefinitions )
         throws ContinuumException;
+    
+    //void prepareBuildProjects( Map<Integer, Integer> projectsAndBuildDefinitionsMap )
+    //    throws ContinuumException;
 
     // ----------------------------------------------------------------------
     // Task Queue Manager

Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/continuum/taskqueue/manager/DefaultTaskQueueManager.java Sun Sep 14 07:28:58 2008
@@ -254,12 +254,13 @@
     
         return false;
     }
-    
-    public boolean isInPrepareBuildQueue( int projectId )
+
+    public boolean isInCurrentPrepareBuildTask( int projectId )
         throws TaskQueueManagerException
     {
         Task task = getPrepareBuildTaskQueueExecutor().getCurrentTask();
-        if ( task != null && task instanceof PrepareBuildProjectsTask )
+
+        if ( task != null &&  task instanceof PrepareBuildProjectsTask )
         {
             Map<Integer, Integer> map = ( (PrepareBuildProjectsTask) task).getProjectsBuildDefinitionsMap();
             
@@ -273,9 +274,43 @@
                 }
             }
         }
+        
         return false;
     }
     
+    public boolean isInPrepareBuildQueue( int projectId )
+        throws TaskQueueManagerException
+    {
+        try
+        {
+            List<PrepareBuildProjectsTask> queue = prepareBuildQueue.getQueueSnapshot();
+            
+            for ( PrepareBuildProjectsTask task : queue )
+            {
+                if ( task != null )
+                {
+                    Map<Integer, Integer> map = ( (PrepareBuildProjectsTask) task).getProjectsBuildDefinitionsMap();
+                    
+                    if ( map.size() > 0 )
+                    {
+                        Set<Integer> projectIds = map.keySet();
+                        
+                        if ( projectIds.contains( new Integer( projectId ) ) )
+                        {
+                            return true;
+                        }
+                    }
+                }
+            }
+            
+            return false;
+        }
+        catch ( TaskQueueException e )
+        {
+            throw new TaskQueueManagerException( "Error while getting the tasks in prepare build queue", e );
+        }
+    }
+    
     public boolean isInPurgeQueue( int purgeConfigId )
         throws TaskQueueManagerException
     {

Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Sun Sep 14 07:28:58 2008
@@ -1005,15 +1005,19 @@
             projectsList = getProjects();
         }
 
-        Map<Integer, Integer> projectsAndBuildDefinitionsMap = getProjectsAndBuildDefinitionsMap( projectsList, null, true );
+        Collection<Map<Integer,Integer>> projectsAndBuildDefinitions = getProjectsAndBuildDefinitions( projectsList, null, true );
 
-        prepareBuildProjects( projectsAndBuildDefinitionsMap );
+        prepareBuildProjects( projectsAndBuildDefinitions );
 
         for ( Project project : projectsList )
         {
-            if ( projectsAndBuildDefinitionsMap.get( project.getId() ) != null )
+            for ( Map<Integer, Integer> map : projectsAndBuildDefinitions )
             {
-                buildProject( project, projectsAndBuildDefinitionsMap.get( project.getId() ), trigger );
+                if ( map.get( project.getId() ) != null )
+                {
+                    buildProject( project, map.get( project.getId() ), trigger );
+                    break;
+                }
             }
         }
     }
@@ -1041,15 +1045,19 @@
             projectsList = getProjects();
         }
 
-        Map<Integer, Integer> projectsAndBuildDefinitionsMap = getProjectsAndBuildDefinitionsMap( projectsList, buildDefinitionId );
+        Collection<Map<Integer, Integer>> projectsAndBuildDefinitions = getProjectsAndBuildDefinitions( projectsList, buildDefinitionId );
 
-        prepareBuildProjects( projectsAndBuildDefinitionsMap );
+        prepareBuildProjects( projectsAndBuildDefinitions );
         
         for ( Project project : projectsList )
         {
-            if ( projectsAndBuildDefinitionsMap.get( project.getId() ) != null )
+            for ( Map<Integer, Integer> map : projectsAndBuildDefinitions )
             {
-                buildProject( project, buildDefinitionId, trigger );
+                if ( map.get( project.getId() ) != null )
+                {
+                    buildProject( project, buildDefinitionId, trigger );
+                    break;
+                }
             }
         }
     }
@@ -1101,8 +1109,6 @@
     {
         Collection<Project> projectsList;
 
-        Map<Integer, Integer> projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
-        
         try
         {
             projectsList = getProjectsInBuildOrder( projectDao.getProjectsWithDependenciesByGroupId( projectGroupId ) );
@@ -1114,17 +1120,21 @@
             projectsList = getProjects();
         }
 
-        projectsAndBuildDefinitionsMap = getProjectsAndBuildDefinitionsMap( projectsList, 
-                                                                            bds, 
-                                                                            checkDefaultBuildDefinitionForProject );
+        Collection<Map<Integer, Integer>> projectsAndBuildDefinitions = getProjectsAndBuildDefinitions( projectsList, 
+                                                                                                        bds,
+                                                                                                        checkDefaultBuildDefinitionForProject );
 
-        prepareBuildProjects( projectsAndBuildDefinitionsMap );
+        prepareBuildProjects( projectsAndBuildDefinitions );
 
         for ( Project project : projectsList )
         {
-            if ( projectsAndBuildDefinitionsMap.get( project.getId() ) != null )
+            for ( Map<Integer, Integer> map : projectsAndBuildDefinitions )
             {
-                buildProject( project, projectsAndBuildDefinitionsMap.get( project.getId() ), ContinuumProjectState.TRIGGER_FORCED );
+                if ( map.get( project.getId() ) != null )
+                {
+                    buildProject( project, map.get( project.getId() ), ContinuumProjectState.TRIGGER_FORCED );
+                    break;
+                }
             }
         }
     }
@@ -1167,9 +1177,9 @@
 
             projectsList = getProjects();
         }
-
-        Map<Integer, Integer> projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
         
+        Map<String, Map<Integer, Integer>> map = new HashMap<String, Map<Integer, Integer>>();
+
         for ( Project project : projectsList )
         {
             List<Integer> buildDefIds = (List<Integer>) projectsMap.get( new Integer( project.getId() ) );
@@ -1183,25 +1193,46 @@
                         if ( buildDefId != null && !taskQueueManager.isInBuildingQueue( project.getId(), buildDefId.intValue() ) &&
                             !taskQueueManager.isInCheckoutQueue( project.getId() ) && !taskQueueManager.isInPrepareBuildQueue( project.getId() ) )
                         {
+                            Project proj = projectDao.getProjectWithScmDetails( project.getId() );
+
+                            String scmRootAddress = proj.getScmRootAddress();
+
+                            Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRootAddress );
+                            
+                            if ( projectsAndBuildDefinitionsMap == null )
+                            {
+                                projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
+                            }
+                            
                             projectsAndBuildDefinitionsMap.put( project.getId(), buildDefId );
+                            
+                            map.put( scmRootAddress, projectsAndBuildDefinitionsMap );
                         }
                     } 
                     catch ( TaskQueueManagerException e )
                     {
                         throw new ContinuumException( e.getMessage(), e );
                     }
+                    catch ( ContinuumStoreException e )
+                    {
+                        // do we throw this or skip it?
+                        throw new ContinuumException( "Error while retrieving project", e );
+                    }
                 }
             }
         }
-        
-        prepareBuildProjects( projectsAndBuildDefinitionsMap );
-        
+
+        prepareBuildProjects( map.values() );
+
         for ( Project project : projectsList )
         {
             //buildProject( project, projectsAndBuildDefinitionsMap.get( project.getId() ), ContinuumProjectState.TRIGGER_SCHEDULED, false );
-            if ( projectsAndBuildDefinitionsMap.get(  project.getId() ) != null )
+            for ( Map<Integer, Integer> aMap : map.values() )
             {
-                buildProject( project, projectsAndBuildDefinitionsMap.get( project.getId() ), ContinuumProjectState.TRIGGER_SCHEDULED );
+                if ( aMap.get(  project.getId() ) != null )
+                {
+                    buildProject( project, aMap.get( project.getId() ), ContinuumProjectState.TRIGGER_SCHEDULED );
+                }
             }
         }
     }
@@ -1231,11 +1262,11 @@
         {
             throw new ContinuumException( e.getMessage(), e );
         }
-     
+
         Map<Integer, Integer> projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>( projectId, buildDefinitionId );
-        
+
         prepareBuildProjects( projectsAndBuildDefinitionsMap );
-        
+
         buildProject( projectId, buildDefinitionId, ContinuumProjectState.TRIGGER_FORCED );
     }
 
@@ -1264,9 +1295,9 @@
         }
 
         Map<Integer, Integer> projectsBuildDefinitionsMap = new HashMap<Integer, Integer>( projectId, buildDef.getId() );
-        
+
         prepareBuildProjects( projectsBuildDefinitionsMap );
-        
+
         //buildProject( projectId, buildDef.getId(), trigger, false );
 
         buildProject( projectId, buildDef.getId(), trigger );
@@ -1613,7 +1644,7 @@
         
         try
         {
-            project = projectDao.getProjectWithScmResult( projectId );
+            project = projectDao.getProjectWithScmDetails( projectId );
         }
         catch ( ContinuumStoreException e )
         {
@@ -2019,6 +2050,8 @@
 
         ProjectGroup projectGroup = (ProjectGroup) result.getProjectGroups().iterator().next();
 
+        ProjectScmRoot projectScmRoot;
+
         try
         {
             if ( projectGroupId == -1 )
@@ -2055,17 +2088,17 @@
 
             String url = (String) context.get( CreateProjectsFromMetadataAction.KEY_URL );
             
-            ProjectScmRoot scmRoot = projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( projectGroup.getId(), url );
+            projectScmRoot = projectScmRootDao.getProjectScmRootByProjectGroupAndScmRootAddress( projectGroup.getId(), url );
             
-            if ( scmRoot == null )
+            if ( projectScmRoot == null )
             {
-                scmRoot = new ProjectScmRoot();
+                projectScmRoot = new ProjectScmRoot();
                 
-                scmRoot.setProjectGroup( projectGroup );
+                projectScmRoot.setProjectGroup( projectGroup );
                 
-                scmRoot.setScmRootAddress( url );
+                projectScmRoot.setScmRootAddress( url );
                 
-                projectScmRootDao.addProjectScmRoot( scmRoot );
+                projectScmRoot = projectScmRootDao.addProjectScmRoot( projectScmRoot );
 
             }
 
@@ -2102,6 +2135,7 @@
                 project.setScmPassword( null );
             }
 
+            project.setScmRootAddress( projectScmRoot.getScmRootAddress() );
             projectGroup.addProject( project );
         }
 
@@ -3545,12 +3579,12 @@
         }
     }
    
-    public Map<Integer, Integer> getProjectsAndBuildDefinitionsMap( Collection<Project> projects, 
+    public Collection<Map<Integer, Integer>> getProjectsAndBuildDefinitions( Collection<Project> projects, 
                                                                     List<BuildDefinition> bds,
                                                                     boolean checkDefaultBuildDefinitionForProject )
         throws ContinuumException
     {
-        Map<Integer, Integer> projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
+        Map<String, Map<Integer, Integer>> map = new HashMap<String, Map<Integer, Integer>>();
 
         for ( Project project : projects )
         {
@@ -3620,26 +3654,41 @@
                 continue;
             }
 
-            projectsAndBuildDefinitionsMap.put( projectId, buildDefId );
+            try
+            {
+                Project proj = projectDao.getProjectWithScmDetails( projectId );
+
+                String scmRootAddress = proj.getScmRootAddress();
+
+                Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRootAddress );
+
+                if ( projectsAndBuildDefinitionsMap == null )
+                {
+                    projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
+                }
+
+                projectsAndBuildDefinitionsMap.put( projectId, buildDefId );
+
+                map.put( scmRootAddress, projectsAndBuildDefinitionsMap );
+            }
+            catch ( ContinuumStoreException e )
+            {
+                throw new ContinuumException( "Erro while retrieving project", e );
+            }
         }
 
-        return projectsAndBuildDefinitionsMap;
+        return map.values();
     }
 
-    public Map<Integer, Integer> getProjectsAndBuildDefinitionsMap( Collection<Project> projects, 
+    public Collection<Map<Integer, Integer>> getProjectsAndBuildDefinitions( Collection<Project> projects, 
                                                                     int buildDefinitionId )
         throws ContinuumException
     {
-        Map<Integer, Integer> projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
+        Map<String, Map<Integer,Integer>> map = new HashMap<String, Map<Integer, Integer>>();
 
         for ( Project project : projects )
         {
             int projectId = project.getId();
-            
-            if ( projectsAndBuildDefinitionsMap.containsKey( projectId ) )
-            {
-                continue;
-            }
 
             try
             {
@@ -3653,16 +3702,42 @@
                 {
                     taskQueueManager.removeProjectFromCheckoutQueue( projectId );
                 }
+                
+                Project proj = projectDao.getProjectWithScmDetails( projectId );
+                
+                String scmRootAddress = proj.getScmRootAddress();
+                
+                Map<Integer, Integer> projectsAndBuildDefinitionsMap = map.get( scmRootAddress );
+                
+                if ( projectsAndBuildDefinitionsMap == null )
+                {
+                    projectsAndBuildDefinitionsMap = new HashMap<Integer, Integer>();
+                }
+                
+                projectsAndBuildDefinitionsMap.put( projectId, buildDefinitionId );
+                
+                map.put( scmRootAddress, projectsAndBuildDefinitionsMap );
             }
             catch ( TaskQueueManagerException e )
             {
                 throw new ContinuumException( e.getMessage(), e );
             }
-
-            projectsAndBuildDefinitionsMap.put( projectId, buildDefinitionId );
+            catch ( ContinuumStoreException e )
+            {
+                throw new ContinuumException( "Error while retrieving project", e );
+            }
         }
 
-        return projectsAndBuildDefinitionsMap;
+        return map.values();
+    }
+
+    public void prepareBuildProjects( Collection<Map<Integer, Integer>> projectsBuildDefinitions )
+        throws ContinuumException
+    {
+        for ( Map<Integer, Integer> map : projectsBuildDefinitions )
+        {
+            prepareBuildProjects( map );
+        }
     }
 
     public void prepareBuildProjects( Map<Integer, Integer> projectsBuildDefinitionsMap )

Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/BuildProjectTaskExecutor.java Sun Sep 14 07:28:58 2008
@@ -21,7 +21,6 @@
 
 import org.apache.continuum.taskqueue.manager.TaskQueueManager;
 import org.apache.continuum.taskqueue.manager.TaskQueueManagerException;
-import org.apache.maven.continuum.Continuum;
 import org.apache.maven.continuum.buildqueue.BuildProjectTask;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.taskqueue.Task;
@@ -57,7 +56,8 @@
 
         try
         {
-            while ( taskQueueManager.isInPrepareBuildQueue( buildProjectTask.getProjectId() ) )
+            while ( taskQueueManager.isInPrepareBuildQueue( buildProjectTask.getProjectId() ) ||
+                    taskQueueManager.isInCurrentPrepareBuildTask( buildProjectTask.getProjectId() ) )
             {
                 Thread.sleep( 1000 );
             }

Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/buildcontroller/DefaultBuildController.java Sun Sep 14 07:28:58 2008
@@ -357,7 +357,7 @@
 
         try
         {
-            Project project = projectDao.getProjectWithScmResult( projectId );
+            Project project = projectDao.getProjectWithScmDetails( projectId );
             
             context.setProject( project );
 

Modified: continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java (original)
+++ continuum/branches/continuum-transient-state/continuum-core/src/main/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutor.java Sun Sep 14 07:28:58 2008
@@ -28,7 +28,7 @@
 import org.codehaus.plexus.util.StringUtils;
 
 /**
- * @author Maria Catherine Tan
+ * @author <a href="mailto:ctan@apache.org">Maria Catherine Tan</a>
  * @plexus.component role="org.codehaus.plexus.taskqueue.execution.TaskExecutor"
  * role-hint="prepare-build-project"
  */
@@ -136,7 +136,7 @@
 
         try
         {
-            Project project = projectDao.getProjectWithScmResult( projectId );
+            Project project = projectDao.getProjectWithScmDetails( projectId );
             ProjectGroup projectGroup = project.getProjectGroup();
             
             List<ProjectScmRoot> scmRoots = projectScmRootDao.getProjectScmRootByProjectGroup( projectGroup.getId() );

Modified: continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml (original)
+++ continuum/branches/continuum-transient-state/continuum-model/src/main/mdo/continuum.xml Sun Sep 14 07:28:58 2008
@@ -344,13 +344,18 @@
             <multiplicity>*</multiplicity>
           </association>
         </field>     
-        <field jpox.fetch-groups="project-all-details project-with-scm-result">
+        <field jpox.fetch-groups="project-all-details project-with-scm-details">
           <name>scmResult</name>
           <version>1.1.2+</version>
           <association>
             <type>ScmResult</type>
           </association>
-        </field>   
+        </field>
+        <field jpox.fetch-groups="project-all-details project-with-scm-details">
+          <name>scmRootAddress</name>
+          <version>1.1.2+</version>
+          <type>String</type>
+        </field>
       </fields>
     </class>
 

Modified: continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/AbstractDao.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/AbstractDao.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/AbstractDao.java (original)
+++ continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/AbstractDao.java Sun Sep 14 07:28:58 2008
@@ -57,7 +57,7 @@
 
     protected static final String BUILD_TEMPLATE_BUILD_DEFINITIONS = "build-template-build-definitions";
     
-    protected static final String PROJECT_WITH_SCM_RESULT_FETCH_GROUP = "project-with-scm-result";
+    protected static final String PROJECT_WITH_SCM_DETAILS_FETCH_GROUP = "project-with-scm-details";
 
     /**
      * @plexus.requirement

Modified: continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java (original)
+++ continuum/branches/continuum-transient-state/continuum-store/src/main/java/org/apache/continuum/dao/ProjectDaoImpl.java Sun Sep 14 07:28:58 2008
@@ -183,10 +183,10 @@
         return (Project) getObjectById( Project.class, projectId, PROJECT_WITH_CHECKOUT_RESULT_FETCH_GROUP );
     }
     
-    public Project getProjectWithScmResult( int projectId )
+    public Project getProjectWithScmDetails( int projectId )
         throws ContinuumStoreException
     {
-        return (Project) getObjectById( Project.class, projectId, PROJECT_WITH_SCM_RESULT_FETCH_GROUP );
+        return (Project) getObjectById( Project.class, projectId, PROJECT_WITH_SCM_DETAILS_FETCH_GROUP );
     }
 
     public List<Project> getProjectsInGroup( int projectGroupId )

Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java?rev=695224&r1=695223&r2=695224&view=diff
==============================================================================
--- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java (original)
+++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectsListAction.java Sun Sep 14 07:28:58 2008
@@ -20,6 +20,7 @@
  */
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -159,16 +160,23 @@
                 sortedProjects = projectsList;
             }
 
-            Map<Integer, Integer> projectsBuildDefsMap = getProjectsBuildDefsMap( sortedProjects );
+            Collection<Map<Integer, Integer>> projectsBuildDefs = getProjectsBuildDefsMap( sortedProjects );
             
-            getContinuum().prepareBuildProjects( projectsBuildDefsMap );
+            getContinuum().prepareBuildProjects( projectsBuildDefs );
             
             for ( Project project : sortedProjects )
             {
                 if ( this.getBuildDefinitionId() <= 0 )
                 {
-                    getContinuum().buildProject( project.getId(), projectsBuildDefsMap.get( project.getId() ),
-                                                 ContinuumProjectState.TRIGGER_FORCED );
+                    for ( Map<Integer, Integer> map : projectsBuildDefs )
+                    {
+                        if ( map.get( project.getId() ) != null )
+                        {
+                            getContinuum().buildProject( project.getId(), map.get( project.getId() ),
+                                                         ContinuumProjectState.TRIGGER_FORCED );
+                            break;
+                        }
+                    }
                 }
                 else
                 {
@@ -241,11 +249,9 @@
         return SUCCESS;
     }
     
-    private Map<Integer, Integer> getProjectsBuildDefsMap( List<Project> projects )
+    private Collection<Map<Integer, Integer>> getProjectsBuildDefsMap( List<Project> projects )
         throws ContinuumException
     {
-        Map<Integer, Integer> projectsBuildDefsMap = new HashMap<Integer, Integer>();
-        
         if ( this.getBuildDefinitionId() <= 0 )
         {
             boolean checkDefaultBuildDefinitionForProject = false;
@@ -257,14 +263,14 @@
             
             List<BuildDefinition> groupDefaultBDs = getContinuum().getDefaultBuildDefinitionsForProjectGroup( projectGroupId );
             
-            return getContinuum().getProjectsAndBuildDefinitionsMap( projects, 
-                                                                     groupDefaultBDs, 
-                                                                     checkDefaultBuildDefinitionForProject );
+            return getContinuum().getProjectsAndBuildDefinitions( projects, 
+                                                                  groupDefaultBDs, 
+                                                                  checkDefaultBuildDefinitionForProject );
         }
         else
         {
-            return getContinuum().getProjectsAndBuildDefinitionsMap( projects,
-                                                                     this.getBuildDefinitionId() );
+            return getContinuum().getProjectsAndBuildDefinitions( projects,
+                                                                  this.getBuildDefinitionId() );
         }
     }