You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ev...@apache.org on 2009/03/03 06:54:50 UTC

svn commit: r749538 [2/2] - in /continuum/trunk: continuum-core/src/test/java/org/apache/maven/continuum/execution/ continuum-core/src/test/java/org/apache/maven/continuum/project/builder/ continuum-webapp/src/main/java/org/apache/continuum/web/action/...

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=749538&r1=749537&r2=749538&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 Tue Mar  3 05:54:49 2009
@@ -49,6 +49,8 @@
 import org.codehaus.redback.integration.interceptor.SecureAction;
 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
 import org.codehaus.redback.integration.interceptor.SecureActionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @author <a href="mailto:olamy@apache.org">olamy</a>
@@ -57,30 +59,32 @@
  * @since 24 sept. 07
  */
 public class QueuesAction
-	extends ContinuumActionSupport
-	implements SecureAction, LogEnabled
+    extends ContinuumActionSupport
+    implements SecureAction
 {
+    private Logger logger = LoggerFactory.getLogger( this.getClass() );
+
     private static final String DISTRIBUTED_BUILD_SUCCESS = "distributed-build-success";
 
-	private List<String> selectedBuildTaskHashCodes;
-	    
-	private List<String> selectedCheckOutTaskHashCodes;
-	
-	private int buildDefinitionId;
-	
-	private int projectId;
-	
-	private int trigger;
-	
-	private String projectName;
-	
-	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>>();
-	
-	private Map<String, List<CheckOutTask>> checkoutsInQueue = new HashMap<String, List<CheckOutTask>>();
+    private List<String> selectedBuildTaskHashCodes;
+
+    private List<String> selectedCheckOutTaskHashCodes;
+
+    private int buildDefinitionId;
+
+    private int projectId;
+
+    private int trigger;
+
+    private String projectName;
+
+    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>>();
+
+    private Map<String, List<CheckOutTask>> checkoutsInQueue = new HashMap<String, List<CheckOutTask>>();
 
     /**
      * @plexus.requirement
@@ -99,106 +103,106 @@
 
     private List<String> selectedDistributedBuildTaskHashCodes;
 
-	// -----------------------------------------------------
-	//  webwork
-	// -----------------------------------------------------     
-	
-	public String cancelCurrent()
-	    throws Exception
-	{        
-	    try 
-	    {
-	        checkManageQueuesAuthorization();
-	    }
-	    catch( AuthorizationRequiredException authzE )
-	    {
-	        addActionError( authzE.getMessage() );
-	        return REQUIRES_AUTHORIZATION;
-	    }
-	    catch ( AuthenticationRequiredException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return REQUIRES_AUTHENTICATION;
-	    }
-	
-	    try
-	    {
-	        getContinuum().getBuildsManager().cancelBuild( projectId );
-	    }
-	    catch ( BuildManagerException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return ERROR;
-	    }
-	
-	    return SUCCESS;
-	}
-	
-	public String removeCheckout()
-	    throws Exception
-	{
-	    try 
-	    {
-	        checkManageQueuesAuthorization();
-	    }
-	    catch( AuthorizationRequiredException authzE )
-	    {
-	        addActionError( authzE.getMessage() );
-	        return REQUIRES_AUTHORIZATION;
-	    }
-	    catch ( AuthenticationRequiredException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return REQUIRES_AUTHENTICATION;
-	    }
-	     
-	    try
-	    {
-	        getContinuum().getBuildsManager().removeProjectFromCheckoutQueue( projectId );
-	    }
-	    catch ( BuildManagerException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return ERROR;
-	    }
-	    
-	    return SUCCESS;
-	}
-	
-	public String cancelCurrentCheckout()
-	    throws Exception
-	{
-	    try 
-	    {
-	        checkManageQueuesAuthorization();
-	    }
-	    catch( AuthorizationRequiredException authzE )
-	    {
-	        addActionError( authzE.getMessage() );
-	        return REQUIRES_AUTHORIZATION;
-	    }
-	    catch ( AuthenticationRequiredException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return REQUIRES_AUTHENTICATION;
-	    }
-	    try
-	    {
-	        cancelCheckout( projectId );
-	    }
-	    catch ( BuildManagerException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return ERROR;
-	    }
-	    
-	    return SUCCESS;
-	}
-	
-	public String display()
-	    throws Exception
-	{
-	    if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
+    // -----------------------------------------------------
+    //  webwork
+    // -----------------------------------------------------
+
+    public String cancelCurrent()
+        throws Exception
+    {
+        try
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch ( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        try
+        {
+            getContinuum().getBuildsManager().cancelBuild( projectId );
+        }
+        catch ( BuildManagerException e )
+        {
+            addActionError( e.getMessage() );
+            return ERROR;
+        }
+
+        return SUCCESS;
+    }
+
+    public String removeCheckout()
+        throws Exception
+    {
+        try
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch ( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        try
+        {
+            getContinuum().getBuildsManager().removeProjectFromCheckoutQueue( projectId );
+        }
+        catch ( BuildManagerException e )
+        {
+            addActionError( e.getMessage() );
+            return ERROR;
+        }
+
+        return SUCCESS;
+    }
+
+    public String cancelCurrentCheckout()
+        throws Exception
+    {
+        try
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch ( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+        try
+        {
+            cancelCheckout( projectId );
+        }
+        catch ( BuildManagerException e )
+        {
+            addActionError( e.getMessage() );
+            return ERROR;
+        }
+
+        return SUCCESS;
+    }
+
+    public String display()
+        throws Exception
+    {
+        if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
         {
             distributedBuildSummary = new ArrayList<DistributedBuildSummary>();
 
@@ -206,28 +210,29 @@
 
             for ( String url : map.keySet() )
             {
-               PrepareBuildProjectsTask task = map.get( url );
-               
-               ProjectGroup projectGroup = getContinuum().getProjectGroup( task.getProjectGroupId() );
-               
-               DistributedBuildSummary summary = new DistributedBuildSummary();
-               summary.setUrl( url );
-               summary.setProjectGroupId( task.getProjectGroupId() );
-               summary.setProjectGroupName( projectGroup.getName() );
-               summary.setScmRootAddress( task.getScmRootAddress() );
-               
-               ProjectScmRoot scmRoot = getContinuum().getProjectScmRootByProjectGroupAndScmRootAddress( task.getProjectGroupId(), 
-                                                                                                         task.getScmRootAddress() );
-               if ( scmRoot.getState() == ContinuumProjectState.UPDATING )
-               {
-                   summary.setCancelEnabled( false );
-               }
-               else
-               {
-                   summary.setCancelEnabled( true );
-               }
+                PrepareBuildProjectsTask task = map.get( url );
+
+                ProjectGroup projectGroup = getContinuum().getProjectGroup( task.getProjectGroupId() );
 
-               distributedBuildSummary.add( summary );
+                DistributedBuildSummary summary = new DistributedBuildSummary();
+                summary.setUrl( url );
+                summary.setProjectGroupId( task.getProjectGroupId() );
+                summary.setProjectGroupName( projectGroup.getName() );
+                summary.setScmRootAddress( task.getScmRootAddress() );
+
+                ProjectScmRoot scmRoot =
+                    getContinuum().getProjectScmRootByProjectGroupAndScmRootAddress( task.getProjectGroupId(),
+                                                                                     task.getScmRootAddress() );
+                if ( scmRoot.getState() == ContinuumProjectState.UPDATING )
+                {
+                    summary.setCancelEnabled( false );
+                }
+                else
+                {
+                    summary.setCancelEnabled( true );
+                }
+
+                distributedBuildSummary.add( summary );
             }
 
             distributedBuildQueues = aggregateQueues();
@@ -236,168 +241,169 @@
         }
         else
         {
-	        try
-	        {
-	            // current builds
-	            Map<String, Task> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
-	            Set<String> keySet = currentBuilds.keySet();
-	            for( String key : keySet )
-	            {
-	                BuildProjectTask buildTask = (BuildProjectTask) currentBuilds.get( key );
-	                currentBuildProjectTasks.put( key, buildTask );
-	            }
-	        }
-	        catch ( BuildManagerException e )
-	        {
-	            addActionError( e.getMessage() );
-	            return ERROR;
-	        }
-
-   	        try
-	        {
-	            // queued builds
-	            Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
-	            Set<String> keySet = builds.keySet();            
-	            for( String key : keySet )
-	            {
-	                List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
-	                for( Task task : builds.get( key ) )
-	                {
-	                    BuildProjectTask buildTask = (BuildProjectTask) task;
-	                    buildTasks.add( buildTask ); 
-	                }
-	                buildsInQueue.put( key, buildTasks );
-	            }
-	        }
-	        catch ( BuildManagerException e )
-	        {
-	            addActionError( e.getMessage() );
-	            return ERROR;
-	        }
-
- 	        try
-	        {
-	            // current checkouts
-	            Map<String, Task> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
-	            Set<String> keySet = currentCheckouts.keySet();
-	            for( String key : keySet )
-	            {
-	                CheckOutTask checkoutTask = (CheckOutTask) currentCheckouts.get( key );
-   	                currentCheckoutTasks.put( key, checkoutTask );
-	            }
-	        }
-	        catch ( BuildManagerException e )
-	        {
-	            addActionError( e.getMessage() );
-	            return ERROR;
-	        }
-
-	        try
-	        {
-	            // queued checkouts
-	            Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
-	            Set<String> keySet = checkouts.keySet();
-	            for( String key : keySet )
-	            {
-	                List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
-	                for( Task task : checkouts.get( key ) )
-	                {
-	                    CheckOutTask checkoutTask = (CheckOutTask) task;
-	                    checkoutTasks.add( checkoutTask ); 
-	                }
-	                checkoutsInQueue.put( key, checkoutTasks );
-	            }
-	        }
-	        catch ( BuildManagerException e )
-	        {
-	            addActionError( e.getMessage() );
-	            return ERROR;
-	        }
-	    }
-
-	    return SUCCESS;
-	}
-	
-	public String remove()
-	    throws Exception
-	{
-	    try 
-	    {
-	        checkManageQueuesAuthorization();
-	    }
-	    catch( AuthorizationRequiredException authzE )
-	    {
-	        addActionError( authzE.getMessage() );
-	        return REQUIRES_AUTHORIZATION;
-	    }
-	    catch ( AuthenticationRequiredException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return REQUIRES_AUTHENTICATION;
-	    }
-	            
-	    getContinuum().getBuildsManager().removeProjectFromBuildQueue( projectId, buildDefinitionId, trigger, projectName );
-	    Project project = getContinuum().getProject( projectId );
-	    project.setState( project.getOldState() );
-	    getContinuum().updateProject( project );
-	
-	    return SUCCESS;
-	}
-	
-	public String removeBuildEntries()
-	    throws Exception
-	{
-	    try 
-	    {
-	        checkManageQueuesAuthorization();
-	    }
-	    catch( AuthorizationRequiredException authzE )
-	    {
-	        addActionError( authzE.getMessage() );
-	        return REQUIRES_AUTHORIZATION;
-	    }
-	    catch ( AuthenticationRequiredException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return REQUIRES_AUTHENTICATION;
-	    }
-	    
-	    getContinuum().getBuildsManager().removeProjectsFromBuildQueueWithHashcodes(
-	             listToIntArray( this.getSelectedBuildTaskHashCodes() ) );
-	    return SUCCESS;
-	}
-	
-	public String removeCheckoutEntries()
-	    throws Exception
-	{
-	    try 
-	    {
-	        checkManageQueuesAuthorization();
-	    }
-	    catch( AuthorizationRequiredException authzE )
-	    {
-	        addActionError( authzE.getMessage() );
-	        return REQUIRES_AUTHORIZATION;
-	    }
-	    catch ( AuthenticationRequiredException e )
-	    {
-	        addActionError( e.getMessage() );
-	        return REQUIRES_AUTHENTICATION;
-	    }
-	 
-	    getContinuum().getBuildsManager().removeProjectsFromCheckoutQueueWithHashcodes(
-	                listToIntArray( this.getSelectedCheckOutTaskHashCodes() ) );
-	    return SUCCESS;
-	}
+            try
+            {
+                // current builds
+                Map<String, Task> currentBuilds = getContinuum().getBuildsManager().getCurrentBuilds();
+                Set<String> keySet = currentBuilds.keySet();
+                for ( String key : keySet )
+                {
+                    BuildProjectTask buildTask = (BuildProjectTask) currentBuilds.get( key );
+                    currentBuildProjectTasks.put( key, buildTask );
+                }
+            }
+            catch ( BuildManagerException e )
+            {
+                addActionError( e.getMessage() );
+                return ERROR;
+            }
+
+            try
+            {
+                // queued builds
+                Map<String, List<Task>> builds = getContinuum().getBuildsManager().getProjectsInBuildQueues();
+                Set<String> keySet = builds.keySet();
+                for ( String key : keySet )
+                {
+                    List<BuildProjectTask> buildTasks = new ArrayList<BuildProjectTask>();
+                    for ( Task task : builds.get( key ) )
+                    {
+                        BuildProjectTask buildTask = (BuildProjectTask) task;
+                        buildTasks.add( buildTask );
+                    }
+                    buildsInQueue.put( key, buildTasks );
+                }
+            }
+            catch ( BuildManagerException e )
+            {
+                addActionError( e.getMessage() );
+                return ERROR;
+            }
+
+            try
+            {
+                // current checkouts
+                Map<String, Task> currentCheckouts = getContinuum().getBuildsManager().getCurrentCheckouts();
+                Set<String> keySet = currentCheckouts.keySet();
+                for ( String key : keySet )
+                {
+                    CheckOutTask checkoutTask = (CheckOutTask) currentCheckouts.get( key );
+                    currentCheckoutTasks.put( key, checkoutTask );
+                }
+            }
+            catch ( BuildManagerException e )
+            {
+                addActionError( e.getMessage() );
+                return ERROR;
+            }
+
+            try
+            {
+                // queued checkouts
+                Map<String, List<Task>> checkouts = getContinuum().getBuildsManager().getProjectsInCheckoutQueues();
+                Set<String> keySet = checkouts.keySet();
+                for ( String key : keySet )
+                {
+                    List<CheckOutTask> checkoutTasks = new ArrayList<CheckOutTask>();
+                    for ( Task task : checkouts.get( key ) )
+                    {
+                        CheckOutTask checkoutTask = (CheckOutTask) task;
+                        checkoutTasks.add( checkoutTask );
+                    }
+                    checkoutsInQueue.put( key, checkoutTasks );
+                }
+            }
+            catch ( BuildManagerException e )
+            {
+                addActionError( e.getMessage() );
+                return ERROR;
+            }
+        }
+
+        return SUCCESS;
+    }
+
+    public String remove()
+        throws Exception
+    {
+        try
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch ( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        getContinuum().getBuildsManager().removeProjectFromBuildQueue( projectId, buildDefinitionId, trigger,
+                                                                       projectName );
+        Project project = getContinuum().getProject( projectId );
+        project.setState( project.getOldState() );
+        getContinuum().updateProject( project );
+
+        return SUCCESS;
+    }
+
+    public String removeBuildEntries()
+        throws Exception
+    {
+        try
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch ( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        getContinuum().getBuildsManager().removeProjectsFromBuildQueueWithHashcodes(
+            listToIntArray( this.getSelectedBuildTaskHashCodes() ) );
+        return SUCCESS;
+    }
+
+    public String removeCheckoutEntries()
+        throws Exception
+    {
+        try
+        {
+            checkManageQueuesAuthorization();
+        }
+        catch ( AuthorizationRequiredException authzE )
+        {
+            addActionError( authzE.getMessage() );
+            return REQUIRES_AUTHORIZATION;
+        }
+        catch ( AuthenticationRequiredException e )
+        {
+            addActionError( e.getMessage() );
+            return REQUIRES_AUTHENTICATION;
+        }
+
+        getContinuum().getBuildsManager().removeProjectsFromCheckoutQueueWithHashcodes(
+            listToIntArray( this.getSelectedCheckOutTaskHashCodes() ) );
+        return SUCCESS;
+    }
 
     public String cancelDistributedBuild()
         throws Exception
     {
-        try 
+        try
         {
             checkManageQueuesAuthorization();
         }
-        catch( AuthorizationRequiredException authzE )
+        catch ( AuthorizationRequiredException authzE )
         {
             addActionError( authzE.getMessage() );
             return REQUIRES_AUTHORIZATION;
@@ -416,11 +422,11 @@
     public String removeDistributedBuildEntry()
         throws Exception
     {
-        try 
+        try
         {
             checkManageQueuesAuthorization();
         }
-        catch( AuthorizationRequiredException authzE )
+        catch ( AuthorizationRequiredException authzE )
         {
             addActionError( authzE.getMessage() );
             return REQUIRES_AUTHORIZATION;
@@ -439,11 +445,11 @@
     public String removeDistributedBuildEntries()
         throws Exception
     {
-        try 
+        try
         {
             checkManageQueuesAuthorization();
         }
-        catch( AuthorizationRequiredException authzE )
+        catch ( AuthorizationRequiredException authzE )
         {
             addActionError( authzE.getMessage() );
             return REQUIRES_AUTHORIZATION;
@@ -454,174 +460,172 @@
             return REQUIRES_AUTHENTICATION;
         }
 
-        getContinuum().getTaskQueueManager()
-            .removeTasksFromDistributedBuildQueueWithHashCodes( listToIntArray( this.getSelectedDistributedBuildTaskHashCodes() ) );
+        getContinuum().getTaskQueueManager().removeTasksFromDistributedBuildQueueWithHashCodes(
+            listToIntArray( this.getSelectedDistributedBuildTaskHashCodes() ) );
 
         return SUCCESS;
     }
 
-	private int[] listToIntArray( List<String> strings )
-	{
-	    if ( strings == null || strings.isEmpty() )
-	    {
-	        return new int[0];
-	    }
-	    int[] array = new int[0];
-	    for ( String intString : strings )
-	    {
-	        array = ArrayUtils.add( array, Integer.parseInt( intString ) );
-	    }
-	    return array;
-	}
-	
-	
-	// -----------------------------------------------------
-	//  security
-	// -----------------------------------------------------    
-	
-	public SecureActionBundle getSecureActionBundle()
-	    throws SecureActionException
-	{
-	    SecureActionBundle bundle = new SecureActionBundle();
-	    bundle.setRequiresAuthentication( true );
-	    bundle.addRequiredAuthorization( ContinuumRoleConstants.CONTINUUM_VIEW_QUEUES, Resource.GLOBAL );
-	
-	    return bundle;
-	}
-	
-	private boolean cancelCheckout(int projectId)
-	    throws BuildManagerException
-	{   
-	    Map<String, Task> tasks = getContinuum().getBuildsManager().getCurrentCheckouts();
-	    if( tasks != null )
-	    {  
-	        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 )
-	                {
-	                    getLogger().info( "Cancelling checkout for project " + projectId );
-	                    return getContinuum().getBuildsManager().cancelCheckout( projectId );
-	                }
-	                else
-	                {
-	                    getLogger().warn(
-	                                      "Current task is not for the given projectId (" + projectId + "): "
-	                                          + ( (CheckOutTask) task ).getProjectId() + "; not cancelling checkout" );
-	                }
-	            }
-	        }
-	    }
-	    else
-	    {
-	        getLogger().warn( "No task running - not cancelling checkout" );
-	    }
-	    
-	    return false;
-	}  
-	
-	public int getBuildDefinitionId()
-	{
-	    return buildDefinitionId;
-	}
-	
-	public void setBuildDefinitionId( int buildDefinitionId )
-	{
-	    this.buildDefinitionId = buildDefinitionId;
-	}
-	
-	public int getProjectId()
-	{
-	    return projectId;
-	}
-	
-	public void setProjectId( int projectId )
-	{
-	    this.projectId = projectId;
-	}
-	
-	public int getTrigger()
-	{
-	    return trigger;
-	}
-	
-	public void setTrigger( int trigger )
-	{
-	    this.trigger = trigger;
-	}
-	
-	public String getProjectName()
-	{
-	    return projectName;
-	}
-	
-	public void setProjectName( String projectName )
-	{
-	    this.projectName = projectName;
-	}
-	
-	public List<String> getSelectedBuildTaskHashCodes()
-	{
-	    return selectedBuildTaskHashCodes;
-	}
-	
-	public void setSelectedBuildTaskHashCodes( List<String> selectedBuildTaskHashCodes )
-	{
-	    this.selectedBuildTaskHashCodes = selectedBuildTaskHashCodes;
-	}
-	
-	public List<String> getSelectedCheckOutTaskHashCodes()
-	{
-	    return selectedCheckOutTaskHashCodes;
-	}
-	
-	public void setSelectedCheckOutTaskHashCodes( List<String> selectedCheckOutTaskHashCodes )
-	{
-	    this.selectedCheckOutTaskHashCodes = selectedCheckOutTaskHashCodes;
-	}
-	
-	public Map<String, BuildProjectTask> getCurrentBuildProjectTasks()
-	{
-	    return 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;
-	}
+    private int[] listToIntArray( List<String> strings )
+    {
+        if ( strings == null || strings.isEmpty() )
+        {
+            return new int[0];
+        }
+        int[] array = new int[0];
+        for ( String intString : strings )
+        {
+            array = ArrayUtils.add( array, Integer.parseInt( intString ) );
+        }
+        return array;
+    }
+
+    // -----------------------------------------------------
+    //  security
+    // -----------------------------------------------------
+
+    public SecureActionBundle getSecureActionBundle()
+        throws SecureActionException
+    {
+        SecureActionBundle bundle = new SecureActionBundle();
+        bundle.setRequiresAuthentication( true );
+        bundle.addRequiredAuthorization( ContinuumRoleConstants.CONTINUUM_VIEW_QUEUES, Resource.GLOBAL );
+
+        return bundle;
+    }
+
+    private boolean cancelCheckout( int projectId )
+        throws BuildManagerException
+    {
+        Map<String, Task> tasks = getContinuum().getBuildsManager().getCurrentCheckouts();
+        if ( tasks != null )
+        {
+            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 )
+                    {
+                        logger.info( "Cancelling checkout for project " + projectId );
+                        return getContinuum().getBuildsManager().cancelCheckout( projectId );
+                    }
+                    else
+                    {
+                        logger.warn( "Current task is not for the given projectId (" + projectId + "): " +
+                            ( (CheckOutTask) task ).getProjectId() + "; not cancelling checkout" );
+                    }
+                }
+            }
+        }
+        else
+        {
+            logger.warn( "No task running - not cancelling checkout" );
+        }
+
+        return false;
+    }
+
+    public int getBuildDefinitionId()
+    {
+        return buildDefinitionId;
+    }
+
+    public void setBuildDefinitionId( int buildDefinitionId )
+    {
+        this.buildDefinitionId = buildDefinitionId;
+    }
+
+    public int getProjectId()
+    {
+        return projectId;
+    }
+
+    public void setProjectId( int projectId )
+    {
+        this.projectId = projectId;
+    }
+
+    public int getTrigger()
+    {
+        return trigger;
+    }
+
+    public void setTrigger( int trigger )
+    {
+        this.trigger = trigger;
+    }
+
+    public String getProjectName()
+    {
+        return projectName;
+    }
+
+    public void setProjectName( String projectName )
+    {
+        this.projectName = projectName;
+    }
+
+    public List<String> getSelectedBuildTaskHashCodes()
+    {
+        return selectedBuildTaskHashCodes;
+    }
+
+    public void setSelectedBuildTaskHashCodes( List<String> selectedBuildTaskHashCodes )
+    {
+        this.selectedBuildTaskHashCodes = selectedBuildTaskHashCodes;
+    }
+
+    public List<String> getSelectedCheckOutTaskHashCodes()
+    {
+        return selectedCheckOutTaskHashCodes;
+    }
+
+    public void setSelectedCheckOutTaskHashCodes( List<String> selectedCheckOutTaskHashCodes )
+    {
+        this.selectedCheckOutTaskHashCodes = selectedCheckOutTaskHashCodes;
+    }
+
+    public Map<String, BuildProjectTask> getCurrentBuildProjectTasks()
+    {
+        return 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<DistributedBuildSummary> getDistributedBuildSummary()
     {
@@ -673,29 +677,33 @@
         this.scmRootAddress = scmRootAddress;
     }
 
-    private List<PrepareBuildProjectsTask> aggregateQueues() throws TaskQueueManagerException
+    private List<PrepareBuildProjectsTask> aggregateQueues()
+        throws TaskQueueManagerException
     {
         List<PrepareBuildProjectsTask> aggregatedQueues = new ArrayList<PrepareBuildProjectsTask>();
 
-        List<PrepareBuildProjectsTask> overallQueues = getContinuum().getTaskQueueManager().getDistributedBuildProjectsInQueue();
+        List<PrepareBuildProjectsTask> overallQueues =
+            getContinuum().getTaskQueueManager().getDistributedBuildProjectsInQueue();
 
-        Map <String, DistributedBuildTaskQueueExecutor> agentTaskQueueExecutors = distributedBuildManager.getTaskQueueExecutors();
+        Map<String, DistributedBuildTaskQueueExecutor> agentTaskQueueExecutors =
+            distributedBuildManager.getTaskQueueExecutors();
 
         for ( String url : agentTaskQueueExecutors.keySet() )
         {
             try
             {
-                getLogger().debug("size of each queue snapshot " + url + " : " + agentTaskQueueExecutors.get( url ).getQueue().getQueueSnapshot().size()); 
-                aggregatedQueues.addAll( agentTaskQueueExecutors.get( url ).getQueue().getQueueSnapshot() ) ;
+                logger.debug( "size of each queue snapshot " + url + " : " +
+                    agentTaskQueueExecutors.get( url ).getQueue().getQueueSnapshot().size() );
+                aggregatedQueues.addAll( agentTaskQueueExecutors.get( url ).getQueue().getQueueSnapshot() );
             }
             catch ( TaskQueueException e )
             {
                 //silently ignore error
-                getLogger().error( "Error encountered retrieving queue snapshot from queue :" + url, e );
+                logger.error( "Error encountered retrieving queue snapshot from queue :" + url, e );
             }
         }
 
-        getLogger().debug("size of agg. queue " + aggregatedQueues.size() );
+        logger.debug( "size of agg. queue " + aggregatedQueues.size() );
         aggregatedQueues.addAll( overallQueues );
 
         return aggregatedQueues;

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/BuildDefinitionSummaryAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/BuildDefinitionSummaryAction.java?rev=749538&r1=749537&r2=749538&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/BuildDefinitionSummaryAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/BuildDefinitionSummaryAction.java Tue Mar  3 05:54:49 2009
@@ -30,6 +30,8 @@
 import org.apache.maven.continuum.web.action.AbstractBuildDefinitionAction;
 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
 import org.apache.maven.continuum.web.model.BuildDefinitionSummary;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * BuildDefinitionSummaryAction:
@@ -41,6 +43,8 @@
 public class BuildDefinitionSummaryAction
     extends AbstractBuildDefinitionAction
 {
+    private Logger logger = LoggerFactory.getLogger( this.getClass() );
+
     private int projectGroupId;
 
     private String projectGroupName;
@@ -77,7 +81,7 @@
         }
         catch ( ContinuumException e )
         {
-            getLogger().info( "unable to build summary" );
+            logger.info( "unable to build summary" );
             return ERROR;
         }
         catch ( AuthorizationRequiredException authzE )
@@ -111,7 +115,7 @@
         }
         catch ( ContinuumException e )
         {
-            getLogger().info( "unable to build summary" );
+            logger.info( "unable to build summary" );
             return ERROR;
         }
         catch ( AuthorizationRequiredException authzE )
@@ -182,7 +186,6 @@
         return summaryList;
     }
 
-    
 
     public int getProjectId()
     {

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/NotifierSummaryAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/NotifierSummaryAction.java?rev=749538&r1=749537&r2=749538&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/NotifierSummaryAction.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/component/NotifierSummaryAction.java Tue Mar  3 05:54:49 2009
@@ -31,6 +31,8 @@
 import org.apache.maven.continuum.web.exception.AuthorizationRequiredException;
 import org.apache.maven.continuum.web.model.NotifierSummary;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -48,6 +50,8 @@
 public class NotifierSummaryAction
     extends ContinuumActionSupport
 {
+    private Logger logger = LoggerFactory.getLogger( this.getClass() );
+
     /**
      * Identifier for the {@link ProjectGroup} for which the Notifier summary
      * needs to be prepared for.
@@ -78,7 +82,7 @@
      */
     public String summarizeForProject()
     {
-        getLogger().debug( "Obtaining summary for Project Id: " + projectId );
+        logger.debug( "Obtaining summary for Project Id: " + projectId );
 
         try
         {
@@ -88,7 +92,7 @@
         }
         catch ( ContinuumException e )
         {
-            getLogger().error( "Unable to prepare Notifier summaries for Project Id: " + projectId, e );
+            logger.error( "Unable to prepare Notifier summaries for Project Id: " + projectId, e );
             return ERROR;
         }
         catch ( AuthorizationRequiredException authzE )
@@ -119,7 +123,7 @@
      */
     public String summarizeForProjectGroup()
     {
-        getLogger().debug( "Obtaining summary for ProjectGroup Id:" + projectGroupId );
+        logger.debug( "Obtaining summary for ProjectGroup Id:" + projectGroupId );
 
         try
         {
@@ -138,7 +142,7 @@
         }
         catch ( ContinuumException e )
         {
-            getLogger().error( "Unable to prepare Notifier summaries for ProjectGroup Id: " + projectGroupId, e );
+            logger.error( "Unable to prepare Notifier summaries for ProjectGroup Id: " + projectGroupId, e );
             return ERROR;
         }
         catch ( AuthorizationRequiredException authzE )

Modified: continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/validator/InstallationValidator.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/validator/InstallationValidator.java?rev=749538&r1=749537&r2=749538&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/validator/InstallationValidator.java (original)
+++ continuum/trunk/continuum-webapp/src/main/java/org/apache/maven/continuum/web/validator/InstallationValidator.java Tue Mar  3 05:54:49 2009
@@ -24,9 +24,9 @@
 import org.apache.maven.continuum.execution.ExecutorConfigurator;
 import org.apache.maven.continuum.installation.InstallationException;
 import org.apache.maven.continuum.installation.InstallationService;
-import org.codehaus.plexus.logging.LogEnabled;
-import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
 
@@ -39,11 +39,10 @@
  */
 public class InstallationValidator
     extends ValidatorSupport
-    implements LogEnabled
 {
     private String fieldName;
 
-    private Logger logger;
+    private Logger logger = LoggerFactory.getLogger( this.getClass() );
 
     /**
      * @plexus.requirement role-hint="default"
@@ -79,8 +78,8 @@
                 if ( executorConfigurator.getVersionArgument() != null )
                 {
                     // just try to get version infos to validate path is valid
-                    List<String> versionInfos = installationService
-                        .getExecutorConfiguratorVersion( varValue, executorConfigurator, null );
+                    List<String> versionInfos =
+                        installationService.getExecutorConfiguratorVersion( varValue, executorConfigurator, null );
                 }
             }
         }
@@ -102,12 +101,4 @@
     {
         this.fieldName = fieldName;
     }
-
-    /**
-     * @see org.codehaus.plexus.logging.LogEnabled#enableLogging(org.codehaus.plexus.logging.Logger)
-     */
-    public void enableLogging( Logger logger )
-    {
-        this.logger = logger;
-    }
 }

Modified: continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/TestAction.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/TestAction.java?rev=749538&r1=749537&r2=749538&view=diff
==============================================================================
--- continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/TestAction.java (original)
+++ continuum/trunk/continuum-webapp/src/test/java/org/apache/maven/continuum/web/action/TestAction.java Tue Mar  3 05:54:49 2009
@@ -1,5 +1,8 @@
 package org.apache.maven.continuum.web.action;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -28,12 +31,14 @@
 public class TestAction
     extends PlexusActionSupport
 {
+    private Logger logger = LoggerFactory.getLogger( this.getClass() );
+
     private String testString;
 
     public String execute()
         throws Exception
     {
-        getLogger().info( testString );
+        logger.info( testString );
 
         return INPUT;
     }