[jboss-svn-commits] JBL Code SVN: r19099 - in labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools: integrationtests and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Mar 19 01:37:57 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-03-19 01:37:57 -0400 (Wed, 19 Mar 2008)
New Revision: 19099

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
-Add workingmemory serialisation

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java	2008-03-19 04:49:48 UTC (rev 19098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cheesery.java	2008-03-19 05:37:57 UTC (rev 19099)
@@ -20,13 +20,15 @@
 import java.io.ObjectOutput;
 import java.io.IOException;
 import java.io.ObjectInput;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
 public class Cheesery
     implements
-    Externalizable {
+    Serializable {
     /**
      *
      */
@@ -39,6 +41,10 @@
     private int               status;
     private int               totalAmount;
     private Maturity          maturity;
+    
+    public Cheesery() {
+        
+    }
 
     public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
         cheeses = (List)in.readObject();
@@ -53,7 +59,8 @@
         out.writeInt(status);
         out.writeInt(totalAmount);
         out.writeObject(maturity);
-    }
+    }    
+    
     public List getCheeses() {
         return this.cheeses;
     }
@@ -107,6 +114,14 @@
         public Maturity(final String age) {
             this.age = age;
         }
+        
+        private Object readResolve() throws ObjectStreamException {
+            if ( "young".equals( this.age) ) {
+                return Maturity.YOUNG;
+            } else {
+                return Maturity.OLD;
+            }
+        }        
 
         public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
             age = (String)in.readObject();
@@ -120,4 +135,34 @@
             return "[Maturity age='" + this.age + "']";
         }
     }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((cheeses == null) ? 0 : cheeses.hashCode());
+        result = prime * result + ((maturity == null) ? 0 : maturity.hashCode());
+        result = prime * result + status;
+        result = prime * result + totalAmount;
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( obj == null ) return false;
+        if ( getClass() != obj.getClass() ) return false;
+        final Cheesery other = (Cheesery) obj;
+        if ( cheeses == null ) {
+            if ( other.cheeses != null ) return false;
+        } else if ( !cheeses.equals( other.cheeses ) ) return false;
+        if ( maturity == null ) {
+            if ( other.maturity != null ) return false;
+        } else if ( !maturity.equals( other.maturity ) ) return false;
+        if ( status != other.status ) return false;
+        if ( totalAmount != other.totalAmount ) return false;
+        return true;
+    }
+    
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-19 04:49:48 UTC (rev 19098)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-19 05:37:57 UTC (rev 19099)
@@ -101,6 +101,7 @@
 import org.drools.spi.GlobalResolver;
 import org.drools.xml.XmlDumper;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.ObjectInput;
@@ -191,23 +192,25 @@
         assertEquals( 2,
                       list.size() );
 
+        assertSame( cheesery1, list.get( 0 ) );
         assertEquals( cheesery1,
                       list.get( 0 ) );
         assertEquals( cheesery2,
                       list.get( 1 ) );
         
-//        // now try it again with the list from a serialised WM
-//        workingMemory   = SerializationHelper.serializeObject(workingMemory);
-//        list = (List) workingMemory.getGlobal( "list" );
-//        workingMemory.fireAllRules();
-//
-//        assertEquals( 2,
-//                      list.size() );
-//
-//        assertEquals( cheesery1,
-//                      list.get( 0 ) );
-//        assertEquals( cheesery2,
-//                      list.get( 1 ) );        
+        // now try it again with the list from a serialised WM
+        workingMemory   = ruleBase.newStatefulSession( new ByteArrayInputStream( SerializationHelper.serializeOut(  workingMemory  )) );        
+        list = (List) workingMemory.getGlobal( "list" );
+        workingMemory.fireAllRules();
+
+        assertEquals( 2,
+                      list.size() );
+
+        assertNotSame( cheesery1, list.get( 0 ) );
+        assertEquals( cheesery1,
+                      list.get( 0 ) );
+        assertEquals( cheesery2,
+                      list.get( 1 ) );        
     }
 
     public void testPrimitiveArray() throws Exception {




More information about the jboss-svn-commits mailing list