[jboss-svn-commits] JBL Code SVN: r7422 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests drools-compiler/src/test/resources/org/drools/integrationtests drools-core/src/main/java/org/drools/base drools-core/src/main/java/org/drools/common drools-core/src/main/java/org/drools/reteoo drools-core/src/main/java/org/drools/rule drools-core/src/main/java/org/drools/spi drools-core/src/main/java/org/drools/util

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 7 08:43:49 EST 2006


Author: tirelli
Date: 2006-11-07 08:43:31 -0500 (Tue, 07 Nov 2006)
New Revision: 7422

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.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/spi/Activation.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java
Log:
Fixing serialization issues

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -2168,7 +2168,8 @@
         workingMemory.setGlobal( "list",
                                  new ArrayList() );
 
-        workingMemory.assertObject( new  Person( "bob" ) );
+        Person bob = new Person( "bob" );
+        workingMemory.assertObject( bob );
 
         final byte[] wm = serializeOut( workingMemory );
 
@@ -2176,26 +2177,27 @@
 
         assertEquals( 1,
                       workingMemory.getObjects().size() );
-        assertEquals( new Integer( 5 ),
+        assertEquals( bob,
                       workingMemory.getObjects().get( 0 ) );
 
-        assertEquals( 1,
+        assertEquals( 2,
                       workingMemory.getAgenda().agendaSize() );
 
         workingMemory.fireAllRules();
 
         List list = (List) workingMemory.getGlobal( "list" );
 
-        assertEquals( 1,
+        assertEquals( 3,
                       list.size() );
-        assertEquals( new Integer( 4 ),
+        // because of agenda-groups
+        assertEquals( new Integer(4), 
                       list.get( 0 ) );
 
         assertEquals( 2,
                       workingMemory.getObjects().size() );
-        assertEquals( new Integer( 5 ),
+        assertEquals( bob,
                       workingMemory.getObjects().get( 0 ) );
-        assertEquals( "help",
+        assertEquals( new Person("help"),
                       workingMemory.getObjects().get( 1 ) );
     }
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_Serializable.drl	2006-11-07 13:43:31 UTC (rev 7422)
@@ -18,10 +18,10 @@
 rule "match Person 2"
 	agenda-group "xxx"	
     when
-        $person : Person(name=="mark", $age1 : age )
-            Cheesery( cheeses contains $person )                
-        Person( age < ( $age1 ) )
-        Person( $age2 : age -> ( $age1 == $age2 ) )      
+       $person : Person(name=="mark", $age1 : age )
+       Cheesery( cheeses contains $person )                
+       Person( age < ( $age1 ) )
+       Person( $age2 : age -> ( $age1 == $age2 ) )      
         eval( $age1 == $age2 )
     then
 		list.add( $person );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/DefaultKnowledgeHelper.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -33,6 +33,9 @@
 public class DefaultKnowledgeHelper
     implements
     KnowledgeHelper {
+
+    private static final long serialVersionUID = 3692991484157215686L;
+
     private Rule                               rule;
     private Activation                         activation;
     private Tuple                              tuple;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/ObjectInputStreamWithLoader.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -7,9 +7,24 @@
 import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectStreamClass;
+import java.util.HashMap;
 
 public class ObjectInputStreamWithLoader extends ObjectInputStream {
     private final ClassLoader classLoader;
+    
+    /** table mapping primitive type names to corresponding class objects */
+    private static final HashMap primClasses = new HashMap(8, 1.0F);
+    static {
+    primClasses.put("boolean", boolean.class);
+    primClasses.put("byte", byte.class);
+    primClasses.put("char", char.class);
+    primClasses.put("short", short.class);
+    primClasses.put("int", int.class);
+    primClasses.put("long", long.class);
+    primClasses.put("float", float.class);
+    primClasses.put("double", double.class);
+    primClasses.put("void", void.class);
+    }
 
     public ObjectInputStreamWithLoader(final InputStream in,
                                        final ClassLoader classLoader) throws IOException {
@@ -24,7 +39,11 @@
             return super.resolveClass( desc );
         } else {
             final String name = desc.getName();
-            return this.classLoader.loadClass( name );
+            Class clazz = (Class) primClasses.get( name );
+            if( clazz == null ) {
+                clazz = this.classLoader.loadClass( name );
+            }
+            return clazz;
         }
     }
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaMemory.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -1,9 +1,13 @@
 package org.drools.reteoo;
 
+import java.io.Serializable;
+
 import org.drools.util.ObjectHashMap;
-import org.drools.util.TupleHashTable;
 
-public class BetaMemory {
+public class BetaMemory implements Serializable {
+
+    private static final long serialVersionUID = -4648029105678562600L;
+
     private TupleMemory  tupleMemory;
     private FactHandleMemory factHandleMemory;
     private ObjectHashMap   createdHandles;

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	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -48,9 +48,9 @@
 public class ReteooRuleBase extends AbstractRuleBase {
     /**
      * DO NOT CHANGE BELLOW SERIAL_VERSION_ID UNLESS YOU ARE CHANGING DROOLS VERSION
-     * SERIAL_VERSION_ID=300 stands for version 3.0.0 
+     * SERIAL_VERSION_ID=320 stands for version 3.2.0 
      */
-    private static final long serialVersionUID = 300;
+    private static final long serialVersionUID = 320;
 
     /** The root Rete-OO for this <code>RuleBase</code>. */
     private Rete              rete;
@@ -220,8 +220,7 @@
         super.addWorkingMemory( workingMemory,
                                 keepReference );
 
-        final InitialFactHandle handle = new InitialFactHandle( workingMemory.getFactHandleFactory().newFactHandle( new Serializable() {
-        } ) );
+        final InitialFactHandle handle = new InitialFactHandle( workingMemory.getFactHandleFactory().newFactHandle( new InitialFactHandleDummyObject() ) );
 
         workingMemory.queueWorkingMemoryAction( workingMemory.new WorkingMemoryReteAssertAction( handle,
                                                                                                  false,
@@ -242,5 +241,9 @@
     protected void removeRule(final Rule rule) {
         this.reteooBuilder.removeRule( rule );
     }
+    
+    private static class InitialFactHandleDummyObject implements Serializable {
+        private static final long serialVersionUID = 1L;
+    }
 
 }

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	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -20,12 +20,9 @@
 import java.io.ByteArrayOutputStream;
 import java.io.Externalizable;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.ObjectInput;
-import java.io.ObjectInputStream;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
-import java.io.ObjectStreamClass;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -34,6 +31,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.drools.common.ObjectInputStreamWithLoader;
 import org.drools.facttemplates.FactTemplate;
 
 /**
@@ -174,27 +172,6 @@
         this.rules = (Map) streamWithLoader.readObject();
     }
 
-    private static class ObjectInputStreamWithLoader extends ObjectInputStream {
-        private final ClassLoader classLoader;
-
-        public ObjectInputStreamWithLoader(final InputStream in,
-                                           final ClassLoader classLoader) throws IOException {
-            super( in );
-            this.classLoader = classLoader;
-            enableResolveObject( true );
-        }
-
-        protected Class resolveClass(final ObjectStreamClass desc) throws IOException,
-                                                                  ClassNotFoundException {
-            if ( this.classLoader == null ) {
-                return super.resolveClass( desc );
-            } else {
-                final String name = desc.getName();
-                return this.classLoader.loadClass( name );
-            }
-        }
-    }
-
     // ------------------------------------------------------------
     // Instance methods
     // ------------------------------------------------------------

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Activation.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+import java.io.Serializable;
+
 import org.drools.common.ActivationGroupNode;
 import org.drools.common.LogicalDependency;
 import org.drools.rule.Rule;
@@ -30,7 +32,7 @@
  * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
  * @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
  */
-public interface Activation {
+public interface Activation extends Serializable {
     /**
      * Retrieve the <code>Rule</code> that was activated.
      * 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/KnowledgeHelper.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 
+import java.io.Serializable;
 import java.util.List;
 
 import org.drools.FactException;
@@ -38,7 +39,7 @@
  * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
  * @author <a href="mailto:mproctor at codehaus.org">mark proctor</a>
  */
-public interface KnowledgeHelper {
+public interface KnowledgeHelper extends Serializable {
     /**
      * Asserts an object, notice that it does not return the FactHandle
      * 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Tuple.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+import java.io.Serializable;
+
 import org.drools.common.InternalFactHandle;
 import org.drools.rule.Declaration;
 
@@ -30,7 +32,7 @@
  * @author <a href="mailto:bob at werken.com">Bob McWhirter</a>
  *
  */
-public interface Tuple {
+public interface Tuple extends Serializable {
     /**
      * Returns the <code>FactHandle</code> for the given column index. If the column is empty
      * It returns null.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/AbstractHashTable.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -198,6 +198,9 @@
     public static class HashTableIterator
         implements
         Iterator {
+
+        private static final long serialVersionUID = -3058359667332106450L;
+
         private AbstractHashTable hashTable;
         private Entry[]           table;
         private int               row;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java	2006-11-07 12:10:44 UTC (rev 7421)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/util/Iterator.java	2006-11-07 13:43:31 UTC (rev 7422)
@@ -1,5 +1,7 @@
 package org.drools.util;
 
-public interface Iterator {
+import java.io.Serializable;
+
+public interface Iterator extends Serializable {
     public Entry next();
 }
\ No newline at end of file




More information about the jboss-svn-commits mailing list