Return-Path: Delivered-To: apmail-continuum-commits-archive@www.apache.org Received: (qmail 69226 invoked from network); 13 Mar 2008 23:11:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 13 Mar 2008 23:11:37 -0000 Received: (qmail 642 invoked by uid 500); 13 Mar 2008 23:11:35 -0000 Delivered-To: apmail-continuum-commits-archive@continuum.apache.org Received: (qmail 612 invoked by uid 500); 13 Mar 2008 23:11:34 -0000 Mailing-List: contact commits-help@continuum.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@continuum.apache.org Delivered-To: mailing list commits@continuum.apache.org Received: (qmail 603 invoked by uid 99); 13 Mar 2008 23:11:34 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Mar 2008 16:11:34 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 13 Mar 2008 23:10:54 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 7DE8D1A9832; Thu, 13 Mar 2008 16:11:09 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r636916 - in /continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum: DefaultContinuum.java utils/PlexusContainerManager.java Date: Thu, 13 Mar 2008 23:11:04 -0000 To: commits@continuum.apache.org From: olamy@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080313231112.7DE8D1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: olamy Date: Thu Mar 13 16:10:52 2008 New Revision: 636916 URL: http://svn.apache.org/viewvc?rev=636916&view=rev Log: [CONTINUUM-1676] deleting a project or group should cancel any current or scheduled builds, and prevent any from being queued add cancel the current build task if the project is the same as the one remove Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/PlexusContainerManager.java Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=636916&r1=636915&r2=636916&view=diff ============================================================================== --- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original) +++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Thu Mar 13 16:10:52 2008 @@ -64,6 +64,7 @@ import org.codehaus.plexus.action.Action; import org.codehaus.plexus.action.ActionManager; import org.codehaus.plexus.action.ActionNotFoundException; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.context.Context; import org.codehaus.plexus.context.ContextException; import org.codehaus.plexus.formica.FormicaException; @@ -75,8 +76,10 @@ import org.codehaus.plexus.personality.plexus.lifecycle.phase.Startable; import org.codehaus.plexus.personality.plexus.lifecycle.phase.StartingException; import org.codehaus.plexus.personality.plexus.lifecycle.phase.StoppingException; +import org.codehaus.plexus.taskqueue.Task; import org.codehaus.plexus.taskqueue.TaskQueue; import org.codehaus.plexus.taskqueue.TaskQueueException; +import org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor; import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.dag.CycleDetectedException; @@ -178,6 +181,8 @@ * @plexus.requirement */ private BuildExecutorManager executorManager; + + private PlexusContainer container; /** @@ -544,7 +549,34 @@ throw new ContinuumException( "Error while getting the checkout queue.", e ); } } + + public TaskQueueExecutor getBuildTaskQueueExecutor() + throws ContinuumException + { + try + { + return (TaskQueueExecutor) container.lookup( TaskQueueExecutor.class, "build-project" ); + } + catch ( ComponentLookupException e ) + { + throw new ContinuumException( e.getMessage(), e ); + } + } + public int getCurrentProjectIdBuilding() + throws ContinuumException + { + Task task = getBuildTaskQueueExecutor().getCurrentTask(); + if ( task != null ) + { + if ( task instanceof BuildProjectTask ) + { + return ( (BuildProjectTask) task ).getProjectId(); + } + } + return -1; + } + public boolean removeFromBuildingQueue( int projectId, int buildDefinitionId, int trigger, String projectName ) throws ContinuumException { @@ -712,6 +744,23 @@ { removeProjectFromBuildingQueue( projectId ); } + + // cancel it if currently building + + if ( getCurrentProjectIdBuilding() == projectId ) + { + Task currentTask = getBuildTaskQueueExecutor().getCurrentTask(); + { + if ( currentTask instanceof BuildProjectTask ) + { + if ( ( (BuildProjectTask) currentTask ).getProjectId() == projectId ) + { + getLogger().info( "Cancelling task for project " + projectId ); + getBuildTaskQueueExecutor().cancelTask( currentTask ); + } + } + } + } for ( Object o : project.getBuildResults() ) { @@ -2712,11 +2761,14 @@ project.getExecutorId() ); } } - + + // -------------------------------- + // Plexus Lifecycle + // -------------------------------- public void contextualize( Context context ) throws ContextException { - PlexusContainer container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); + container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); PlexusContainerManager.getInstance().setContainer( container ); } @@ -2754,6 +2806,12 @@ getLogger().error( "Error activating schedules.", e ); } } + + public void stop() + throws StoppingException +{ + stopContinuum(); +} private void closeStore() { @@ -2763,11 +2821,7 @@ } } - public void stop() - throws StoppingException - { - stopContinuum(); - } + public void stopContinuum() throws StoppingException Modified: continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/PlexusContainerManager.java URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/PlexusContainerManager.java?rev=636916&r1=636915&r2=636916&view=diff ============================================================================== --- continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/PlexusContainerManager.java (original) +++ continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/PlexusContainerManager.java Thu Mar 13 16:10:52 2008 @@ -22,6 +22,7 @@ import org.codehaus.plexus.PlexusContainer; /** + * TODO this class can be removed ? * @author Emmanuel Venisse * @version $Id$ */