[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