[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