[jboss-svn-commits] JBL Code SVN: r19477 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: rule and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 8 12:42:04 EDT 2008


Author: mingjin
Date: 2008-04-08 12:42:04 -0400 (Tue, 08 Apr 2008)
New Revision: 19477

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java
Log:
JBRULES-1553 ClassNotFouncException for Array Types when Running under JDK 1.6
- DroolsObjectInputStream: replaced classLoader.loadClass with Class.forName.
- CompositePackageClassLoader: replaced classLoader.loadClass with Class.forName.
- JavaDialectData: replaced classLoader.loadClass with Class.forName.
- MapBackedClassLoader: replaced classLoader.loadClass with Class.forName.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java	2008-04-08 14:59:58 UTC (rev 19476)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DroolsObjectInputStream.java	2008-04-08 16:42:04 UTC (rev 19477)
@@ -444,15 +444,15 @@
         try {
             Class clazz = primClasses.get( className );
             if ( clazz == null ) {
-                clazz = getClassLoader().loadClass( className );
+                clazz = Class.forName(className, true, getClassLoader());
                 if (clazz == null) {
-                  clazz = getClass().getClassLoader().loadClass(className);
+                  clazz = Class.forName(className, true, getClass().getClassLoader());
                 }
             }
             return clazz;
         }
         catch (ClassNotFoundException e) {
-            return getClass().getClassLoader().loadClass(className);
+            return Class.forName(className, true, getClass().getClassLoader());
         }
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java	2008-04-08 14:59:58 UTC (rev 19476)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java	2008-04-08 16:42:04 UTC (rev 19477)
@@ -2,12 +2,11 @@
 
 import java.io.InputStream;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 
 public class CompositePackageClassLoader extends ClassLoader implements DroolsClassLoader  {
 
-    private final List classLoaders = new ArrayList();
+    private final List<ClassLoader> classLoaders = new ArrayList<ClassLoader>();
 
     public CompositePackageClassLoader(final ClassLoader parentClassLoader) {
         super( parentClassLoader );
@@ -18,18 +17,12 @@
     }
 
     public void removeClassLoader(final ClassLoader classLoader) {
-        for ( final Iterator it = this.classLoaders.iterator(); it.hasNext(); ) {
-            if ( it.next() == classLoader ) {
-                it.remove();
-                break;
-            }
-        }
+        classLoaders.remove(classLoader);
     }
 
     public Class fastFindClass(final String name) {
-        for ( final Iterator it = this.classLoaders.iterator(); it.hasNext(); ) {
-            final DroolsClassLoader classLoader = (DroolsClassLoader) it.next();
-            final Class clazz = classLoader.fastFindClass( name );
+        for ( final ClassLoader classLoader : this.classLoaders ) {
+            final Class clazz = ((DroolsClassLoader)classLoader).fastFindClass( name );
             if ( clazz != null ) {
                 return clazz;
             }
@@ -38,11 +31,11 @@
     }
 
     /**
-     * Javadocs recommend that this method not be overloaded. We overload this so that we can prioritise the fastFindClass 
+     * Javadocs recommend that this method not be overloaded. We overload this so that we can prioritise the fastFindClass
      * over method calls to parent.loadClass(name, false); and c = findBootstrapClass0(name); which the default implementation
-     * would first - hence why we call it "fastFindClass" instead of standard findClass, this indicates that we give it a 
+     * would first - hence why we call it "fastFindClass" instead of standard findClass, this indicates that we give it a
      * higher priority than normal.
-     * 
+     *
      */
     protected synchronized Class loadClass(final String name,
                                            final boolean resolve) throws ClassNotFoundException {
@@ -55,7 +48,9 @@
 
                 final ClassLoader parent = getParent();
                 if ( parent != null ) {
-                    clazz = parent.loadClass( name );
+                    clazz = Class.forName( name,
+                                           true,
+                                           parent );
                 } else {
                     return null;
                 }
@@ -68,12 +63,11 @@
 
         return clazz;
     }
-    
+
     public InputStream getResourceAsStream(final String name) {
         InputStream stream =  super.getResourceAsStream( name );
-        
-        for ( final Iterator it = this.classLoaders.iterator(); it.hasNext(); ) {
-            final DroolsClassLoader classLoader = (DroolsClassLoader) it.next();
+
+        for ( final ClassLoader classLoader : this.classLoaders ) {
             stream = classLoader.getResourceAsStream( name );
             if ( stream != null ) {
                 return stream;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java	2008-04-08 14:59:58 UTC (rev 19476)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java	2008-04-08 16:42:04 UTC (rev 19477)
@@ -426,7 +426,9 @@
             if ( clazz == null ) {
                 final ClassLoader parent = getParent();
                 if ( parent != null ) {
-                    clazz = parent.loadClass( name );
+                    clazz = Class.forName( name,
+                                           true,
+                                           parent );
                 }
             }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java	2008-04-08 14:59:58 UTC (rev 19476)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java	2008-04-08 16:42:04 UTC (rev 19477)
@@ -2,17 +2,11 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
-import java.io.Serializable;
-import java.io.ObjectInput;
-import java.io.IOException;
-import java.io.ObjectOutput;
-import java.io.Externalizable;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.security.ProtectionDomain;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.List;
 
 public class MapBackedClassLoader extends ClassLoader
     implements
@@ -22,7 +16,7 @@
 
     private static final ProtectionDomain PROTECTION_DOMAIN;
 
-    private Map                           store;
+    private Map<String, byte[]>           store;
 
     static {
         PROTECTION_DOMAIN = (ProtectionDomain) AccessController.doPrivileged( new PrivilegedAction() {
@@ -34,7 +28,7 @@
 
     public MapBackedClassLoader(final ClassLoader parentClassLoader) {
         super( parentClassLoader );
-        this.store = new HashMap();
+        this.store = new HashMap<String, byte[]>();
     }
 
     public MapBackedClassLoader(final ClassLoader parentClassLoader,
@@ -57,7 +51,7 @@
 
     public void addClass(final String className,
                          byte[] bytes) {
-        synchronized ( this.store ) {     
+        synchronized ( this.store ) {
             this.store.put( convertResourcePathToClassName( className ),
                             bytes );
         }
@@ -67,11 +61,11 @@
         final Class clazz = findLoadedClass( name );
 
         if ( clazz == null ) {
-            byte[] clazzBytes = null;
-            synchronized ( this.store ) {            
-                clazzBytes = (byte[]) this.store.get( name );
+            byte[] clazzBytes;
+            synchronized ( this.store ) {
+                clazzBytes = this.store.get( name );
             }
-            
+
             if ( clazzBytes != null ) {
                 return defineClass( name,
                                     clazzBytes,
@@ -84,11 +78,11 @@
     }
 
     /**
-     * Javadocs recommend that this method not be overloaded. We overload this so that we can prioritise the fastFindClass 
+     * Javadocs recommend that this method not be overloaded. We overload this so that we can prioritise the fastFindClass
      * over method calls to parent.loadClass(name, false); and c = findBootstrapClass0(name); which the default implementation
-     * would first - hence why we call it "fastFindClass" instead of standard findClass, this indicates that we give it a 
+     * would first - hence why we call it "fastFindClass" instead of standard findClass, this indicates that we give it a
      * higher priority than normal.
-     * 
+     *
      */
     protected synchronized Class loadClass(final String name,
                                            final boolean resolve) throws ClassNotFoundException {
@@ -97,7 +91,9 @@
         if ( clazz == null ) {
             final ClassLoader parent = getParent();
             if ( parent != null ) {
-                clazz = parent.loadClass( name );
+                clazz = Class.forName( name,
+                                       true,
+                                       parent );
             }
         }
 
@@ -114,10 +110,10 @@
 
     public InputStream getResourceAsStream(final String name) {
         byte[] bytes = null;
-        synchronized ( this.store ) {            
-            bytes = (byte[]) this.store.get( name );
+        synchronized ( this.store ) {
+            bytes = this.store.get( name );
         }
-        
+
         if ( bytes != null ) {
             return new ByteArrayInputStream( bytes );
         } else {




More information about the jboss-svn-commits mailing list