[jboss-svn-commits] JBL Code SVN: r19049 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 17 23:00:46 EDT 2008


Author: mingjin
Date: 2008-03-17 23:00:46 -0400 (Mon, 17 Mar 2008)
New Revision: 19049

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/DialectDatas.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
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
Log:
JBRULES-1095 Cleaned up classloader handling in serialization
- CompositePackageClassLoader.java, removed externalizable and the corresponding implementations.
- DialectDatas.java: getting parentClassLoader from DroolsObjectInputStream, and setting up classloader before loading datas.
- JavaDialectData.java: using datas from DroolsObjectInputStream.
- MapBackedClassLoader.java: removed externalizable and the corresponding implementations.
- Package.java: minor cleanup.

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-03-18 01:30:13 UTC (rev 19048)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/CompositePackageClassLoader.java	2008-03-18 03:00:46 UTC (rev 19049)
@@ -9,13 +9,10 @@
 import java.util.Iterator;
 import java.util.List;
 
-public class CompositePackageClassLoader extends ClassLoader implements DroolsClassLoader, Externalizable  {
+public class CompositePackageClassLoader extends ClassLoader implements DroolsClassLoader  {
 
     private List classLoaders  = new ArrayList();
 
-    public CompositePackageClassLoader() {
-    }
-
     public CompositePackageClassLoader(final ClassLoader parentClassLoader) {
         super( parentClassLoader );
     }
@@ -32,14 +29,6 @@
         }
     }
 
-    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        classLoaders    = (List)in.readObject();
-    }
-
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(classLoaders);
-    }
-
     public void removeClassLoader(final ClassLoader classLoader) {
         for ( final Iterator it = this.classLoaders.iterator(); it.hasNext(); ) {
             if ( it.next() == classLoader ) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectDatas.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectDatas.java	2008-03-18 01:30:13 UTC (rev 19048)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/DialectDatas.java	2008-03-18 03:00:46 UTC (rev 19049)
@@ -40,7 +40,6 @@
      */
     public void writeExternal(final ObjectOutput stream) throws IOException {
         stream.writeObject(this.dialects);
-        stream.writeObject(this.classLoader);
         stream.writeObject( this.lineMappings );
     }
 
@@ -52,15 +51,14 @@
      */
     public void readExternal(final ObjectInput stream) throws IOException,
                                                               ClassNotFoundException {
-        this.dialects       = (Map<String, DialectData>)stream.readObject();
-        this.classLoader    = (CompositePackageClassLoader)stream.readObject();
-        setParentClassLoader(this.classLoader.getParent());
-        if (stream instanceof DroolsObjectInput) {
-            DroolsObjectInput   droolsStream    = (DroolsObjectInput)stream;
-            addClassLoader(droolsStream.getClassLoader());
-            droolsStream.setClassLoader(this.classLoader);
-            droolsStream.setDialectDatas(this);
-        }
+        DroolsObjectInput   droolsStream    = (DroolsObjectInput)stream;
+
+        setParentClassLoader(droolsStream.getClassLoader());
+        this.classLoader = new CompositePackageClassLoader( this.parentClassLoader );
+        droolsStream.setDialectDatas(this);
+        droolsStream.setClassLoader(this.classLoader);
+
+        this.dialects       = (Map<String, DialectData>)droolsStream.readObject();
         this.lineMappings   = (Map) stream.readObject();
     }
 

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-03-18 01:30:13 UTC (rev 19048)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectData.java	2008-03-18 03:00:46 UTC (rev 19049)
@@ -20,6 +20,7 @@
 import org.drools.base.accumulators.JavaAccumulatorFunctionExecutor;
 import org.drools.common.DroolsObjectInputStream;
 import org.drools.common.DroolsObjectOutputStream;
+import org.drools.common.DroolsObjectInput;
 import org.drools.spi.Accumulator;
 import org.drools.spi.Consequence;
 import org.drools.spi.EvalExpression;
@@ -104,11 +105,6 @@
      *
      */
     public void writeExternal(ObjectOutput stream) throws IOException {
-        if (!(stream instanceof DroolsObjectOutputStream)) {
-            stream  = new DroolsObjectOutputStream(stream);
-        }
-        stream.writeObject( this.datas );
-        stream.writeObject( classLoader );
         stream.writeObject( this.store );
         stream.writeObject( this.AST );
         stream.writeObject( this.invokerLookups );
@@ -123,15 +119,12 @@
      */
     public void readExternal(ObjectInput stream) throws IOException,
                                                       ClassNotFoundException {
-        DroolsObjectInputStream droolsStream = stream instanceof DroolsObjectInputStream
-                          ? (DroolsObjectInputStream)stream
-                          : new DroolsObjectInputStream(stream);
-        this.datas = (DialectDatas)droolsStream.readObject();
-        this.classLoader = (PackageClassLoader)droolsStream.readObject();
+        DroolsObjectInput droolsStream = (DroolsObjectInput)stream;
+
+        this.datas          = droolsStream.getDialectDatas();
+        this.classLoader    = new PackageClassLoader( this.datas.getParentClassLoader(), this );
         this.datas.addClassLoader( this.classLoader );
-        this.datas.addClassLoader(droolsStream.getClassLoader());
-        droolsStream.setClassLoader(this.datas.getClassLoader());
-        droolsStream.setDialectDatas(this.datas);
+
         this.store = (Map) stream.readObject();
         this.AST = stream.readObject();
         this.invokerLookups = (Map) droolsStream.readObject();
@@ -362,7 +355,7 @@
      */
     public static class PackageClassLoader extends ClassLoader
         implements
-        DroolsClassLoader, Externalizable {
+        DroolsClassLoader {
         private JavaDialectData parent;
 
         public PackageClassLoader() {
@@ -373,14 +366,6 @@
             this.parent = parent;
         }
 
-        public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-            parent  = (JavaDialectData)in.readObject();
-        }
-
-        public void writeExternal(ObjectOutput out) throws IOException {
-            out.writeObject(parent);
-        }
-
         public Class fastFindClass(final String name) {
             final Class clazz = findLoadedClass( name );
 

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-03-18 01:30:13 UTC (rev 19048)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/MapBackedClassLoader.java	2008-03-18 03:00:46 UTC (rev 19049)
@@ -16,7 +16,7 @@
 
 public class MapBackedClassLoader extends ClassLoader
     implements
-    DroolsClassLoader, Externalizable {
+    DroolsClassLoader {
 
     private static final long             serialVersionUID = 400L;
 
@@ -32,9 +32,6 @@
         } );
     }
 
-    public MapBackedClassLoader() {
-    }
-
     public MapBackedClassLoader(final ClassLoader parentClassLoader) {
         super( parentClassLoader );
         this.store = new HashMap();
@@ -46,14 +43,6 @@
         this.store = store;
     }
 
-    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        store    = (Map)in.readObject();
-    }
-
-    public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeObject(store);
-    }
-
     public void addResource(String className,
                             byte[] bytes) {
         addClass( className,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2008-03-18 01:30:13 UTC (rev 19048)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2008-03-18 03:00:46 UTC (rev 19049)
@@ -194,10 +194,6 @@
                            : new DroolsObjectInputStream(new ByteArrayInputStream((byte[])stream.readObject()));
 
         this.dialectDatas   = (DialectDatas)in.readObject();
-        // Not sure needs to do this, everything is already at this time.
-        if (!isDroolsStream)
-            ((DroolsObjectInput)in).setClassLoader(this.dialectDatas.getClassLoader());
-
         this.typeDeclarations   = (Map)in.readObject();
         this.name = (String) in.readObject();
         this.imports = (Map<String, ImportDeclaration>) in.readObject();




More information about the jboss-svn-commits mailing list