[jboss-cvs] JBossAS SVN: r99444 - in projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx: server and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 15 01:04:56 EST 2010


Author: adrian at jboss.org
Date: 2010-01-15 01:04:56 -0500 (Fri, 15 Jan 2010)
New Revision: 99444

Modified:
   projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/modelmbean/ModelMBeanInvoker.java
   projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/AbstractMBeanInvoker.java
   projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/RawDynamicInvoker.java
Log:
[JBMX-16] - Fix NPEs for XMBean using Sun JDK

Modified: projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/modelmbean/ModelMBeanInvoker.java
===================================================================
--- projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/modelmbean/ModelMBeanInvoker.java	2010-01-15 06:03:01 UTC (rev 99443)
+++ projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/modelmbean/ModelMBeanInvoker.java	2010-01-15 06:04:56 UTC (rev 99444)
@@ -214,7 +214,7 @@
       {
          try
          {
-            this.init(getServer(), resourceEntry.getObjectName());
+            this.init(getServer(), getObjectName());
          }
          catch(Exception e)
          {

Modified: projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/AbstractMBeanInvoker.java
===================================================================
--- projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/AbstractMBeanInvoker.java	2010-01-15 06:03:01 UTC (rev 99443)
+++ projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/AbstractMBeanInvoker.java	2010-01-15 06:04:56 UTC (rev 99444)
@@ -122,10 +122,14 @@
    /**
     * The MBeanServer passed in to preRegister
     */
-
    private MBeanServer server;
 
    /**
+    * Our registered object name
+    */
+   private ObjectName objectName;
+
+   /**
     * Set the MBeanEntry thread local value.
     * @param entry - the entry that will be used on successful registration
     */
@@ -252,7 +256,7 @@
 
       override(invocation);
 
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if (setCl)
@@ -352,7 +356,7 @@
 
       override(invocation);
 
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if (setCl)
@@ -449,7 +453,7 @@
 
       override(invocation);
 
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if (setCl)
@@ -508,6 +512,10 @@
 
    public MBeanInfo getMBeanInfo()
    {
+      // Sun's JDK calls getMBeanInfo before preRegister
+      if (getMBeanInfoCtx == null)
+         return info;
+      
       // create the invocation object
       Invocation invocation = new Invocation(getMBeanInfoCtx);
 
@@ -516,7 +524,7 @@
 
       if (resourceEntry == null)
          resourceEntry = getMBeanEntry();
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if (setCl)
@@ -637,7 +645,7 @@
 
       }
 
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if (setCl)
@@ -674,6 +682,7 @@
             TCLAction.UTIL.setContextClassLoader(ccl);
          }
       }
+      this.objectName = mbeanName;
       return mbeanName;
    }
 
@@ -697,6 +706,7 @@
    {
       invokePostDeregister();
       this.server = null;
+      this.objectName = null;
    }
 
 
@@ -823,7 +833,7 @@
    public ObjectName getObjectName()
    {
       if (resourceEntry == null)
-         return null;
+         return objectName;
       else
          return resourceEntry.getObjectName();
    }

Modified: projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/RawDynamicInvoker.java
===================================================================
--- projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/RawDynamicInvoker.java	2010-01-15 06:03:01 UTC (rev 99443)
+++ projects/jbossmx/trunk/mbeans/src/main/org/jboss/mx/server/RawDynamicInvoker.java	2010-01-15 06:04:56 UTC (rev 99444)
@@ -104,7 +104,7 @@
    public Object getAttribute(String name) throws AttributeNotFoundException,
          MBeanException, ReflectionException
    {
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)
@@ -127,7 +127,7 @@
    
    public AttributeList getAttributes(String[] attributes)
    {
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)
@@ -151,7 +151,7 @@
    public Object invoke(String name, Object[] args, String[] signature) throws
          MBeanException, ReflectionException
    {
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)
@@ -174,7 +174,7 @@
    
    public MBeanInfo getMBeanInfo()
    {
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)
@@ -212,7 +212,7 @@
          throw ncmbe;
       }
 
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)
@@ -238,7 +238,7 @@
    
    public void postRegister(Boolean b)
    {
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)
@@ -259,7 +259,7 @@
    
    public void preDeregister() throws Exception
    {
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)
@@ -283,7 +283,7 @@
    
    public void postDeregister()
    {
-      ClassLoader mbeanTCL = resourceEntry.getClassLoader();
+      ClassLoader mbeanTCL = resourceEntry == null ? null : resourceEntry.getClassLoader();
       final ClassLoader ccl = TCLAction.UTIL.getContextClassLoader();
       boolean setCl = ccl != mbeanTCL && mbeanTCL != null;
       if(setCl)




More information about the jboss-cvs-commits mailing list