You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by oc...@apache.org on 2008/12/17 12:31:22 UTC
svn commit: r727345 - in /continuum/branches/continuum-parallel-builds:
continuum-api/src/main/java/org/apache/continuum/buildmanager/
continuum-core/src/main/java/org/apache/continuum/buildmanager/
continuum-webapp/src/main/java/org/apache/maven/conti...
Author: oching
Date: Wed Dec 17 03:31:21 2008
New Revision: 727345
URL: http://svn.apache.org/viewvc?rev=727345&view=rev
Log:
show which overall build queue the project is queued (for checkout & build)
Modified:
continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java
continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java
continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties
continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp
Modified: continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java?rev=727345&r1=727344&r2=727345&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-api/src/main/java/org/apache/continuum/buildmanager/BuildsManager.java Wed Dec 17 03:31:21 2008
@@ -280,7 +280,7 @@
* @return
* @throws BuildManagerException
*/
- List<Task> getCurrentBuilds()
+ Map<String, Task> getCurrentBuilds()
throws BuildManagerException;
/**
@@ -288,7 +288,7 @@
* @return
* @throws BuildManagerException
*/
- List<Task> getCurrentCheckouts()
+ Map<String, Task> getCurrentCheckouts()
throws BuildManagerException;
/**
Modified: continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java?rev=727345&r1=727344&r2=727345&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-core/src/main/java/org/apache/continuum/buildmanager/ParallelBuildsManager.java Wed Dec 17 03:31:21 2008
@@ -730,45 +730,43 @@
return overallBuildQueues;
}
- public List<Task> getCurrentBuilds()
+ public Map<String, Task> getCurrentBuilds()
throws BuildManagerException
{
synchronized( overallBuildQueues )
{
- List<Task> currentBuilds = new ArrayList<Task>();
+ Map<String, Task> currentBuilds = new HashMap<String, Task>();
Set<Integer> keys = overallBuildQueues.keySet();
for( Integer key : keys )
{
- OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
+ OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
Task task = overallBuildQueue.getBuildTaskQueueExecutor().getCurrentTask();
if( task != null )
{
- currentBuilds.add( task );
- }
- }
-
+ currentBuilds.put( overallBuildQueue.getName(), task );
+ }
+ }
return currentBuilds;
}
}
- public List<Task> getCurrentCheckouts()
+ public Map<String, Task> getCurrentCheckouts()
throws BuildManagerException
{
synchronized( overallBuildQueues )
{
- List<Task> currentCheckouts = new ArrayList<Task>();
+ Map<String, Task> currentCheckouts = new HashMap<String, Task>();
Set<Integer> keys = overallBuildQueues.keySet();
for( Integer key : keys )
{
- OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
+ OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
Task task = overallBuildQueue.getCheckoutTaskQueueExecutor().getCurrentTask();
if( task != null )
{
- currentCheckouts.add( task );
- }
- }
-
- return currentCheckouts;
+ currentCheckouts.put( overallBuildQueue.getName(), task );
+ }
+ }
+ return currentCheckouts;
}
}
@@ -777,14 +775,14 @@
{
synchronized ( overallBuildQueues )
{
- Map<String, List<Task>> buildsInQueue = new HashMap<String, List<Task>>();
+ Map<String, List<Task>> queuedBuilds = new HashMap<String, List<Task>>();
Set<Integer> keySet = overallBuildQueues.keySet();
for ( Integer key : keySet )
{
OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
try
{
- buildsInQueue.put( overallBuildQueue.getName(), overallBuildQueue.getProjectsInBuildQueue() );
+ queuedBuilds.put( overallBuildQueue.getName(), overallBuildQueue.getProjectsInBuildQueue() );
}
catch ( TaskQueueException e )
{
@@ -792,7 +790,7 @@
overallBuildQueue.getName() + "'.", e );
}
}
- return buildsInQueue;
+ return queuedBuilds;
}
}
@@ -801,22 +799,22 @@
{
synchronized ( overallBuildQueues )
{
- Map<String, List<Task>> checkoutsInQueue = new HashMap<String, List<Task>>();
+ Map<String, List<Task>> queuedCheckouts = new HashMap<String, List<Task>>();
Set<Integer> keySet = overallBuildQueues.keySet();
for ( Integer key : keySet )
{
OverallBuildQueue overallBuildQueue = overallBuildQueues.get( key );
try
{
- checkoutsInQueue.put( overallBuildQueue.getName(), overallBuildQueue.getCheckOutTasksInQueue() );
+ queuedCheckouts.put( overallBuildQueue.getName(), overallBuildQueue.getCheckOutTasksInQueue() );
}
catch ( TaskQueueException e )
{
- throw new BuildManagerException( "Error occurred while getting projects in checkout queue '" +
+ throw new BuildManagerException( "Error occurred while getting projects in build queue '" +
overallBuildQueue.getName() + "'.", e );
}
}
- return checkoutsInQueue;
+ return queuedCheckouts;
}
}
Modified: continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java?rev=727345&r1=727344&r2=727345&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java (original)
+++ continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/admin/QueuesAction.java Wed Dec 17 03:31:21 2008
@@ -76,7 +76,11 @@
*/
//private TaskQueueManager taskQueueManager;
- private List<BuildProjectTask> currentBuildProjectTasks = new ArrayList<BuildProjectTask>();
+ //private List<BuildProjectTask> currentBuildProjectTasks = new ArrayList<BuildProjectTask>();
+
+ private Map<String, BuildProjectTask> currentBuildProjectTasks = new HashMap<String, BuildProjectTask>();
+
+ private Map<String, CheckOutTask> currentCheckoutTasks = new HashMap<String, CheckOutTask>();
private Map<String, List<BuildProjectTask>> buildsInQueue = new HashMap<String, List<BuildProjectTask>>();
@@ -164,46 +168,82 @@
public String display()
throws Exception
{
- // current builds
- for( Task task : getContinuum().getBuildsManager().getCurrentBuilds() )
+ 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 )
{
- BuildProjectTask buildTask = (BuildProjectTask) task;
- this.currentBuildProjectTasks.add( buildTask );
+ addActionError( e.getMessage() );
+ return ERROR;
}
- // queued builds
- Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
- Set<String> keySet = builds.keySet();
- List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
- for( String key : keySet )
+ try
{
- for( Task task : builds.get( key ) )
+ // queued builds
+ Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
+ Set<String> keySet = builds.keySet();
+ List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
+ for( String key : keySet )
{
- BuildProjectTask buildTask = (BuildProjectTask) task;
- buildTasks.add( buildTask );
+ 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;
}
- // current checkouts
- for( Task task : getContinuum().getBuildsManager().getCurrentCheckouts() )
+ try
{
- CheckOutTask checkoutTask = (CheckOutTask) task;
- this.currentCheckOutTasks.add( checkoutTask );
+ // current checkouts
+ Map<String, Task> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
+ Set<String> keySet = currentCheckouts.keySet();
+ for( String key : keySet )
+ {
+ CheckOutTask checkoutTask = (CheckOutTask) currentCheckouts.get( key );
+ currentCheckoutTasks.put( key, checkoutTask );
+ }
+ }
+ catch ( BuildManagerException e )
+ {
+ addActionError( e.getMessage() );
+ return ERROR;
}
- // queued checkouts
- Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
- keySet = builds.keySet();
- List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
- for( String key : keySet )
+ try
{
- for( Task task : checkouts.get( key ) )
+ // queued checkouts
+ Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
+ Set<String> keySet = checkouts.keySet();
+ List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
+ for( String key : keySet )
{
- CheckOutTask checkoutTask = (CheckOutTask) task;
- checkoutTasks.add( checkoutTask );
+ for( Task task : checkouts.get( key ) )
+ {
+ CheckOutTask checkoutTask = (CheckOutTask) task;
+ checkoutTasks.add( checkoutTask );
+ }
+ checkoutsInQueue.put( key, checkoutTasks );
}
- checkoutsInQueue.put( key, checkoutTasks );
+ }
+ catch ( BuildManagerException e )
+ {
+ addActionError( e.getMessage() );
+ return ERROR;
}
return SUCCESS;
@@ -316,12 +356,14 @@
private boolean cancelCheckout(int projectId)
throws BuildManagerException
- {
- List<Task> tasks = getContinuum().getBuildsManager().getCurrentCheckouts();
+ {
+ Map<String, Task> tasks = getContinuum().getBuildsManager().getCurrentCheckouts();
if( tasks != null )
- {
- for( Task task : tasks )
+ {
+ Set<String> keySet = tasks.keySet();
+ for( String key : keySet )
{
+ Task task = tasks.get( key );
if( task != null && task instanceof CheckOutTask )
{
if ( ( (CheckOutTask) task ).getProjectId() == projectId )
@@ -343,28 +385,6 @@
getLogger().warn( "No task running - not cancelling checkout" );
}
- /*if ( task != null )
- {
- if ( task instanceof CheckOutTask )
- {
- if ( ( (CheckOutTask) task ).getProjectId() == projectId )
- {
- getLogger().info( "Cancelling checkout for project " + projectId );
- return getCheckoutTaskQueueExecutor().cancelTask( task );
- }
- else
- {
- getLogger().warn(
- "Current task is not for the given projectId (" + projectId + "): "
- + ( (CheckOutTask) task ).getProjectId() + "; not cancelling checkout" );
- }
- }
- else
- {
- getLogger().warn( "Current task not a CheckOutTask - not cancelling checkout" );
- }
- }*/
-
return false;
}
@@ -490,13 +510,54 @@
this.selectedCheckOutTaskHashCodes = selectedCheckOutTaskHashCodes;
}
- public List<BuildProjectTask> getCurrentBuildProjectTasks()
+ public Map<String, BuildProjectTask> getCurrentBuildProjectTasks()
{
return currentBuildProjectTasks;
}
- public void setCurrentBuildProjectTasks( List<BuildProjectTask> currentBuildProjectTasks )
+ public void setCurrentBuildProjectTasks( Map<String, BuildProjectTask> currentBuildProjectTasks )
{
this.currentBuildProjectTasks = currentBuildProjectTasks;
}
+
+ public Map<String, CheckOutTask> getCurrentCheckoutTasks()
+ {
+ return currentCheckoutTasks;
+ }
+
+ public void setCurrentCheckoutTasks( Map<String, CheckOutTask> currentCheckoutTasks )
+ {
+ this.currentCheckoutTasks = currentCheckoutTasks;
+ }
+
+ public Map<String, List<BuildProjectTask>> getBuildsInQueue()
+ {
+ return buildsInQueue;
+ }
+
+ public void setBuildsInQueue( Map<String, List<BuildProjectTask>> buildsInQueue )
+ {
+ this.buildsInQueue = buildsInQueue;
+ }
+
+ public Map<String, List<CheckOutTask>> getCheckoutsInQueue()
+ {
+ return checkoutsInQueue;
+ }
+
+ public void setCheckoutsInQueue( Map<String, List<CheckOutTask>> checkoutsInQueue )
+ {
+ this.checkoutsInQueue = checkoutsInQueue;
+ }
+
+
+ /*public List<BuildProjectTask> getCurrentBuildProjectTasks()
+ {
+ return currentBuildProjectTasks;
+ }
+
+ public void setCurrentBuildProjectTasks( List<BuildProjectTask> currentBuildProjectTasks )
+ {
+ this.currentBuildProjectTasks = currentBuildProjectTasks;
+ }*/
}
Modified: continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties?rev=727345&r1=727344&r2=727345&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties (original)
+++ continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/resources/localization/Continuum.properties Wed Dec 17 03:31:21 2008
@@ -803,11 +803,13 @@
buildQueue.section.title = Continuum - Build Queue
buildQueue.empty = Build Queue is empty
buildQueue.currentTask.section.title = Current Build
+buildQueue.currentTask.buildQueue = Build Queue
buildQueue.currentTask.projectName = Project Name
buildQueue.currentTask.buildDefinition = Build Definition
buildQueue.no.currentTaks = Nothing is building
buildQueue.removeEntries = Cancel Entries
checkoutQueue.currentTask.section.title = Current Checkout
+checkoutQueue.currentTask.buildQueue = Build Queue
checkoutQueue.currentTask.projectName = Project Name
checkoutQueue.no.currentTaks = No current checkout
checkoutQueue.section.title = Checkout Queue
Modified: continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp?rev=727345&r1=727344&r2=727345&view=diff
==============================================================================
--- continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp (original)
+++ continuum/branches/continuum-parallel-builds/continuum-webapp/src/main/webapp/WEB-INF/jsp/admin/buildQueueView.jsp Wed Dec 17 03:31:21 2008
@@ -36,41 +36,51 @@
<s:text name="buildQueue.currentTask.section.title"/>
</h3>
<table width="100%">
- <s:if test="%{currentBuildProjectTask != null}">
+ <s:if test="%{currentBuildProjectTasks != null}">
<tbody>
<tr>
+ <th><s:text name="buildQueue.currentTask.buildQueue"/></th>
<th><s:text name="buildQueue.currentTask.projectName"/></th>
<th><s:text name="buildQueue.currentTask.buildDefinition"/></th>
<th> </th>
</tr>
- <tr>
- <td width="50%"><s:property value="currentBuildProjectTask.projectName"/></td>
- <td width="49%"><s:property value="currentBuildProjectTask.buildDefinitionLabel"/></td>
- <td width="1%">
- <redback:ifAuthorized permission="continuum-manage-queues">
- <s:url id="cancelUrl" action="cancelCurrentBuildTask" method="cancelCurrent" namespace="/">
- <s:param name="projectId"><s:property value="currentBuildProjectTask.projectId"/></s:param>
- </s:url>
- <s:a href="%{cancelUrl}"><img src="<s:url value='/images/cancelbuild.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0"></s:a>
- </redback:ifAuthorized>
- <redback:elseAuthorized>
- <img src="<s:url value='/images/cancelbuild_disabled.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0">
- </redback:elseAuthorized>
- </td>
- </tr>
+ <%-- //deng - TODO: loop through each of the current tasks --%>
+ <c:forEach var="element" items="${currentBuildProjectTasks}">
+ <tr>
+ <td width="20%">${element.key}</td>
+ <td width="50%">${element.value.projectName}</td>
+ <td width="29%">${element.value.buildDefinitionLabel}</td>
+ <td width="1%">
+ <redback:ifAuthorized permission="continuum-manage-queues">
+ <s:url id="cancelUrl" action="cancelCurrentBuildTask" method="cancelCurrent" namespace="/">
+ <s:param name="projectId">${element.value.projectId}</s:param>
+ </s:url>
+ <s:a href="%{cancelUrl}"><img src="<s:url value='/images/cancelbuild.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0"></s:a>
+ </redback:ifAuthorized>
+ <redback:elseAuthorized>
+ <img src="<s:url value='/images/cancelbuild_disabled.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0">
+ </redback:elseAuthorized>
+ </td>
+ </tr>
+ </c:forEach>
</tbody>
</s:if>
<s:else>
<s:text name="buildQueue.no.currentTaks" />
</s:else>
</table>
- </div>
+ </div>
+
+ <%-- deng - parallel builds
+ TODO: might need to loop through each element of map (each returns a list)
+
+
<div id="h3">
<h3>
<s:text name="buildQueue.section.title"/>
</h3>
- <c:if test="${not empty buildProjectTasks}">
- <ec:table items="buildProjectTasks"
+ <c:if test="${not empty buildsInQueue}">
+ <ec:table items="buildsInQueue.values"
var="buildProjectTask"
showExports="false"
showPagination="false"
@@ -102,11 +112,11 @@
</ec:row>
</ec:table>
</c:if>
- <c:if test="${empty buildProjectTasks}">
+ <c:if test="${empty buildsInQueue}">
<s:text name="buildQueue.empty"/>
</c:if>
</div>
- <c:if test="${not empty buildProjectTasks}">
+ <c:if test="${not empty buildsInQueue}">
<div class="functnbar3">
<table>
<tbody>
@@ -122,32 +132,39 @@
</c:if>
+ END OF COMMENT --%>
+
+
<!-- checkout queue -->
<div id="h3">
<h3>
<s:text name="checkoutQueue.currentTask.section.title"/>
</h3>
<table width="100%">
- <s:if test="%{currentCheckOutTask != null}">
+ <s:if test="%{currentCheckoutTasks != null}">
<tbody>
<tr>
+ <th><s:text name="checkoutQueue.currentTask.buildQueue"/></th>
<th><s:text name="checkoutQueue.currentTask.projectName"/></th>
<th> </th>
</tr>
- <tr>
- <td width="99%"><s:property value="currentCheckOutTask.projectName"/></td>
- <td width="1%">
- <redback:ifAuthorized permission="continuum-manage-queues">
- <s:url id="cancelUrl" action="cancelCurrentQueueTask" method="cancelCurrentCheckout" namespace="/">
- <s:param name="projectId"><s:property value="currentCheckOutTask.projectId"/></s:param>
- </s:url>
- <s:a href="%{cancelUrl}"><img src="<s:url value='/images/cancelbuild.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0"></s:a>
- </redback:ifAuthorized>
- <redback:elseAuthorized>
- <img src="<s:url value='/images/cancelbuild_disabled.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0">
- </redback:elseAuthorized>
- </td>
- </tr>
+ <c:forEach var="element" items="${currentCheckoutTasks}">
+ <tr>
+ <td width="30%">${element.key}</td>
+ <td width="69%">${element.value.projectName}</td>
+ <td width="1%">
+ <redback:ifAuthorized permission="continuum-manage-queues">
+ <s:url id="cancelUrl" action="cancelCurrentQueueTask" method="cancelCurrentCheckout" namespace="/">
+ <s:param name="projectId">${element.value.projectId}</s:param>
+ </s:url>
+ <s:a href="%{cancelUrl}"><img src="<s:url value='/images/cancelbuild.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0"></s:a>
+ </redback:ifAuthorized>
+ <redback:elseAuthorized>
+ <img src="<s:url value='/images/cancelbuild_disabled.gif' includeParams="none"/>" alt="<s:text name='cancel'/>" title="<s:text name='cancel'/>" border="0">
+ </redback:elseAuthorized>
+ </td>
+ </tr>
+ </c:forEach>
</tbody>
</s:if>
<s:else>
@@ -155,12 +172,17 @@
</s:else>
</table>
</div>
+
+ <%-- deng - parallel builds
+ TODO: might need to loop through each element of map (each returns a list)
+
+
<div id="h3">
<h3>
<s:text name="checkoutQueue.section.title"/>
</h3>
- <c:if test="${!empty currentCheckOutTasks}">
- <ec:table items="currentCheckOutTasks"
+ <c:if test="${!empty checkoutsInQueue}">
+ <ec:table items="checkoutsInQueue.values"
var="currentCheckOutTask"
showExports="false"
showPagination="false"
@@ -208,6 +230,9 @@
</table>
</div>
</c:if>
+
+ END OF COMMENT --%>
+
</s:form>
</body>
</s:i18n>