[jboss-svn-commits] JBL Code SVN: r13207 - in labs/jbossrules/trunk/drools-core: src/main/java/org/drools/common and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jul 7 08:15:50 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-07-07 08:15:50 -0400 (Sat, 07 Jul 2007)
New Revision: 13207

Modified:
   labs/jbossrules/trunk/drools-core/
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
Log:
-now works with non DroolsObjectInputStream serialization.


Property changes on: labs/jbossrules/trunk/drools-core
___________________________________________________________________
Name: svn:ignore
   - 
target
.classpath
.project
.wtpmodules

   + target
.metadata
.settings
.wtpmodules
*.log
*.log.* 
*.ipr
*.iws
*.iml
nbproject
local


Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java	2007-07-07 12:15:50 UTC (rev 13207)
@@ -173,21 +173,27 @@
     public void doReadExternal(final ObjectInput stream,
                                final Object[] objects) throws IOException,
                                                       ClassNotFoundException {
-        // PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules
-        DroolsObjectInputStream parentStream = (DroolsObjectInputStream) stream;
-        parentStream.setRuleBase( this );
-        this.pkgs = (Map) parentStream.readObject();
+        // PackageCompilationData must be restored before Rules as it has the ClassLoader needed to resolve the generated code references in Rules        
+        this.pkgs = (Map) stream.readObject();
 
-        this.packageClassLoader = new CompositePackageClassLoader( parentStream.getClassLoader() );
+        if ( stream instanceof DroolsObjectInputStream ) {
+            DroolsObjectInputStream parentStream = (DroolsObjectInputStream) stream;
+            parentStream.setRuleBase( this );
+            this.packageClassLoader = new CompositePackageClassLoader( parentStream.getClassLoader() );
+            this.classLoader = new MapBackedClassLoader( parentStream.getClassLoader() );
+        } else {
+            this.packageClassLoader = new CompositePackageClassLoader( Thread.currentThread().getContextClassLoader() );
+            this.classLoader = new MapBackedClassLoader( Thread.currentThread().getContextClassLoader() );
+        }
+            
+        this.packageClassLoader.addClassLoader( this.classLoader );
+        
         for ( final Iterator it = this.pkgs.values().iterator(); it.hasNext(); ) {
             this.packageClassLoader.addClassLoader( ((Package) it.next()).getPackageCompilationData().getClassLoader() );
-        }
+        }       
 
-        this.classLoader = new MapBackedClassLoader( parentStream.getClassLoader() );
-        this.packageClassLoader.addClassLoader( this.classLoader );
-
         // Return the rules stored as a byte[]
-        final byte[] bytes = (byte[]) parentStream.readObject();
+        final byte[] bytes = (byte[]) stream.readObject();
 
         //  Use a custom ObjectInputStream that can resolve against a given classLoader
         final DroolsObjectInputStream childStream = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java	2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java	2007-07-07 12:15:50 UTC (rev 13207)
@@ -92,10 +92,6 @@
         this.ruleBase = ruleBase;
     }
 
-    public void setRuleBase(InternalRuleBase ruleBase) {
-        this.ruleBase = ruleBase;
-    }
-
     private void readObject(ObjectInputStream stream) throws IOException,
                                                      ClassNotFoundException {
         stream.defaultReadObject();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java	2007-07-07 12:15:50 UTC (rev 13207)
@@ -97,14 +97,6 @@
         this.ruleBase = ((DroolsObjectInputStream) stream).getRuleBase();
     }
 
-    /**
-     * Allow this to be settable, otherwise we get infinite recursion on serialisation
-     * @param ruleBase
-     */
-    void setRete(final Rete rete) {
-
-    }
-
     // ------------------------------------------------------------
     // Instance methods
     // ------------------------------------------------------------

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2007-07-07 12:15:50 UTC (rev 13207)
@@ -155,8 +155,6 @@
 
         this.rete = (Rete) objects[0];
         this.reteooBuilder = (ReteooBuilder) objects[1];
-
-        this.reteooBuilder.setRete( this.rete );
     }
 
     // ------------------------------------------------------------

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	2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2007-07-07 12:15:50 UTC (rev 13207)
@@ -126,7 +126,7 @@
         this.globals = Collections.EMPTY_MAP;
         this.factTemplates = Collections.EMPTY_MAP;
         this.functions = Collections.EMPTY_LIST;
-        
+
         // This classloader test should only be here for unit testing, too much legacy api to want to change by hand at the moment
         if ( parentClassLoader == null ) {
             parentClassLoader = Thread.currentThread().getContextClassLoader();
@@ -149,7 +149,7 @@
         stream.writeObject( this.staticImports );
         stream.writeObject( this.globals );
         stream.writeObject( this.ruleFlows );
-        
+
         // Rules must be restored by an ObjectInputStream that can resolve using a given ClassLoader to handle seaprately by storing as
         // a byte[]
         final ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -173,13 +173,13 @@
         this.staticImports = (List) stream.readObject();
         this.globals = (Map) stream.readObject();
         this.ruleFlows = (Map) stream.readObject();
-        
+
         // Return the rules stored as a byte[]
         final byte[] bytes = (byte[]) stream.readObject();
 
         //  Use a custom ObjectInputStream that can resolve against a given classLoader
         final DroolsObjectInputStream streamWithLoader = new DroolsObjectInputStream( new ByteArrayInputStream( bytes ),
-                                                                                              this.packageCompilationData.getClassLoader() );
+                                                                                      this.packageCompilationData.getClassLoader() );
 
         this.rules = (Map) streamWithLoader.readObject();
     }
@@ -289,17 +289,18 @@
                         rule );
         rule.setLoadOrder( this.rules.size() );
     }
-    
+
     /**
      * Add a rule flow to this package.
      */
     public void addRuleFlow(Process process) {
-        if (this.ruleFlows == Collections.EMPTY_MAP) {
+        if ( this.ruleFlows == Collections.EMPTY_MAP ) {
             this.ruleFlows = new HashMap();
         }
-        this.ruleFlows.put(process.getId(), process );
+        this.ruleFlows.put( process.getId(),
+                            process );
     }
-    
+
     /**
      * Get the rule flows for this package. The key is the ruleflow id.
      * It will be Collections.EMPTY_MAP if none have been added.
@@ -307,18 +308,16 @@
     public Map getRuleFlows() {
         return this.ruleFlows;
     }
-    
-    
+
     /**
      * Rule flows can be removed by ID. 
      */
     public void removeRuleFlow(String id) {
-        if (!this.ruleFlows.containsKey( id )) {
-            throw new IllegalArgumentException("The rule flow with id [" + id + "] is not part of this package.");
+        if ( !this.ruleFlows.containsKey( id ) ) {
+            throw new IllegalArgumentException( "The rule flow with id [" + id + "] is not part of this package." );
         }
         this.ruleFlows.remove( id );
     }
-    
 
     public void removeRule(final Rule rule) {
         this.rules.remove( rule.getName() );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java	2007-07-07 07:45:22 UTC (rev 13206)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java	2007-07-07 12:15:50 UTC (rev 13207)
@@ -125,8 +125,12 @@
      */
     public void readExternal(final ObjectInput stream) throws IOException,
                                                       ClassNotFoundException {
-        DroolsObjectInputStream droolsStream = ( DroolsObjectInputStream ) stream;
-        initClassLoader( droolsStream.getClassLoader() );
+        if ( stream instanceof DroolsObjectInputStream ) {
+            DroolsObjectInputStream droolsStream = ( DroolsObjectInputStream ) stream;
+            initClassLoader( droolsStream.getClassLoader() );
+        } else {
+            initClassLoader( Thread.currentThread().getContextClassLoader() );            
+        }
 
         this.store = (Map) stream.readObject();
         this.AST = stream.readObject();




More information about the jboss-svn-commits mailing list