[jboss-cvs] JBossAS SVN: r62016 - trunk/system-jmx/src/main/org/jboss/deployment.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 3 01:56:09 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-04-03 01:56:08 -0400 (Tue, 03 Apr 2007)
New Revision: 62016

Modified:
   trunk/system-jmx/src/main/org/jboss/deployment/MainDeployer.java
   trunk/system-jmx/src/main/org/jboss/deployment/MainDeployerMBean.java
Log:
Add a check for incomplete deployments after a deploy call

Modified: trunk/system-jmx/src/main/org/jboss/deployment/MainDeployer.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/deployment/MainDeployer.java	2007-04-03 04:52:16 UTC (rev 62015)
+++ trunk/system-jmx/src/main/org/jboss/deployment/MainDeployer.java	2007-04-03 05:56:08 UTC (rev 62016)
@@ -36,7 +36,6 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
@@ -47,16 +46,17 @@
 import java.util.jar.Attributes;
 import java.util.jar.Manifest;
 
-import javax.management.JMException;
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 import javax.management.Notification;
 import javax.management.ObjectName;
 
 import org.jboss.deployers.plugins.structure.AbstractDeploymentContext;
+import org.jboss.deployers.spi.IncompleteDeploymentException;
+import org.jboss.deployers.spi.IncompleteDeployments;
+import org.jboss.deployers.spi.IncompleteDeploymentsBuilder;
 import org.jboss.deployers.spi.structure.DeploymentContext;
-import org.jboss.mx.util.JMXExceptionDecoder;
-import org.jboss.system.ServiceContext;
+import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.system.ServiceMBeanSupport;
 import org.jboss.system.server.ServerConfig;
 import org.jboss.system.server.ServerConfigLocator;
@@ -81,6 +81,8 @@
 public class MainDeployer extends ServiceMBeanSupport
    implements Deployer, MainDeployerMBean
 {
+   /** The controller */
+   private KernelController controller;
    private org.jboss.deployers.spi.deployment.MainDeployer delegate;
    private Map<URL, String> contextMap = Collections.synchronizedMap(new HashMap<URL, String>());
 
@@ -146,7 +148,17 @@
    {
       this.delegate = delegate;
    }
-   
+
+   public KernelController getController()
+   {
+      return controller;
+   }
+
+   public void setController(KernelController controller)
+   {
+      this.controller = controller;
+   }
+
    /** Get the flag indicating whether directory content will be deployed
     *
     * @return the file copy flag
@@ -793,6 +805,7 @@
             delegate.addDeploymentContext(deployment);
             deploymentName = deployment.getName();
             delegate.process();
+            checkIncomplete();
             contextMap.put(url, deploymentName);
          }
          catch(Exception e)
@@ -1350,56 +1363,6 @@
     */
    public void checkIncompleteDeployments() throws DeploymentException
    {
-      try
-      {
-         Collection waitingForClasses = new HashSet();
-         Collection waitingForDepends = (Collection)server.invoke(serviceController,
-                                                      "listIncompletelyDeployed",
-                                                      new Object[] {},
-                                                      new String[] {});
-         Collection allServices = (Collection) server.invoke(serviceController,
-               "listDeployed",
-               new Object[] {},
-               new String[] {});
-         
-         // Weed services that are waiting for other deployments
-         Collection rootCause = new HashSet(waitingForDepends);
-         Collection missing = new HashSet();
-         for (Iterator i = rootCause.iterator(); i.hasNext();)
-         {
-            ServiceContext ctx = (ServiceContext) i.next();
-            for (Iterator j = ctx.iDependOn.iterator(); j.hasNext(); )
-            {
-               ServiceContext dependee = (ServiceContext) j.next();
-               if (dependee.state != ServiceContext.RUNNING)
-               {
-                  // Add missing mbean
-                  if (allServices.contains(dependee) == false)
-                     missing.add(dependee);
-                  // We are not a root cause
-                  i.remove();
-                  break;
-               }
-            }
-         }
-         // Add missing mbeans to the root cause
-         rootCause.addAll(missing);
-
-         IncompleteDeploymentException ide = new IncompleteDeploymentException(
-            waitingForClasses,
-            waitingForDepends,
-            rootCause,
-            listIncompletelyDeployed(),
-            listWaitingForDeployer());
-         if (!ide.isEmpty())
-         {
-            throw ide;
-         } // end of if ()
-      }
-      catch (JMException jme)
-      {
-         throw new DeploymentException(JMXExceptionDecoder.decode(jme));
-      } // end of try-catch
    }
 
    /**
@@ -1431,4 +1394,10 @@
        return sdi;
    }
 
+   private void checkIncomplete() throws IncompleteDeploymentException
+   {
+      IncompleteDeployments incomplete = IncompleteDeploymentsBuilder.build(delegate, controller);
+      if (incomplete.isIncomplete())
+         throw new IncompleteDeploymentException(incomplete);
+   }
 }

Modified: trunk/system-jmx/src/main/org/jboss/deployment/MainDeployerMBean.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/deployment/MainDeployerMBean.java	2007-04-03 04:52:16 UTC (rev 62015)
+++ trunk/system-jmx/src/main/org/jboss/deployment/MainDeployerMBean.java	2007-04-03 05:56:08 UTC (rev 62016)
@@ -29,6 +29,7 @@
 import javax.management.ObjectName;
 
 import org.jboss.deployers.spi.structure.DeploymentContext;
+import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.mx.util.ObjectNameFactory;
 import org.jboss.system.ServiceMBean;
 
@@ -48,6 +49,9 @@
    /** set the kernel MainDeployer which will handle deployments */
    public void setKernelMainDeployer(org.jboss.deployers.spi.deployment.MainDeployer delegate);
 
+   public KernelController getController();
+   public void setController(KernelController controller);
+
    /** Flag indicating whether directory content will be deployed.
     * The default value is taken from the jboss.deploy.localcopy system property. */
    boolean getCopyFiles();




More information about the jboss-cvs-commits mailing list