mx4j/src/core/mx4j/server MX4JMBeanServer.java,1.27,1.28

Jeremy Boynes <[email protected]> Sun, 13 Feb 2005 19:54:25 +0000
Newsgroups gmane.comp.java.mx4j.cvs
Message-ID <[email protected]>
Update of /cvsroot/mx4j/mx4j/src/core/mx4j/server
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23026/src/core/mx4j/server

Modified Files:
	MX4JMBeanServer.java 
Log Message:
Fix for [ 1121919 ] MBS.isInstanceOf needs to check assignability

Index: MX4JMBeanServer.java
===================================================================
RCS file: /cvsroot/mx4j/mx4j/src/core/mx4j/server/MX4JMBeanServer.java,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** MX4JMBeanServer.java	13 Feb 2005 19:45:58 -0000	1.27
--- MX4JMBeanServer.java	13 Feb 2005 19:54:23 -0000	1.28
***************
*** 54,60 ****
  import javax.management.QueryExp;
  import javax.management.ReflectionException;
- import javax.management.RuntimeErrorException;
  import javax.management.RuntimeOperationsException;
- import javax.management.StandardMBean;
  import javax.management.loading.ClassLoaderRepository;
  import javax.management.loading.PrivateClassLoader;
--- 54,58 ----
***************
*** 1149,1158 ****
  
        MBeanMetaData metadata = findMBeanMetaData(objectName);
  
        SecurityManager sm = System.getSecurityManager();
        if (sm != null)
        {
!          sm.checkPermission(new MBeanPermission(metadata.getMBeanInfo().getClassName(), "-", objectName, "isInstanceOf"));
        }
  
        try
--- 1147,1158 ----
  
        MBeanMetaData metadata = findMBeanMetaData(objectName);
+       String infoClassName = metadata.getMBeanInfo().getClassName();
  
        SecurityManager sm = System.getSecurityManager();
        if (sm != null)
        {
!          sm.checkPermission(new MBeanPermission(infoClassName, "-", objectName, "isInstanceOf"));
        }
+       if (className.equals(infoClassName)) return true;
  
        try
***************
*** 1161,1175 ****
           if (loader == null) loader = Thread.currentThread().getContextClassLoader();
           Class cls = loader.loadClass(className);
! 
!          Object mbean = metadata.getMBean();
!          if (mbean instanceof StandardMBean)
!          {
!             Object impl = ((StandardMBean)mbean).getImplementation();
!             return cls.isInstance(impl);
!          }
!          else
!          {
!             return cls.isInstance(mbean);
!          }
        }
        catch (ClassNotFoundException x)
--- 1161,1166 ----
           if (loader == null) loader = Thread.currentThread().getContextClassLoader();
           Class cls = loader.loadClass(className);
!          Class infoClass = loader.loadClass(infoClassName);
!          return cls.isAssignableFrom(infoClass);
        }
        catch (ClassNotFoundException x)



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click