[jboss-svn-commits] JBL Code SVN: r11129 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Apr 19 13:41:24 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-04-19 13:41:24 -0400 (Thu, 19 Apr 2007)
New Revision: 11129
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
Log:
JBRULES-809
-ClassFieldExtractorFactory uses the Thread.currentThread().getContextClassLoader() instead of the classloader in PackageCompilationData
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2007-04-19 17:19:18 UTC (rev 11128)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2007-04-19 17:41:24 UTC (rev 11129)
@@ -42,12 +42,18 @@
private String fieldName;
private Class clazz;
private transient FieldExtractor extractor;
+
+ public ClassFieldExtractor(final Class clazz,
+ final String fieldName) {
+ this( clazz, fieldName, null );
+ }
public ClassFieldExtractor(final Class clazz,
- final String fieldName) {
+ final String fieldName,
+ final ClassLoader classLoader) {
this.clazz = clazz;
this.fieldName = fieldName;
- init();
+ init(classLoader);
}
private void readObject(final ObjectInputStream is) throws ClassNotFoundException,
@@ -55,13 +61,14 @@
Exception {
//always perform the default de-serialization first
is.defaultReadObject();
- init();
+ init(null);
}
- public void init() {
+ public void init(final ClassLoader classLoader) {
try {
this.extractor = ClassFieldExtractorFactory.getClassFieldExtractor( this.clazz,
- this.fieldName );
+ this.fieldName,
+ classLoader );
} catch ( final Exception e ) {
throw new RuntimeDroolsException( e );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java 2007-04-19 17:19:18 UTC (rev 11128)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorCache.java 2007-04-19 17:41:24 UTC (rev 11129)
@@ -20,13 +20,15 @@
}
public ClassFieldExtractor getExtractor(final Class clazz,
- final String fieldName) {
+ final String fieldName,
+ ClassLoader classLoader) {
final String key = clazz.getName() + "|" + fieldName;
if ( this.cache.containsKey( key ) ) {
return (ClassFieldExtractor) this.cache.get( key );
} else {
final ClassFieldExtractor ex = new ClassFieldExtractor( clazz,
- fieldName );
+ fieldName,
+ classLoader );
this.cache.put( key,
ex );
return ex;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2007-04-19 17:19:18 UTC (rev 11128)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractorFactory.java 2007-04-19 17:41:24 UTC (rev 11129)
@@ -70,6 +70,14 @@
public static BaseClassFieldExtractor getClassFieldExtractor(final Class clazz,
final String fieldName) {
+ return getClassFieldExtractor( clazz,
+ fieldName,
+ null );
+ }
+
+ public static BaseClassFieldExtractor getClassFieldExtractor(final Class clazz,
+ final String fieldName,
+ final ClassLoader classLoader) {
try {
// if it is a self reference
if ( SELF_REFERENCE_FIELD.equals( fieldName ) ) {
@@ -95,11 +103,11 @@
fieldType,
clazz.isInterface() );
// use bytes to get a class
- final ByteArrayClassLoader classLoader = new ByteArrayClassLoader( Thread.currentThread().getContextClassLoader() );
- final Class newClass = classLoader.defineClass( className.replace( '/',
- '.' ),
- bytes,
- PROTECTION_DOMAIN );
+ final ByteArrayClassLoader byteArrayClassLoader = new ByteArrayClassLoader( (classLoader != null) ? classLoader : Thread.currentThread().getContextClassLoader() );
+ final Class newClass = byteArrayClassLoader.defineClass( className.replace( '/',
+ '.' ),
+ bytes,
+ PROTECTION_DOMAIN );
// instantiating target class
final Integer index = (Integer) inspector.getFieldNames().get( fieldName );
final ValueType valueType = ValueType.determineValueType( fieldType );
More information about the jboss-svn-commits
mailing list