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 2011/08/03 08:37:03 UTC
svn commit: r1153358 [2/2] - in /continuum/trunk:
continuum-api/src/main/java/org/apache/continuum/buildmanager/
continuum-api/src/main/java/org/apache/continuum/taskqueue/
continuum-api/src/main/java/org/apache/maven/continuum/
continuum-core/src/main...
Modified: continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutorTest.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutorTest.java?rev=1153358&r1=1153357&r2=1153358&view=diff
==============================================================================
--- continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutorTest.java (original)
+++ continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/scm/queue/PrepareBuildProjectsTaskExecutorTest.java Wed Aug 3 06:37:01 2011
@@ -29,9 +29,7 @@ import org.apache.continuum.buildmanager
import org.apache.continuum.buildmanager.ParallelBuildsManager;
import org.apache.continuum.dao.ProjectScmRootDao;
import org.apache.continuum.model.project.ProjectScmRoot;
-import org.apache.continuum.taskqueue.BuildProjectTask;
import org.apache.continuum.taskqueue.PrepareBuildProjectsTask;
-import org.apache.continuum.utils.build.BuildTrigger;
import org.apache.maven.continuum.AbstractContinuumTest;
import org.apache.maven.continuum.configuration.ConfigurationService;
import org.apache.maven.continuum.core.action.AbstractContinuumAction;
@@ -44,8 +42,6 @@ import org.apache.maven.continuum.projec
import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
import org.apache.maven.continuum.project.builder.maven.MavenTwoContinuumProjectBuilder;
import org.codehaus.plexus.action.ActionManager;
-import org.codehaus.plexus.taskqueue.TaskQueue;
-import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor;
import org.codehaus.plexus.util.StringUtils;
public class PrepareBuildProjectsTaskExecutorTest
@@ -53,10 +49,6 @@ public class PrepareBuildProjectsTaskExe
{
private ContinuumProjectBuilder projectBuilder;
- private TaskQueue prepareBuildQueue;
-
- private TaskQueueExecutor prepareBuildTaskQueueExecutor;
-
private ActionManager actionManager;
private ProjectScmRootDao projectScmRootDao;
@@ -74,10 +66,6 @@ public class PrepareBuildProjectsTaskExe
projectBuilder =
(ContinuumProjectBuilder) lookup( ContinuumProjectBuilder.ROLE, MavenTwoContinuumProjectBuilder.ID );
- prepareBuildQueue = (TaskQueue) lookup( TaskQueue.ROLE, "prepare-build-project" );
-
- prepareBuildTaskQueueExecutor = (TaskQueueExecutor) lookup( TaskQueueExecutor.ROLE, "prepare-build-project" );
-
projectScmRootDao = (ProjectScmRootDao) lookup( ProjectScmRootDao.class.getName() );
actionManager = (ActionManager) lookup( ActionManager.ROLE );
@@ -92,8 +80,6 @@ public class PrepareBuildProjectsTaskExe
{
PrepareBuildProjectsTask task = createTask( "src/test-projects/multi-module/pom.xml", false, false );
- this.prepareBuildQueue.put( task );
-
List<Project> projects = getProjectDao().getProjectsInGroup( task.getProjectGroupId() );
assertEquals( "failed to add all projects", 4, projects.size() );
@@ -103,9 +89,12 @@ public class PrepareBuildProjectsTaskExe
Project moduleB = getProjectDao().getProjectByName( "module-B" );
Project moduleD = getProjectDao().getProjectByName( "module-D" );
+ buildsManager.prepareBuildProjects( task.getProjectsBuildDefinitionsMap(), task.getBuildTrigger(), task.getProjectGroupId(),
+ task.getProjectGroupName(), task.getScmRootAddress(), task.getProjectScmRootId() );
+
// wait while task finishes prepare build
- while( !prepareBuildQueue.getQueueSnapshot().isEmpty() ||
- prepareBuildTaskQueueExecutor.getCurrentTask() != null )
+ while( buildsManager.isInPrepareBuildQueue( task.getProjectGroupId(), task.getProjectScmRootId() ) ||
+ buildsManager.isProjectGroupCurrentlyPreparingBuild( task.getProjectGroupId(), task.getProjectScmRootId() ) )
{
Thread.sleep( 10 );
}
@@ -131,11 +120,7 @@ public class PrepareBuildProjectsTaskExe
assertTrue( "failed to checkout project 'module-D'", new File( workingDir, Integer.toString( moduleD.getId() ) ).list().length > 0 );
- while( !buildsManager.getCurrentBuilds().isEmpty() ||
- isAnyProjectInBuildQueue() )
- {
- Thread.sleep( 10 );
- }
+ buildsManager.cancelAllBuilds();
}
public void testCheckoutPrepareBuildMultiModuleProjectFreshBuild()
@@ -143,7 +128,6 @@ public class PrepareBuildProjectsTaskExe
{
PrepareBuildProjectsTask task = createTask( "src/test-projects/multi-module/pom.xml", false, true );
- this.prepareBuildQueue.put( task );
List<Project> projects = getProjectDao().getProjectsInGroup( task.getProjectGroupId() );
@@ -154,9 +138,12 @@ public class PrepareBuildProjectsTaskExe
Project moduleB = getProjectDao().getProjectByName( "module-B" );
Project moduleD = getProjectDao().getProjectByName( "module-D" );
+ buildsManager.prepareBuildProjects( task.getProjectsBuildDefinitionsMap(), task.getBuildTrigger(), task.getProjectGroupId(),
+ task.getProjectGroupName(), task.getScmRootAddress(), task.getProjectScmRootId() );
+
// wait while task finishes prepare build
- while( !prepareBuildQueue.getQueueSnapshot().isEmpty() ||
- prepareBuildTaskQueueExecutor.getCurrentTask() != null )
+ while( buildsManager.isInPrepareBuildQueue( task.getProjectGroupId(), task.getProjectScmRootId() ) ||
+ buildsManager.isProjectGroupCurrentlyPreparingBuild( task.getProjectGroupId(), task.getProjectScmRootId() ) )
{
Thread.sleep( 10 );
}
@@ -182,11 +169,7 @@ public class PrepareBuildProjectsTaskExe
assertTrue( "failed to checkout project 'module-D'", new File( workingDir, Integer.toString( moduleD.getId() ) ).list().length > 0 );
- while( !buildsManager.getCurrentBuilds().isEmpty() ||
- isAnyProjectInBuildQueue() )
- {
- Thread.sleep( 10 );
- }
+ buildsManager.cancelAllBuilds();
}
public void testCheckoutPrepareBuildSingleCheckedoutMultiModuleProject()
@@ -194,17 +177,18 @@ public class PrepareBuildProjectsTaskExe
{
PrepareBuildProjectsTask task = createTask( "src/test-projects/multi-module/pom.xml", true, false );
- this.prepareBuildQueue.put( task );
-
List<Project> projects = getProjectDao().getProjectsInGroup( task.getProjectGroupId() );
assertEquals( "failed to add all projects", 4, projects.size() );
Project rootProject = getProjectDao().getProjectByName( "multi-module-parent" );
+ buildsManager.prepareBuildProjects( task.getProjectsBuildDefinitionsMap(), task.getBuildTrigger(), task.getProjectGroupId(),
+ task.getProjectGroupName(), task.getScmRootAddress(), task.getProjectScmRootId() );
+
// wait while task finishes prepare build
- while( !prepareBuildQueue.getQueueSnapshot().isEmpty() ||
- prepareBuildTaskQueueExecutor.getCurrentTask() != null )
+ while( buildsManager.isInPrepareBuildQueue( task.getProjectGroupId(), task.getProjectScmRootId() ) ||
+ buildsManager.isProjectGroupCurrentlyPreparingBuild( task.getProjectGroupId(), task.getProjectScmRootId() ) )
{
Thread.sleep( 10 );
}
@@ -230,11 +214,7 @@ public class PrepareBuildProjectsTaskExe
assertTrue( "failed to checkout project 'module-D'", new File( checkedOutDir, "module-C/module-D" ).list().length > 0 );
- while( !buildsManager.getCurrentBuilds().isEmpty() ||
- isAnyProjectInBuildQueue() )
- {
- Thread.sleep( 10 );
- }
+ buildsManager.cancelAllBuilds();
}
public void testCheckoutPrepareBuildSingleCheckedoutMultiModuleProjectFreshBuild()
@@ -242,17 +222,18 @@ public class PrepareBuildProjectsTaskExe
{
PrepareBuildProjectsTask task = createTask( "src/test-projects/multi-module/pom.xml", true, true );
- this.prepareBuildQueue.put( task );
-
List<Project> projects = getProjectDao().getProjectsInGroup( task.getProjectGroupId() );
assertEquals( "failed to add all projects", 4, projects.size() );
Project rootProject = getProjectDao().getProjectByName( "multi-module-parent" );
+ buildsManager.prepareBuildProjects( task.getProjectsBuildDefinitionsMap(), task.getBuildTrigger(), task.getProjectGroupId(),
+ task.getProjectGroupName(), task.getScmRootAddress(), task.getProjectScmRootId() );
+
// wait while task finishes prepare build
- while( !prepareBuildQueue.getQueueSnapshot().isEmpty() ||
- prepareBuildTaskQueueExecutor.getCurrentTask() != null )
+ while( buildsManager.isInPrepareBuildQueue( task.getProjectGroupId(), task.getProjectScmRootId() ) ||
+ buildsManager.isProjectGroupCurrentlyPreparingBuild( task.getProjectGroupId(), task.getProjectScmRootId() ) )
{
Thread.sleep( 10 );
}
@@ -278,11 +259,7 @@ public class PrepareBuildProjectsTaskExe
assertTrue( "failed to checkout project 'module-D'", new File( checkedOutDir, "module-C/module-D" ).list().length > 0 );
- while( !buildsManager.getCurrentBuilds().isEmpty() ||
- isAnyProjectInBuildQueue() )
- {
- Thread.sleep( 10 );
- }
+ buildsManager.cancelAllBuilds();
}
public void testCheckoutPrepareBuildSingleCheckoutFlatMultiModuleProject()
@@ -290,17 +267,18 @@ public class PrepareBuildProjectsTaskExe
{
PrepareBuildProjectsTask task = createTask( "src/test-projects/flat-multi-module/parent-project/pom.xml", true, false );
- this.prepareBuildQueue.put( task );
-
List<Project> projects = getProjectDao().getProjectsInGroup( task.getProjectGroupId() );
assertEquals( "failed to add all projects", 4, projects.size() );
Project rootProject = getProjectDao().getProjectByName( "parent-project" );
+ buildsManager.prepareBuildProjects( task.getProjectsBuildDefinitionsMap(), task.getBuildTrigger(), task.getProjectGroupId(),
+ task.getProjectGroupName(), task.getScmRootAddress(), task.getProjectScmRootId() );
+
// wait while task finishes prepare build
- while( !prepareBuildQueue.getQueueSnapshot().isEmpty() ||
- prepareBuildTaskQueueExecutor.getCurrentTask() != null )
+ while( buildsManager.isInPrepareBuildQueue( task.getProjectGroupId(), task.getProjectScmRootId() ) ||
+ buildsManager.isProjectGroupCurrentlyPreparingBuild( task.getProjectGroupId(), task.getProjectScmRootId() ) )
{
Thread.sleep( 10 );
}
@@ -326,11 +304,7 @@ public class PrepareBuildProjectsTaskExe
assertTrue( "failed to checkout module-d", new File( checkedOutDir, "module-c/module-d" ).list().length > 0 );
- while( !buildsManager.getCurrentBuilds().isEmpty() ||
- isAnyProjectInBuildQueue() )
- {
- Thread.sleep( 10 );
- }
+ buildsManager.cancelAllBuilds();
}
public void testCheckoutPrepareBuildSingleCheckoutFlatMultiModuleProjectBuildFresh()
@@ -338,25 +312,23 @@ public class PrepareBuildProjectsTaskExe
{
PrepareBuildProjectsTask task = createTask( "src/test-projects/flat-multi-module/parent-project/pom.xml", true, true );
- this.prepareBuildQueue.put( task );
-
List<Project> projects = getProjectDao().getProjectsInGroup( task.getProjectGroupId() );
assertEquals( "failed to add all projects", 4, projects.size() );
Project rootProject = getProjectDao().getProjectByName( "parent-project" );
- ProjectScmRoot scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
+ buildsManager.prepareBuildProjects( task.getProjectsBuildDefinitionsMap(), task.getBuildTrigger(), task.getProjectGroupId(),
+ task.getProjectGroupName(), task.getScmRootAddress(), task.getProjectScmRootId() );
+
// wait while task finishes prepare build
- while( !prepareBuildQueue.getQueueSnapshot().isEmpty() ||
- prepareBuildTaskQueueExecutor.getCurrentTask() != null || scmRoot.getState() == ContinuumProjectState.UPDATING )
+ while( buildsManager.isInPrepareBuildQueue( task.getProjectGroupId(), task.getProjectScmRootId() ) ||
+ buildsManager.isProjectGroupCurrentlyPreparingBuild( task.getProjectGroupId(), task.getProjectScmRootId() ) )
{
Thread.sleep( 10 );
-
- scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
}
- scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
+ ProjectScmRoot scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
assertEquals( "Failed to update multi-module project", ContinuumProjectState.UPDATED, scmRoot.getState() );
File checkedOutDir = new File( configurationService.getWorkingDirectory(), Integer.toString( rootProject.getId() ) );
@@ -377,18 +349,14 @@ public class PrepareBuildProjectsTaskExe
assertTrue( "failed to checkout module-d", new File( checkedOutDir, "module-c/module-d" ).list().length > 0 );
- while( !buildsManager.getCurrentBuilds().isEmpty() ||
- isAnyProjectInBuildQueue() )
- {
- Thread.sleep( 10 );
- }
+ buildsManager.cancelAllBuilds();
}
-
+
public void testCheckoutPrepareBuildSingleCheckoutFlatMultiModuleProjectBuildFreshAfterRemovingWorkingCopy()
throws Exception
{
PrepareBuildProjectsTask task = createTask( "src/test-projects/flat-multi-module/parent-project/pom.xml", true, true );
-
+
List<Project> projects = getProjectDao().getProjectsInGroup( task.getProjectGroupId() );
assertEquals( "failed to add all projects", 4, projects.size() );
@@ -398,23 +366,21 @@ public class PrepareBuildProjectsTaskExe
File rootProjectDir = new File( configurationService.getWorkingDirectory(), Integer.toString( rootProject.getId() ) );
rootProjectDir = new File( rootProjectDir, "parent-project" );
- rootProject.setWorkingDirectory( rootProjectDir.getAbsolutePath() );
+ rootProject.setWorkingDirectory( rootProjectDir.getAbsolutePath() );
getProjectDao().updateProject( rootProject );
- this.prepareBuildQueue.put( task );
-
- ProjectScmRoot scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
+ buildsManager.prepareBuildProjects( task.getProjectsBuildDefinitionsMap(), task.getBuildTrigger(), task.getProjectGroupId(),
+ task.getProjectGroupName(), task.getScmRootAddress(), task.getProjectScmRootId() );
+
// wait while task finishes prepare build
- while( !prepareBuildQueue.getQueueSnapshot().isEmpty() ||
- prepareBuildTaskQueueExecutor.getCurrentTask() != null || scmRoot.getState() == ContinuumProjectState.UPDATING )
+ while( buildsManager.isInPrepareBuildQueue( task.getProjectGroupId(), task.getProjectScmRootId() ) ||
+ buildsManager.isProjectGroupCurrentlyPreparingBuild( task.getProjectGroupId(), task.getProjectScmRootId() ) )
{
Thread.sleep( 10 );
-
- scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
}
-
- scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
+
+ ProjectScmRoot scmRoot = projectScmRootDao.getProjectScmRoot( task.getProjectScmRootId() );
assertEquals( "Failed to update multi-module project", ContinuumProjectState.UPDATED, scmRoot.getState() );
File checkedOutDir = new File( configurationService.getWorkingDirectory(), Integer.toString( rootProject.getId() ) );
@@ -435,11 +401,7 @@ public class PrepareBuildProjectsTaskExe
assertTrue( "failed to checkout module-d", new File( checkedOutDir, "module-c/module-d" ).list().length > 0 );
- while( !buildsManager.getCurrentBuilds().isEmpty() ||
- isAnyProjectInBuildQueue() )
- {
- Thread.sleep( 10 );
- }
+ buildsManager.cancelAllBuilds();
}
private PrepareBuildProjectsTask createTask( String pomResource, boolean singleCheckout, boolean buildFresh )
@@ -587,20 +549,4 @@ public class PrepareBuildProjectsTaskExe
return path1.substring( 0, indexDiff );
}
}
-
- private boolean isAnyProjectInBuildQueue()
- throws Exception
- {
- Map<String, List<BuildProjectTask>> buildTasks = buildsManager.getProjectsInBuildQueues();
-
- for ( String queue : buildTasks.keySet() )
- {
- if ( !buildTasks.get( queue ).isEmpty() )
- {
- return true;
- }
- }
-
- return false;
- }
}
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=1153358&r1=1153357&r2=1153358&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 Aug 3 06:37:01 2011
@@ -297,16 +297,19 @@ public class QueuesAction
try
{
// current prepare builds
- PrepareBuildProjectsTask currentPrepareBuildTask = getContinuum().getBuildsManager().getCurrentProjectInPrepareBuild();
+ Map<String, PrepareBuildProjectsTask> currentPrepareBuildTasks = getContinuum().getBuildsManager().getCurrentProjectInPrepareBuild();
- if ( currentPrepareBuildTask != null )
+ Set<String> keySet = currentPrepareBuildTasks.keySet();
+ for ( String key : keySet )
{
+ PrepareBuildProjectsTask prepareBuildTask = currentPrepareBuildTasks.get( key );
+
PrepareBuildSummary s = new PrepareBuildSummary();
-
- s.setProjectGroupId( currentPrepareBuildTask.getProjectGroupId() );
- s.setProjectGroupName( currentPrepareBuildTask.getProjectGroupName() );
- s.setScmRootId( currentPrepareBuildTask.getProjectScmRootId() );
- s.setScmRootAddress( currentPrepareBuildTask.getScmRootAddress() );
+ s.setProjectGroupId( prepareBuildTask.getProjectGroupId() );
+ s.setProjectGroupName( prepareBuildTask.getProjectGroupName() );
+ s.setScmRootId( prepareBuildTask.getProjectScmRootId() );
+ s.setScmRootAddress( prepareBuildTask.getScmRootAddress() );
+ s.setQueueName( key );
currentPrepareBuilds.add( s );
}
}
@@ -339,18 +342,24 @@ public class QueuesAction
try
{
// queued prepare builds
- List<PrepareBuildProjectsTask> prepareBuilds =
+ Map<String, List<PrepareBuildProjectsTask>> prepareBuilds =
getContinuum().getBuildsManager().getProjectsInPrepareBuildQueue();
- for ( PrepareBuildProjectsTask task : prepareBuilds )
+
+ Set<String> keySet = prepareBuilds.keySet();
+ for ( String key : keySet )
{
- PrepareBuildSummary summary = new PrepareBuildSummary();
- summary.setProjectGroupId( task.getProjectGroupId() );
- summary.setProjectGroupName( task.getProjectGroupName() );
- summary.setScmRootId( task.getProjectScmRootId() );
- summary.setScmRootAddress( task.getScmRootAddress() );
- summary.setHashCode( task.getHashCode() );
+ for ( PrepareBuildProjectsTask task : prepareBuilds.get( key ) )
+ {
+ PrepareBuildSummary summary = new PrepareBuildSummary();
+ summary.setProjectGroupId( task.getProjectGroupId() );
+ summary.setProjectGroupName( task.getProjectGroupName() );
+ summary.setScmRootId( task.getProjectScmRootId() );
+ summary.setScmRootAddress( task.getScmRootAddress() );
+ summary.setHashCode( task.getHashCode() );
+ summary.setQueueName( key );
- prepareBuildQueues.add( summary );
+ prepareBuildQueues.add( summary );
+ }
}
}
catch ( BuildManagerException e )
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=1153358&r1=1153357&r2=1153358&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo (original)
+++ continuum/trunk/continuum-webapp/src/main/mdo/view-models.mdo Wed Aug 3 06:37:01 2011
@@ -539,6 +539,13 @@
<required>false</required>
<type>int</type>
</field>
+ <field>
+ <name>queueName</name>
+ <version>1.4.1+</version>
+ <required>true</required>
+ <description>Name where the prepare build is queued</description>
+ <type>String</type>
+ </field>
</fields>
</class>
<class>
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=1153358&r1=1153357&r2=1153358&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/trunk/continuum-webapp/src/main/resources/localization/Continuum.properties Wed Aug 3 06:37:01 2011
@@ -915,6 +915,7 @@ prepareBuildQueue.table.scmRootAddress =
prepareBuildQueue.empty = Prepare Build Queue is empty
prepareBuildQueue.no.currentTasks = No current prepare build
prepareBuildQueue.removeEntries = Cancel Entries
+prepareBuildQueue.currentTask.buildQueue = Build Queue
# ----------------------------------------------------------------------
# Page: Build Queue
Modified: continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp?rev=1153358&r1=1153357&r2=1153358&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp (original)
+++ continuum/trunk/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp Wed Aug 3 06:37:01 2011
@@ -261,6 +261,7 @@
sortable="false"
filterable="false">
<ec:row>
+ <ec:column property="queueName" title="prepareBuildQueue.currentTask.buildQueue" width="29%"/>
<ec:column property="projectGroupUrl" title="prepareBuildQueue.table.projectGroupName">
<s:url id="viewUrl" action="projectGroupSummary">
<s:param name="projectGroupId"><c:out value="${pageScope.currentPrepareBuild.projectGroupId}"/></s:param>
@@ -298,6 +299,7 @@
<input type="checkbox" name="selectedPrepareBuildTaskHashCodes" value="${pageScope.prepareBuildQueue.hashCode}" />
</ec:column>
</redback:ifAuthorized>
+ <ec:column property="queueName" title="prepareBuildQueue.currentTask.buildQueue" width="29%"/>
<ec:column property="projectGroupUrl" title="prepareBuildQueue.table.projectGroupName">
<s:url id="viewUrl" action="projectGroupSummary">
<s:param name="projectGroupId"><c:out value="${pageScope.prepareBuildQueue.projectGroupId}"/></s:param>