Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupAction.java Tue Sep 2 06:24:15 2008 @@ -19,7 +19,9 @@ * under the License. */ +import org.apache.continuum.model.project.ProjectScmRoot; import org.apache.continuum.model.repository.LocalRepository; +import org.apache.continuum.taskqueue.manager.TaskQueueManager; import org.apache.maven.continuum.ContinuumException; import org.apache.maven.continuum.model.project.BuildDefinition; import org.apache.maven.continuum.model.project.BuildResult; @@ -78,6 +80,11 @@ */ private RoleManager roleManager; + /** + * @plexus.requirement + */ + private TaskQueueManager taskQueueManager; + private int projectGroupId; private ProjectGroup projectGroup; @@ -117,9 +124,11 @@ private String url; private int repositoryId; - + private List repositories; - + + private List projectScmRoots; + public String summary() throws ContinuumException { @@ -220,6 +229,8 @@ preferredExecutor = "shell"; } } + + projectScmRoots = getContinuum().getProjectScmRootByProjectGroup( projectGroup.getId() ); } return SUCCESS; @@ -292,7 +303,7 @@ } public String edit() - throws ContinuumException + throws Exception { try { @@ -319,7 +330,7 @@ while ( proj.hasNext() ) { Project p = (Project) proj.next(); - if ( getContinuum().isInCheckoutQueue( p.getId() ) ) + if ( taskQueueManager.isInCheckoutQueue( p.getId() ) ) { projectInCOQueue = true; } @@ -930,4 +941,14 @@ { this.repositories = repositories; } + + public List getProjectScmRoots() + { + return projectScmRoots; + } + + public void setProjectScmRoots( List projectScmRoots ) + { + this.projectScmRoots = projectScmRoots; + } } 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=691239&r1=691238&r2=691239&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 Tue Sep 2 06:24:15 2008 @@ -20,8 +20,10 @@ */ import java.util.ArrayList; +import java.util.HashMap; 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; @@ -146,8 +148,8 @@ Project p = getContinuum().getProjectWithAllDetails( projectId ); projectsList.add( p ); } - - List sortedProjects; + + List sortedProjects; try { sortedProjects = getContinuum().getProjectsInBuildOrder( projectsList ); @@ -157,6 +159,25 @@ sortedProjects = projectsList; } + Map projectsBuildDefsMap = getProjectsBuildDefsMap( sortedProjects ); + + for ( Project project : sortedProjects ) + { + getContinuum().prepareBuildProjects( projectsBuildDefsMap ); + + if ( this.getBuildDefinitionId() <= 0 ) + { + getContinuum().buildProject( project.getId(), projectsBuildDefsMap.get( project.getId() ), + ContinuumProjectState.TRIGGER_FORCED ); + } + else + { + getContinuum().buildProject( project.getId(), this.getBuildDefinitionId(), + ContinuumProjectState.TRIGGER_FORCED ); + } + } + + /* //TODO : Change this part because it's a duplicate of DefaultContinuum.buildProjectGroup* List groupDefaultBDs = null; @@ -164,6 +185,8 @@ { groupDefaultBDs = getContinuum().getDefaultBuildDefinitionsForProjectGroup( projectGroupId ); } + + for ( Iterator i = sortedProjects.iterator(); i.hasNext(); ) { Project project = (Project) i.next(); @@ -212,11 +235,38 @@ ContinuumProjectState.TRIGGER_FORCED ); } } - + */ } return SUCCESS; } + + private Map getProjectsBuildDefsMap( List projects ) + throws ContinuumException + { + Map projectsBuildDefsMap = new HashMap(); + + if ( this.getBuildDefinitionId() <= 0 ) + { + boolean checkDefaultBuildDefinitionForProject = false; + + if ( this.getBuildDefinitionId() == -1 ) + { + checkDefaultBuildDefinitionForProject = true; + } + + List groupDefaultBDs = getContinuum().getDefaultBuildDefinitionsForProjectGroup( projectGroupId ); + + return getContinuum().getProjectsAndBuildDefinitionsMap( projects, + groupDefaultBDs, + checkDefaultBuildDefinitionForProject ); + } + else + { + return getContinuum().getProjectsAndBuildDefinitionsMap( projects, + this.getBuildDefinitionId() ); + } + } public String getProjectGroupName() throws ContinuumException Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/SummaryAction.java Tue Sep 2 06:24:15 2008 @@ -19,6 +19,8 @@ * under the License. */ +import org.apache.continuum.taskqueue.manager.TaskQueueManager; +import org.apache.continuum.taskqueue.manager.TaskQueueManagerException; import org.apache.maven.continuum.ContinuumException; import org.apache.maven.continuum.model.project.BuildResult; import org.apache.maven.continuum.model.project.Project; @@ -53,6 +55,11 @@ private GroupSummary groupSummary = new GroupSummary(); + /** + * @plexus.requirement + */ + private TaskQueueManager taskQueueManager; + public String execute() throws ContinuumException { @@ -101,19 +108,26 @@ model.setProjectGroupName( project.getProjectGroup().getName() ); model.setProjectType( project.getExecutorId() ); - - if ( getContinuum().isInBuildingQueue( project.getId() ) ) - { - model.setInBuildingQueue( true ); - } - else if ( getContinuum().isInCheckoutQueue( project.getId() ) ) + + try { - model.setInCheckoutQueue( true ); + if ( taskQueueManager.isInBuildingQueue( project.getId() ) ) + { + model.setInBuildingQueue( true ); + } + else if ( taskQueueManager.isInCheckoutQueue( project.getId() ) ) + { + model.setInCheckoutQueue( true ); + } + else + { + model.setInBuildingQueue( false ); + model.setInCheckoutQueue( false ); + } } - else + catch ( TaskQueueManagerException e ) { - model.setInBuildingQueue( false ); - model.setInCheckoutQueue( false ); + throw new ContinuumException( e.getMessage(), e ); } model.setState( project.getState() ); Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/AbstractBuildQueueAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/AbstractBuildQueueAction.java?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/AbstractBuildQueueAction.java (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/AbstractBuildQueueAction.java Tue Sep 2 06:24:15 2008 @@ -20,6 +20,8 @@ import org.apache.maven.continuum.ContinuumException; import org.apache.maven.continuum.buildqueue.BuildProjectTask; +import org.apache.maven.continuum.model.project.BuildResult; +import org.apache.maven.continuum.model.project.Project; import org.apache.maven.continuum.web.action.ContinuumActionSupport; import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.taskqueue.Task; @@ -52,6 +54,7 @@ if ( ( (BuildProjectTask) task ).getProjectId() == projectId ) { getLogger().info( "Cancelling task for project " + projectId ); + return getTaskQueueExecutor().cancelTask( task ); } else Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java Tue Sep 2 06:24:15 2008 @@ -22,6 +22,7 @@ import java.util.List; import org.apache.commons.lang.ArrayUtils; +import org.apache.continuum.taskqueue.manager.TaskQueueManager; import org.apache.maven.continuum.buildqueue.BuildProjectTask; import org.apache.maven.continuum.model.project.Project; import org.apache.maven.continuum.scm.queue.CheckOutTask; @@ -76,6 +77,11 @@ private int trigger; private String projectName; + + /** + * @plexus.requirement + */ + private TaskQueueManager taskQueueManager; // ----------------------------------------------------- // webwork @@ -121,7 +127,7 @@ return REQUIRES_AUTHENTICATION; } - getContinuum().removeProjectFromCheckoutQueue( projectId ); + taskQueueManager.removeProjectFromCheckoutQueue( projectId ); return SUCCESS; } @@ -150,9 +156,9 @@ throws Exception { this.setCurrentBuildProjectTask( (BuildProjectTask) taskQueueExecutor.getCurrentTask() ); - this.setBuildProjectTasks( getContinuum().getProjectsInBuildQueue() ); + this.setBuildProjectTasks( taskQueueManager.getProjectsInBuildQueue() ); this.setCurrentCheckOutTask( (CheckOutTask) checkoutTaskQueueExecutor.getCurrentTask() ); - this.setCurrentCheckOutTasks( getContinuum().getCheckOutTasksInQueue() ); + this.setCurrentCheckOutTasks( taskQueueManager.getCheckOutTasksInQueue() ); return SUCCESS; } @@ -174,7 +180,7 @@ return REQUIRES_AUTHENTICATION; } - getContinuum().removeFromBuildingQueue( projectId, buildDefinitionId, trigger, projectName ); + taskQueueManager.removeFromBuildingQueue( projectId, buildDefinitionId, trigger, projectName ); Project project = getContinuum().getProject( projectId ); project.setState( project.getOldState() ); getContinuum().updateProject( project ); @@ -200,7 +206,7 @@ return REQUIRES_AUTHENTICATION; } - getContinuum().removeProjectsFromBuildingQueueWithHashCodes( listToIntArray(this.getSelectedBuildTaskHashCodes()) ); + taskQueueManager.removeProjectsFromBuildingQueueWithHashCodes( listToIntArray(this.getSelectedBuildTaskHashCodes()) ); return SUCCESS; } @@ -222,7 +228,7 @@ return REQUIRES_AUTHENTICATION; } - getContinuum() + taskQueueManager .removeTasksFromCheckoutQueueWithHashCodes( listToIntArray( this.getSelectedCheckOutTaskHashCodes() ) ); return SUCCESS; } Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/util/StateGenerator.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/util/StateGenerator.java?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/util/StateGenerator.java (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/util/StateGenerator.java Tue Sep 2 06:24:15 2008 @@ -49,7 +49,7 @@ { return NEW; } - else if ( state == ContinuumProjectState.OK ) + else if ( state == ContinuumProjectState.OK || state == ContinuumProjectState.UPDATED ) { return "\"""; Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/java/org/apache/maven/continuum/web/view/StateCell.java Tue Sep 2 06:24:15 2008 @@ -22,6 +22,8 @@ import com.opensymphony.webwork.ServletActionContext; import com.opensymphony.webwork.views.util.UrlHelper; import com.opensymphony.xwork.ActionContext; + +import org.apache.continuum.model.project.ProjectScmRoot; import org.apache.maven.continuum.project.ContinuumProjectState; import org.apache.maven.continuum.security.ContinuumRoleConstants; import org.apache.maven.continuum.web.model.ProjectSummary; @@ -52,40 +54,80 @@ { protected String getCellValue( TableModel tableModel, Column column ) { - ProjectSummary project = (ProjectSummary) tableModel.getCurrentRowBean(); - - switch ( project.getState() ) + if ( tableModel.getCurrentRowBean() instanceof ProjectSummary ) { - case ContinuumProjectState.NEW: - case ContinuumProjectState.OK: - case ContinuumProjectState.FAILED: - case ContinuumProjectState.ERROR: - case ContinuumProjectState.BUILDING: - case ContinuumProjectState.UPDATING: - case ContinuumProjectState.CHECKING_OUT: - { - String state = StateGenerator.generate( project.getState(), tableModel.getContext().getContextPath() ); + ProjectSummary project = (ProjectSummary) tableModel.getCurrentRowBean(); - if ( project.getLatestBuildId() != -1 && !StateGenerator.NEW.equals( state ) ) + switch ( project.getState() ) + { + case ContinuumProjectState.NEW: + case ContinuumProjectState.OK: + case ContinuumProjectState.FAILED: + case ContinuumProjectState.ERROR: + case ContinuumProjectState.BUILDING: + case ContinuumProjectState.UPDATING: + case ContinuumProjectState.CHECKING_OUT: { - if ( isAuthorized( project ) ) + String state = StateGenerator.generate( project.getState(), tableModel.getContext().getContextPath() ); + + if ( project.getLatestBuildId() != -1 && !StateGenerator.NEW.equals( state ) ) { - return createActionLink( "buildResult", project, state ); + if ( isAuthorized( project.getProjectGroupName() ) ) + { + return createActionLink( "buildResult", project, state ); + } + else + { + return state; + } } else { return state; } } - else + + default: { - return state; + return " "; } } + } + else + { + ProjectScmRoot projectScmRoot = (ProjectScmRoot) tableModel.getCurrentRowBean(); - default: + switch ( projectScmRoot.getState() ) { - return " "; + case ContinuumProjectState.UPDATING: + case ContinuumProjectState.UPDATED: + case ContinuumProjectState.ERROR: + { + String state = StateGenerator.generate( projectScmRoot.getState(), + tableModel.getContext().getContextPath() ); + + if ( !StateGenerator.NEW.equals( state ) ) + { + if ( isAuthorized( projectScmRoot.getProjectGroup().getName() ) && + projectScmRoot.getState() == ContinuumProjectState.ERROR ) + { + return createActionLink( "scmResult", projectScmRoot, state ); + } + else + { + return state; + } + } + else + { + return state; + } + } + + default: + { + return " "; + } } } } @@ -107,8 +149,22 @@ return "" + state + ""; } + + private static String createActionLink( String action, ProjectScmRoot scmRoot, String state ) + { + HashMap params = new HashMap(); + + params.put( "projectGroupId", new Integer( scmRoot.getProjectGroup().getId() ) ); + + params.put( "scmRootAddress", scmRoot.getScmRootAddress() ); + + String url = UrlHelper.buildUrl( "/" + action + ".action", ServletActionContext.getRequest(), + ServletActionContext.getResponse(), params ); + + return "" + state + ""; + } - private boolean isAuthorized( ProjectSummary project ) + private boolean isAuthorized( String projectGroupName ) { // do the authz bit ActionContext context = ActionContext.getContext(); @@ -122,7 +178,7 @@ SecuritySystem securitySystem = (SecuritySystem) container.lookup( SecuritySystem.ROLE ); if ( !securitySystem.isAuthorized( securitySession, ContinuumRoleConstants.CONTINUUM_VIEW_GROUP_OPERATION, - project.getProjectGroupName() ) ) + projectGroupName ) ) { return false; } Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/META-INF/plexus/application.xml URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/META-INF/plexus/application.xml?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/META-INF/plexus/application.xml (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/META-INF/plexus/application.xml Tue Sep 2 06:24:15 2008 @@ -229,7 +229,7 @@ http https ftp - + file Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/resources/localization/Continuum.properties Tue Sep 2 06:24:15 2008 @@ -180,6 +180,8 @@ projectGroup.buildDefinition.label = Default Build Definition projectGroup.addProject.label = Add New Project projectGroup.repository.label = Local Repository +projectGroup.scmRoot.title = Project Group Scm Root +projectGroup.scmRoot.label = Scm Root URL # ---------------------------------------------------------------------- # Page: Project Group - Members Modified: continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/projectGroupSummary.jsp URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/projectGroupSummary.jsp?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/projectGroupSummary.jsp (original) +++ continuum/branches/continuum-transient-state/continuum-webapp/src/main/webapp/WEB-INF/jsp/projectGroupSummary.jsp Tue Sep 2 06:24:15 2008 @@ -96,6 +96,20 @@ +

+ + + + + + +

Modified: continuum/branches/continuum-transient-state/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java URL: http://svn.apache.org/viewvc/continuum/branches/continuum-transient-state/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java?rev=691239&r1=691238&r2=691239&view=diff ============================================================================== --- continuum/branches/continuum-transient-state/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java (original) +++ continuum/branches/continuum-transient-state/continuum-xmlrpc/continuum-xmlrpc-server/src/main/java/org/apache/maven/continuum/xmlrpc/server/ContinuumServiceImpl.java Tue Sep 2 06:24:15 2008 @@ -22,6 +22,8 @@ import net.sf.dozer.util.mapping.DozerBeanMapperSingletonWrapper; import net.sf.dozer.util.mapping.MapperIF; import org.apache.continuum.dao.SystemConfigurationDao; +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.ContinuumException; import org.apache.maven.continuum.execution.ContinuumBuildExecutorConstants; @@ -78,6 +80,11 @@ * @plexus.requirement role-hint="default" */ private RoleManager roleManager; + + /** + * @plexus.requirement + */ + private TaskQueueManager taskQueueManager; public boolean ping() throws ContinuumException @@ -792,13 +799,27 @@ public boolean isProjectInBuildingQueue( int projectId ) throws ContinuumException { - return continuum.isInBuildingQueue( projectId ); + try + { + return taskQueueManager.isInBuildingQueue( projectId ); + } + catch ( TaskQueueManagerException e ) + { + throw new ContinuumException( e.getMessage(), e ); + } } public List getProjectsInBuildQueue() throws ContinuumException { - return populateBuildProjectTaskList( continuum.getProjectsInBuildQueue() ); + try + { + return populateBuildProjectTaskList( taskQueueManager.getProjectsInBuildQueue() ); + } + catch ( TaskQueueManagerException e ) + { + throw new ContinuumException( e.getMessage(), e ); + } } // ----------------------------------------------------------------------