[jboss-cvs] JBossAS SVN: r83721 - branches/Branch_5_x/system-jmx/src/main/org/jboss/system/deployers.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Jan 31 08:35:59 EST 2009


Author: thomas.diesler at jboss.com
Date: 2009-01-31 08:35:59 -0500 (Sat, 31 Jan 2009)
New Revision: 83721

Modified:
   branches/Branch_5_x/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java
Log:
[JBAS-6425] full hirarcy search for RealClassLoader

Modified: branches/Branch_5_x/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java
===================================================================
--- branches/Branch_5_x/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java	2009-01-31 13:34:30 UTC (rev 83720)
+++ branches/Branch_5_x/system-jmx/src/main/org/jboss/system/deployers/ServiceDeployer.java	2009-01-31 13:35:59 UTC (rev 83721)
@@ -84,13 +84,7 @@
       {
          ObjectName loaderName = deployment.getClassLoaderName();
          if (loaderName == null)
-         {
-            ClassLoader cl = unit.getClassLoader();
-            if (cl != null && cl instanceof RealClassLoader)
-               loaderName = ((RealClassLoader) cl).getObjectName();
-            else
-               loaderName = defaultClassLoader;
-         }
+            loaderName = findLoaderName(unit.getClassLoader());
 
          controller.install(deployment, loaderName);
          ServiceContext context = controller.getServiceContext(name);
@@ -124,6 +118,28 @@
       }
    }
 
+   /**
+    * Find first RealClassLoader instance
+    * and return its ObjectName.
+    * If none is found return defaultClassloader.
+    *
+    * @param cl the classloader
+    * @return classloader's ObjectName
+    */
+   protected ObjectName findLoaderName(ClassLoader cl)
+   {
+      if (cl == null)
+         return defaultClassLoader;
+
+      if (cl instanceof RealClassLoader)
+      {
+         RealClassLoader rcl = RealClassLoader.class.cast(cl);
+         return rcl.getObjectName();
+      }
+
+      return findLoaderName(cl.getParent());
+   }
+
    public void undeploy(DeploymentUnit unit, ServiceMetaData deployment)
    {
       ObjectName name = deployment.getObjectName();




More information about the jboss-cvs-commits mailing list