[jboss-cvs] JBossAS SVN: r84533 - in projects/jboss-deployers/trunk: deployers-impl/src/main/java/org/jboss/deployers/plugins/main and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Feb 20 09:19:29 EST 2009
Author: alesj
Date: 2009-02-20 09:19:29 -0500 (Fri, 20 Feb 2009)
New Revision: 84533
Modified:
projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java
projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java
projects/jboss-deployers/trunk/pom.xml
Log:
Update vfs to 2.1.0, mc 2.0.4, cl 2.0.3.
Fix how we handle re-deployments.
Modified: projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java 2009-02-20 13:59:53 UTC (rev 84532)
+++ projects/jboss-deployers/trunk/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java 2009-02-20 14:19:29 UTC (rev 84533)
@@ -26,10 +26,11 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
-import java.util.ListIterator;
-import java.util.LinkedHashMap;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -104,8 +105,8 @@
private Comparator<DeploymentContext> comparator;
private Comparator<DeploymentContext> reverted;
- /** The deployment waiting to be processed */
- private Map<String, Deployment> toDeploy = Collections.synchronizedMap(new LinkedHashMap<String, Deployment>());
+ /** The re-deployments */
+ private Map<String, Deployment> toRedeploy = Collections.synchronizedMap(new LinkedHashMap<String, Deployment>());
/**
* Set the top deployment context comparator.
@@ -195,7 +196,7 @@
if (context != null)
return context.getDeployment();
else
- return toDeploy.get(name);
+ return toRedeploy.get(name);
}
@Deprecated
@@ -296,68 +297,70 @@
public void addDeployment(Deployment deployment) throws DeploymentException
{
- if (deployment == null)
- throw new DeploymentException("Null context");
+ addDeployment(deployment, true);
+ }
- lockRead();
- try
+ /**
+ * Remove added re-deployments.
+ * This method should take read lock.
+ *
+ * @param names the deployment names to remove
+ * @throws DeploymentException for any error
+ */
+ protected void processToUndeploy(Set<String> names) throws DeploymentException
+ {
+ DeploymentException initialCause = null;
+ for(String name : names)
{
- if (shutdown.get())
- throw new DeploymentException("The main deployer is shutdown");
-
- String name = deployment.getName();
- checkExistingTopLevelDeployment(name, true);
- toDeploy.put(name, deployment);
+ try
+ {
+ removeDeployment(name, true);
+ }
+ catch (DeploymentException e)
+ {
+ if (initialCause == null)
+ initialCause = e;
+ else
+ log.warn("More exceptions for deployment: " + name, e);
+ }
}
- finally
- {
- unlockRead();
- }
+ if (initialCause != null)
+ throw initialCause;
}
/**
- * Process added deployments.
+ * Process added re-deployments.
+ * This method should take read lock.
*
+ * @param deployments the deployments to process
* @throws DeploymentException for any error
*/
- protected void processToDeploy() throws DeploymentException
+ protected void processToDeploy(Collection<Deployment> deployments) throws DeploymentException
{
- lockRead();
+ List<String> added = new ArrayList<String>();
try
{
- List<String> added = new ArrayList<String>();
- try
+ for (Deployment deployment : deployments)
{
- for (Map.Entry<String, Deployment> entry : toDeploy.entrySet())
- {
- determineDeploymentContext(entry.getValue(), true);
- added.add(entry.getKey());
- }
+ determineDeploymentContext(deployment, true);
+ added.add(deployment.getName());
}
- catch (DeploymentException e)
+ }
+ catch (DeploymentException e)
+ {
+ ListIterator<String> iter = added.listIterator(added.size());
+ while (iter.hasPrevious())
{
- ListIterator<String> iter = added.listIterator(added.size());
- while (iter.hasPrevious())
+ try
{
- try
- {
- removeDeployment(iter.previous(), true);
- }
- catch (Throwable ignored)
- {
- }
+ removeDeployment(iter.previous(), true);
}
- throw e;
+ catch (Throwable ignored)
+ {
+ }
}
- finally
- {
- toDeploy.clear();
- }
+ throw e;
}
- finally
- {
- unlockRead();
- }
}
/**
@@ -381,8 +384,11 @@
String name = deployment.getName();
log.debug("Add deployment: " + name);
- checkExistingTopLevelDeployment(name, addToDeploy);
- determineDeploymentContext(deployment, addToDeploy);
+ // only try to recognize non re-deployments
+ if (checkExistingTopLevelDeployment(deployment, addToDeploy) == false)
+ {
+ determineDeploymentContext(deployment, addToDeploy);
+ }
}
finally
{
@@ -394,16 +400,19 @@
* Check for existing deployment context - redeploy.
* Method should take read lock.
*
- * @param name the deployment name
+ * @param deployment the deployment
* @param addToDeploy should we add this deployment to deploy collection
+ * @return true if deployment is a redeployment, false otherwise
*/
- protected void checkExistingTopLevelDeployment(String name, boolean addToDeploy)
+ protected boolean checkExistingTopLevelDeployment(Deployment deployment, boolean addToDeploy)
{
+ String name = deployment.getName();
DeploymentContext previous = topLevelDeployments.get(name);
if (previous != null)
{
log.debug("Removing previous deployment: " + previous.getName());
- removeContext(previous, addToDeploy);
+ toRedeploy.put(name, deployment);
+ return true;
}
else
{
@@ -411,6 +420,7 @@
if (previous != null)
throw new IllegalStateException("Deployment already exists as a subdeployment: " + name);
}
+ return false;
}
/**
@@ -631,67 +641,67 @@
if (deployers == null)
throw new IllegalStateException("No deployers");
- List<DeploymentContext> undeployContexts = null;
- lockWrite();
+ lockRead();
try
{
if (shutdown.get())
throw new IllegalStateException("The main deployer is shutdown");
+ Map<String, Deployment> copy = new LinkedHashMap<String, Deployment>(toRedeploy);
+ toRedeploy.clear();
+
+ try
+ {
+ processToUndeploy(copy.keySet());
+ }
+ catch (DeploymentException e)
+ {
+ throw new RuntimeException("Error while removing re-deployments", e);
+ }
+
+ List<DeploymentContext> undeployContexts = null;
if (undeploy.isEmpty() == false)
{
// Undeploy in reverse order (subdeployments first)
- undeployContexts = new ArrayList<DeploymentContext>(undeploy.size());
- for (int i = undeploy.size() - 1; i >= 0; --i)
- undeployContexts.add(undeploy.get(i));
+ undeployContexts = new ArrayList<DeploymentContext>(undeploy);
+ undeploy.clear();
+ Collections.reverse(undeployContexts);
if (reverted != null)
Collections.sort(undeployContexts, reverted);
- undeploy.clear();
}
- }
- finally
- {
- unlockWrite();
- }
- if (undeployContexts != null)
- {
- deployers.process(null, undeployContexts);
- }
+ if (undeployContexts != null)
+ {
+ deployers.process(null, undeployContexts);
+ }
- try
- {
- processToDeploy();
- }
- catch (DeploymentException e)
- {
- throw new RuntimeException("Error while processing new deployments", e);
- }
+ try
+ {
+ processToDeploy(copy.values());
+ }
+ catch (DeploymentException e)
+ {
+ throw new RuntimeException("Error while adding re-deployments", e);
+ }
- List<DeploymentContext> deployContexts = null;
- lockWrite();
- try
- {
- if (shutdown.get())
- throw new IllegalStateException("The main deployer is shutdown");
-
+ List<DeploymentContext> deployContexts = null;
if (deploy.isEmpty() == false)
{
deployContexts = new ArrayList<DeploymentContext>(deploy);
+ deploy.clear();
if (comparator != null)
Collections.sort(deployContexts, comparator);
- deploy.clear();
}
+
+ if (deployContexts != null)
+ {
+ deployers.process(deployContexts, null);
+ }
}
finally
{
- unlockWrite();
+ unlockRead();
}
-
- if (deployContexts != null)
- {
- deployers.process(deployContexts, null);
- }
}
public DeploymentStage getDeploymentStage(String deploymentName) throws DeploymentException
Modified: projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java 2009-02-20 13:59:53 UTC (rev 84532)
+++ projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/main/test/DeployerSingleDeploymentTestCase.java 2009-02-20 14:19:29 UTC (rev 84533)
@@ -84,6 +84,10 @@
String msg = cause.getMessage();
assertEquals(failed, Integer.parseInt(msg));
}
+ finally
+ {
+ mainDeployer.undeploy(deployments);
+ }
deployer.clear();
}
@@ -114,6 +118,10 @@
assertEquals(size, deployer.getUndeployedUnits().size() + deployer.getFailed().size());
assertEquals(Collections.singletonList("deployment" + failed), deployer.getFailed());
}
+ finally
+ {
+ mainDeployer.undeploy(deployments);
+ }
deployer.clear();
}
Modified: projects/jboss-deployers/trunk/pom.xml
===================================================================
--- projects/jboss-deployers/trunk/pom.xml 2009-02-20 13:59:53 UTC (rev 84532)
+++ projects/jboss-deployers/trunk/pom.xml 2009-02-20 14:19:29 UTC (rev 84533)
@@ -21,11 +21,11 @@
</scm>
<properties>
- <version.jboss.vfs>2.2.0-SNAPSHOT</version.jboss.vfs>
+ <version.jboss.vfs>2.1.0.GA</version.jboss.vfs>
<version.jboss.man>2.0.0.GA</version.jboss.man>
<version.jboss.mdr>2.0.1.GA</version.jboss.mdr>
- <version.jboss.microcontainer>2.0.3.GA</version.jboss.microcontainer>
- <version.jboss.classloader>2.0.2.GA</version.jboss.classloader>
+ <version.jboss.microcontainer>2.0.4.GA</version.jboss.microcontainer>
+ <version.jboss.classloader>2.0.3.GA</version.jboss.classloader>
<version.jboss.classloading.spi>5.0.3.GA</version.jboss.classloading.spi>
<version.jboss.common.core>2.2.10.GA</version.jboss.common.core>
<version.jboss.logging.spi>2.0.5.GA</version.jboss.logging.spi>
More information about the jboss-cvs-commits
mailing list