[Jboss-cvs] JBossAS SVN: r56908 - branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Sep 16 06:58:03 EDT 2006


Author: adrian at jboss.org
Date: 2006-09-16 06:58:00 -0400 (Sat, 16 Sep 2006)
New Revision: 56908

Modified:
   branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java
   branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java
Log:
[JBMICROCONT-5] - Update the service deployment to the simplified plumbing.

Modified: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java	2006-09-16 10:43:16 UTC (rev 56907)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java	2006-09-16 10:58:00 UTC (rev 56908)
@@ -21,11 +21,9 @@
 */
 package org.jboss.system.deployers;
 
-import java.util.Set;
-
 import javax.management.ObjectName;
 
-import org.jboss.deployers.plugins.deployers.helpers.AbstractRealDeployer;
+import org.jboss.deployers.plugins.deployers.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.DeploymentUnit;
 import org.jboss.mx.loading.RepositoryClassLoader;
@@ -42,7 +40,7 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
-public class ServiceDeployer extends AbstractRealDeployer<ServiceMetaData>
+public class ServiceDeployer extends AbstractSimpleRealDeployer<ServiceMetaData>
 {
    /** The service controller */
    private final ServiceController controller;
@@ -61,82 +59,68 @@
       this.controller = controller;
    }
 
-   public void deploy(DeploymentUnit unit) throws DeploymentException
+   public void deploy(DeploymentUnit unit, ServiceMetaData deployment) throws DeploymentException
    {
-      Set<ServiceMetaData> services = getAllMetaData(unit);
-      for (ServiceMetaData service : services)
+      ObjectName name = deployment.getObjectName();
+      try
       {
-         ObjectName name = service.getObjectName();
-         try
+         ObjectName loaderName = deployment.getClassLoaderName();
+         if (loaderName == null)
          {
-            ObjectName loaderName = service.getClassLoaderName();
-            if (loaderName == null)
-            {
-               ClassLoader cl = unit.getClassLoader();
-               if (cl != null && cl instanceof RepositoryClassLoader)
-                  loaderName = ((RepositoryClassLoader) cl).getObjectName();
-            }
+            ClassLoader cl = unit.getClassLoader();
+            if (cl != null && cl instanceof RepositoryClassLoader)
+               loaderName = ((RepositoryClassLoader) cl).getObjectName();
+         }
 
-            controller.install(service, loaderName);
+         controller.install(deployment, loaderName);
+         ServiceContext context = controller.getServiceContext(name);
+         if (context == null)
+            throw new IllegalStateException("No context for " + name);
+         try
+         {
+            create(context);
             try
             {
-               ServiceContext context = controller.getServiceContext(name);
-               create(context);
-               try
-               {
-                  start(context);
-               }
-               catch (Throwable t)
-               {
-                  destroy(name);
-                  throw t;
-               }
+               start(context);
             }
             catch (Throwable t)
             {
-               remove(name);
+               destroy(name);
                throw t;
             }
          }
          catch (Throwable t)
          {
-            // TODO better unwind
-            undeploy(unit);
-            throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + name, t);
+            remove(name);
+            throw t;
          }
       }
+      catch (Throwable t)
+      {
+         throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + name, t);
+      }
    }
 
-   public void undeploy(DeploymentUnit unit)
+   public void undeploy(DeploymentUnit unit, ServiceMetaData deployment)
    {
-      Set<ServiceMetaData> services = getAllMetaData(unit);
-      for (ServiceMetaData service : services)
+      ObjectName name = deployment.getObjectName();
+      ServiceContext context = controller.getServiceContext(name);
+      if (context != null)
       {
-         ObjectName name = service.getObjectName();
-         ServiceContext context = controller.getServiceContext(name);
-         if (context != null)
-         {
-            stop(name);
-            destroy(name);
-            remove(name);
-         }
+         stop(name);
+         destroy(name);
+         remove(name);
       }
    }
    
    protected void create(ServiceContext context) throws Throwable
    {
       controller.create(context.objectName);
-      Throwable problem = context.problem;
-      if (problem != null)
-         throw problem;
    }
    
    protected void start(ServiceContext context) throws Throwable
    {
       controller.start(context.objectName);
-      Throwable problem = context.problem;
-      if (problem != null)
-         throw problem;
    }
    
    protected void stop(ObjectName name)

Modified: branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java
===================================================================
--- branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java	2006-09-16 10:43:16 UTC (rev 56907)
+++ branches/MC_VDF_WORK/system-jmx/src/main/org/jboss/system/deployers/ServiceDeploymentDeployer.java	2006-09-16 10:58:00 UTC (rev 56908)
@@ -22,11 +22,11 @@
 package org.jboss.system.deployers;
 
 import java.util.List;
-import java.util.Set;
 
 import javax.management.ObjectName;
 
-import org.jboss.deployers.plugins.deployers.helpers.AbstractRealDeployer;
+import org.jboss.deployers.plugins.deployers.helpers.AbstractComponentDeployer;
+import org.jboss.deployers.plugins.deployers.helpers.SimpleDeploymentVisitor;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.DeploymentUnit;
 import org.jboss.system.metadata.ServiceMetaData;
@@ -42,26 +42,44 @@
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
-public class ServiceDeploymentDeployer extends AbstractRealDeployer<ServiceDeployment>
+public class ServiceDeploymentDeployer extends AbstractComponentDeployer<ServiceDeployment, ServiceMetaData>
 {
-   public int getRelativeOrder()
-   {
-      return COMPONENT_DEPLOYER;
-   }
-
    /**
-    * Create a new ServiceDeployer.
+    * Create a new ServiceDeploymentDeployer.
     */
    public ServiceDeploymentDeployer()
    {
-      super(ServiceDeployment.class);
+      setDeploymentVisitor(new ServiceDeploymentVisitor());
+      setComponentVisitor(new ServiceMetaDataVisitor());
    }
 
-   public void deploy(DeploymentUnit unit) throws DeploymentException
+   protected static void addServiceComponent(DeploymentUnit unit, ServiceMetaData service)
    {
-      Set<ServiceDeployment> deployments = getAllMetaData(unit);
-      for (ServiceDeployment deployment : deployments)
+      ObjectName objectName = service.getObjectName();
+      String name = objectName.getCanonicalName();
+      DeploymentUnit component = unit.addComponent(name);
+      component.addAttachment(ServiceMetaData.class.getName(), service);
+   }
+
+   protected static void removeServiceComponent(DeploymentUnit unit, ServiceMetaData service)
+   {
+      ObjectName objectName = service.getObjectName();
+      String name = objectName.getCanonicalName();
+      unit.removeComponent(name);
+   }
+   
+   /**
+    * ServiceDeploymentVisitor.
+    */
+   public class ServiceDeploymentVisitor implements SimpleDeploymentVisitor<ServiceDeployment>
+   {
+      public Class<ServiceDeployment> getVisitorType()
       {
+         return ServiceDeployment.class;
+      }
+
+      public void deploy(DeploymentUnit unit, ServiceDeployment deployment) throws DeploymentException
+      {
          try
          {
             List<ServiceMetaData> services = deployment.getServices();
@@ -71,7 +89,7 @@
                if (config == null)
                {
                   log.debug("Service deployment has no services: " + deployment.getName());
-                  continue;
+                  return;
                }
                
                ServiceMetaDataParser parser = new ServiceMetaDataParser(config);
@@ -83,28 +101,19 @@
                return;
             
             for (ServiceMetaData service : services)
-            {
-               ObjectName objectName = service.getObjectName();
-               String name = objectName.getCanonicalName();
-               DeploymentUnit component = unit.addComponent(name);
-               component.addAttachment(ServiceMetaData.class.getName(), service);
-            }
+               addServiceComponent(unit, service);
          }
          catch (Throwable t)
          {
             throw DeploymentException.rethrowAsDeploymentException("Error deploying: " + deployment.getName(), t);
          }
       }
-   }
 
-   public void undeploy(DeploymentUnit unit)
-   {
-      Set<ServiceDeployment> deployments = getAllMetaData(unit);
-      for (ServiceDeployment deployment : deployments)
+      public void undeploy(DeploymentUnit unit, ServiceDeployment deployment)
       {
          List<ServiceMetaData> services = deployment.getServices();
          if (services == null)
-            continue;
+            return;
          
          for (ServiceMetaData service : services)
          {
@@ -114,4 +123,25 @@
          }
       }
    }
+
+   /**
+    * ServiceMetaDataVisitor.
+    */
+   public static class ServiceMetaDataVisitor implements SimpleDeploymentVisitor<ServiceMetaData>
+   {
+      public Class<ServiceMetaData> getVisitorType()
+      {
+         return ServiceMetaData.class;
+      }
+
+      public void deploy(DeploymentUnit unit, ServiceMetaData deployment) throws DeploymentException
+      {
+         addServiceComponent(unit, deployment);
+      }
+
+      public void undeploy(DeploymentUnit unit, ServiceMetaData deployment)
+      {
+         removeServiceComponent(unit, deployment);
+      }
+   }
 }




More information about the jboss-cvs-commits mailing list