[jboss-svn-commits] JBL Code SVN: r19310 - in labs/jbossrules/branches/4.0.x/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
Sat Mar 29 12:34:27 EDT 2008


Author: tirelli
Date: 2008-03-29 12:34:27 -0400 (Sat, 29 Mar 2008)
New Revision: 19310

Modified:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/OuterClass.java
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
Log:
JBRULES-1522: added serialization to all accumulate tests

Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/OuterClass.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/OuterClass.java	2008-03-29 16:15:04 UTC (rev 19309)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/OuterClass.java	2008-03-29 16:34:27 UTC (rev 19310)
@@ -1,6 +1,10 @@
 package org.drools;
 
-public class OuterClass {
+import java.io.Serializable;
+
+public class OuterClass implements Serializable {
+
+    private static final long serialVersionUID = 4398109820791230134L;
     private String attr1;
 
     public String getAttr1() {
@@ -11,7 +15,9 @@
         this.attr1 = attr1;
     }
 
-    public static class InnerClass {
+    public static class InnerClass implements Serializable {
+
+        private static final long serialVersionUID = 5025859088631741192L;
         private int intAttr;
 
         public InnerClass(int intAttr) {

Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java	2008-03-29 16:15:04 UTC (rev 19309)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java	2008-03-29 16:34:27 UTC (rev 19310)
@@ -62,19 +62,79 @@
         final Package pkg = builder.getPackage();
 
         // add the package to a rulebase
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+
+        ruleBase = serializeRuleBase( ruleBase );
+
         // load up the rulebase
         return ruleBase;
     }
 
+    /**
+     * @param ruleBase
+     * @return
+     * @throws IOException
+     * @throws ClassNotFoundException
+     */
+    private RuleBase serializeRuleBase(RuleBase ruleBase) throws IOException,
+                                                         ClassNotFoundException {
+        byte[] serializedRuleBase = serializeOut( ruleBase );
+        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
+        return ruleBase;
+    }
+
+    /**
+     * @param ruleBase
+     * @param wm
+     * @return
+     * @throws IOException
+     * @throws ClassNotFoundException
+     */
+    private StatefulSession serializeWorkingMemory(RuleBase ruleBase,
+                                                   StatefulSession wm) throws IOException,
+                                                                      ClassNotFoundException {
+        byte[] serializedSession = serializeOut( wm );
+        wm.dispose();
+        wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+        return wm;
+    }
+
+    /**
+     * @param wm
+     * @param handles
+     */
+    private void updateHandles(StatefulSession wm,
+                               final FactHandle[] handles) {
+        for ( int i = 0; i < handles.length; i++ ) {
+            handles[i] = updateHandle( wm,
+                                       (InternalFactHandle) handles[i] );
+        }
+    }
+
+    /**
+     * @param wm
+     * @param cheeseHandles
+     * @param index
+     */
+    private InternalFactHandle updateHandle(final StatefulSession wm,
+                                            final InternalFactHandle handle) {
+        for ( Iterator it = wm.iterateFactHandles(); it.hasNext(); ) {
+            InternalFactHandle newHandle = (InternalFactHandle) it.next();
+            if ( handle.getId() == newHandle.getId() ) {
+                return newHandle;
+            }
+        }
+        return null;
+    }
+
     public void testAccumulateModify() throws Exception {
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateModify.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -93,8 +153,17 @@
         for ( int i = 0; i < cheese.length; i++ ) {
             cheeseHandles[i] = wm.insert( cheese[i] );
         }
-        final FactHandle bobHandle = wm.insert( bob );
+        FactHandle bobHandle = wm.insert( bob );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
+
         // ---------------- 1st scenario
         wm.fireAllRules();
         // no fire, as per rule constraints
@@ -140,10 +209,10 @@
 
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Accumulate.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -160,6 +229,11 @@
         wm.insert( new Cheese( "provolone",
                                150 ) );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+
         wm.fireAllRules();
 
         Assert.assertEquals( new Integer( 165 ),
@@ -178,10 +252,10 @@
 
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateMVEL.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -198,6 +272,11 @@
         wm.insert( new Cheese( "provolone",
                                150 ) );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+
         wm.fireAllRules();
 
         Assert.assertEquals( new Integer( 165 ),
@@ -215,10 +294,10 @@
     public void testAccumulateModifyMVEL() throws Exception {
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateModifyMVEL.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -237,8 +316,17 @@
         for ( int i = 0; i < cheese.length; i++ ) {
             cheeseHandles[i] = wm.insert( cheese[i] );
         }
-        final FactHandle bobHandle = wm.insert( bob );
+        FactHandle bobHandle = wm.insert( bob );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
+
         // ---------------- 1st scenario
         wm.fireAllRules();
         // no fire, as per rule constraints
@@ -283,10 +371,10 @@
     public void testAccumulateReverseModify() throws Exception {
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReverseModify.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -305,8 +393,17 @@
         for ( int i = 0; i < cheese.length; i++ ) {
             cheeseHandles[i] = wm.insert( cheese[i] );
         }
-        final FactHandle bobHandle = wm.insert( bob );
+        FactHandle bobHandle = wm.insert( bob );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
+
         // ---------------- 1st scenario
         wm.fireAllRules();
         // no fire, as per rule constraints
@@ -351,10 +448,10 @@
     public void testAccumulateReverseModifyMVEL() throws Exception {
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReverseModifyMVEL.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -373,8 +470,17 @@
         for ( int i = 0; i < cheese.length; i++ ) {
             cheeseHandles[i] = wm.insert( cheese[i] );
         }
-        final FactHandle bobHandle = wm.insert( bob );
+        FactHandle bobHandle = wm.insert( bob );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
+
         // ---------------- 1st scenario
         wm.fireAllRules();
         // no fire, as per rule constraints
@@ -419,10 +525,10 @@
     public void testAccumulateWithFromChaining() throws Exception {
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateWithFromChaining.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -446,8 +552,17 @@
         final Person bob = new Person( "Bob",
                                        "stilton" );
 
-        final FactHandle bobHandle = wm.insert( bob );
+        FactHandle bobHandle = wm.insert( bob );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+        cheeseryHandle = updateHandle( wm,
+                                       (InternalFactHandle) cheeseryHandle );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
+
         // ---------------- 1st scenario
         wm.fireAllRules();
         // one fire, as per rule constraints
@@ -495,16 +610,16 @@
 
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateMVEL.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm1 = ruleBase.newStatefulSession();
-        final List results1 = new ArrayList();
+        StatefulSession wm1 = ruleBase.newStatefulSession();
+        List results1 = new ArrayList();
 
         wm1.setGlobal( "results",
                        results1 );
 
-        final WorkingMemory wm2 = ruleBase.newStatefulSession();
-        final List results2 = new ArrayList();
+        StatefulSession wm2 = ruleBase.newStatefulSession();
+        List results2 = new ArrayList();
 
         wm2.setGlobal( "results",
                        results2 );
@@ -533,6 +648,15 @@
                                 5 ) );
         wm2.insert( new Cheese( "provolone",
                                 150 ) );
+        
+        ruleBase = serializeRuleBase( ruleBase );
+        wm1 = serializeWorkingMemory( ruleBase,
+                                      wm1 );
+        results1 = (List) wm1.getGlobal( "results" );
+        wm2 = serializeWorkingMemory( ruleBase,
+                                      wm2 );
+        results2 = (List) wm2.getGlobal( "results" );
+
         wm1.fireAllRules();
 
         wm2.fireAllRules();
@@ -564,10 +688,10 @@
 
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateInnerClass.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -575,6 +699,10 @@
         wm.insert( new OuterClass.InnerClass( 10 ) );
         wm.insert( new OuterClass.InnerClass( 5 ) );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
         wm.fireAllRules();
 
         Assert.assertEquals( new Integer( 15 ),
@@ -585,10 +713,10 @@
 
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReturningNull.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -605,16 +733,21 @@
             fail( "Should have raised a DroolsRuntimeException instead of " + e );
         }
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        wm.fireAllRules();
+        
     }
 
     public void testAccumulateReturningNullMVEL() throws Exception {
 
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReturningNullMVEL.drl" ) );
-        final RuleBase ruleBase = loadRuleBase( reader );
+        RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
         wm.setGlobal( "results",
                       results );
@@ -631,6 +764,10 @@
             fail( "Should have raised a DroolsRuntimeException instead of " + e );
         }
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        wm.fireAllRules();
     }
 
     public void testAccumulateSumJava() throws Exception {
@@ -694,9 +831,6 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        byte[] serializedRuleBase = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-
         StatefulSession wm = ruleBase.newStatefulSession();
         List results = new ArrayList();
 
@@ -719,13 +853,14 @@
         }
         InternalFactHandle bobHandle = (InternalFactHandle) wm.insert( bob );
 
-        serializedRuleBase = serializeOut( ruleBase );
-        byte[] serializedSession = serializeOut( wm );
-        wm.dispose();
-
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-        wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
         results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
 
         // ---------------- 1st scenario
         wm.fireAllRules();
@@ -736,8 +871,6 @@
 
         // ---------------- 2nd scenario
         final int index = 1;
-        cheeseHandles[index] = updateHandle( wm,
-                                             cheeseHandles[index] );
         cheese[index].setPrice( 3 );
         wm.update( cheeseHandles[index],
                    cheese[index] );
@@ -749,8 +882,6 @@
                              ((Number) results.get( results.size() - 1 )).intValue() );
 
         // ---------------- 3rd scenario
-        bobHandle = updateHandle( wm,
-                                  bobHandle );
         bob.setLikes( "brie" );
         wm.update( bobHandle,
                    bob );
@@ -762,8 +893,6 @@
                              ((Number) results.get( results.size() - 1 )).intValue() );
 
         // ---------------- 4th scenario
-        cheeseHandles[3] = updateHandle( wm,
-                                         cheeseHandles[3] );
         wm.fireAllRules();
 
         // should not have fired as per constraint
@@ -772,30 +901,11 @@
 
     }
 
-    /**
-     * @param wm
-     * @param cheeseHandles
-     * @param index
-     */
-    private InternalFactHandle updateHandle(final StatefulSession wm,
-                                            final InternalFactHandle handle) {
-        for ( Iterator it = wm.iterateFactHandles(); it.hasNext(); ) {
-            InternalFactHandle newHandle = (InternalFactHandle) it.next();
-            if ( handle.getId() == newHandle.getId() ) {
-                return newHandle;
-            }
-        }
-        return null;
-    }
-
     public void execTestAccumulateCount(String fileName) throws Exception {
         // read in the source
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        byte[] serializedRuleBase = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-
         StatefulSession wm = ruleBase.newStatefulSession();
         List results = new ArrayList();
 
@@ -818,13 +928,14 @@
         }
         InternalFactHandle bobHandle = (InternalFactHandle) wm.insert( bob );
 
-        serializedRuleBase = serializeOut( ruleBase );
-        byte[] serializedSession = serializeOut( wm );
-        wm.dispose();
-
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-        wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
         results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
 
         // ---------------- 1st scenario
         wm.fireAllRules();
@@ -837,8 +948,6 @@
         // ---------------- 2nd scenario
         final int index = 1;
         cheese[index].setPrice( 3 );
-        cheeseHandles[index] = updateHandle( wm,
-                                             cheeseHandles[index] );
         wm.update( cheeseHandles[index],
                    cheese[index] );
         wm.fireAllRules();
@@ -851,8 +960,6 @@
 
         // ---------------- 3rd scenario
         bob.setLikes( "brie" );
-        bobHandle = updateHandle( wm,
-                                  bobHandle );
         wm.update( bobHandle,
                    bob );
         wm.fireAllRules();
@@ -864,8 +971,6 @@
                              ((Number) results.get( results.size() - 1 )).intValue() );
 
         // ---------------- 4th scenario
-        cheeseHandles[3] = updateHandle( wm,
-                                         cheeseHandles[3] );
         wm.retract( cheeseHandles[3] );
         wm.fireAllRules();
 
@@ -880,9 +985,6 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        byte[] serializedRuleBase = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-
         StatefulSession wm = ruleBase.newStatefulSession();
         List results = new ArrayList();
 
@@ -905,13 +1007,14 @@
         }
         InternalFactHandle bobHandle = (InternalFactHandle) wm.insert( bob );
 
-        serializedRuleBase = serializeOut( ruleBase );
-        byte[] serializedSession = serializeOut( wm );
-        wm.dispose();
-
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-        wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
         results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
 
         // ---------------- 1st scenario
         wm.fireAllRules();
@@ -922,8 +1025,6 @@
         // ---------------- 2nd scenario
         final int index = 1;
         cheese[index].setPrice( 9 );
-        cheeseHandles[index] = updateHandle( wm,
-                                             cheeseHandles[index] );
         wm.update( cheeseHandles[index],
                    cheese[index] );
         wm.fireAllRules();
@@ -936,8 +1037,6 @@
 
         // ---------------- 3rd scenario
         bob.setLikes( "brie" );
-        bobHandle = updateHandle( wm,
-                                  bobHandle );
         wm.update( bobHandle,
                    bob );
         wm.fireAllRules();
@@ -949,10 +1048,6 @@
                              ((Number) results.get( results.size() - 1 )).intValue() );
 
         // ---------------- 4th scenario
-        cheeseHandles[3] = updateHandle( wm,
-                                         cheeseHandles[3] );
-        cheeseHandles[4] = updateHandle( wm,
-                                         cheeseHandles[4] );
         wm.retract( cheeseHandles[3] );
         wm.retract( cheeseHandles[4] );
         wm.fireAllRules();
@@ -968,9 +1063,6 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        byte[] serializedRuleBase = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-
         StatefulSession wm = ruleBase.newStatefulSession();
         List results = new ArrayList();
 
@@ -993,13 +1085,14 @@
         }
         InternalFactHandle bobHandle = (InternalFactHandle) wm.insert( bob );
 
-        serializedRuleBase = serializeOut( ruleBase );
-        byte[] serializedSession = serializeOut( wm );
-        wm.dispose();
-
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-        wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
         results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
 
         // ---------------- 1st scenario
         wm.fireAllRules();
@@ -1010,8 +1103,6 @@
         // ---------------- 2nd scenario
         final int index = 1;
         cheese[index].setPrice( 3 );
-        cheeseHandles[index] = updateHandle( wm,
-                                             cheeseHandles[index] );
         wm.update( cheeseHandles[index],
                    cheese[index] );
         wm.fireAllRules();
@@ -1024,8 +1115,6 @@
 
         // ---------------- 3rd scenario
         bob.setLikes( "brie" );
-        bobHandle = updateHandle( wm,
-                                  bobHandle );
         wm.update( bobHandle,
                    bob );
         wm.fireAllRules();
@@ -1037,10 +1126,6 @@
                              ((Number) results.get( results.size() - 1 )).intValue() );
 
         // ---------------- 4th scenario
-        cheeseHandles[3] = updateHandle( wm,
-                                         cheeseHandles[3] );
-        cheeseHandles[4] = updateHandle( wm,
-                                         cheeseHandles[4] );
         wm.retract( cheeseHandles[3] );
         wm.retract( cheeseHandles[4] );
         wm.fireAllRules();
@@ -1056,9 +1141,6 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        byte[] serializedRuleBase = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-
         StatefulSession wm = ruleBase.newStatefulSession();
         List results = new ArrayList();
 
@@ -1081,13 +1163,14 @@
         }
         InternalFactHandle bobHandle = (InternalFactHandle) wm.insert( bob );
 
-        serializedRuleBase = serializeOut( ruleBase );
-        byte[] serializedSession = serializeOut( wm );
-        wm.dispose();
-
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-        wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
         results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
 
         // ---------------- 1st scenario
         wm.fireAllRules();
@@ -1098,8 +1181,6 @@
         // ---------------- 2nd scenario
         final int index = 1;
         cheese[index].setPrice( 9 );
-        cheeseHandles[index] = updateHandle( wm,
-                                             cheeseHandles[index] );
         wm.update( cheeseHandles[index],
                    cheese[index] );
         wm.fireAllRules();
@@ -1112,8 +1193,6 @@
 
         // ---------------- 3rd scenario
         bob.setLikes( "brie" );
-        bobHandle = updateHandle( wm,
-                                  bobHandle );
         wm.update( bobHandle,
                    bob );
         wm.fireAllRules();
@@ -1125,10 +1204,6 @@
                              ((Number) results.get( results.size() - 1 )).intValue() );
 
         // ---------------- 4th scenario
-        cheeseHandles[3] = updateHandle( wm,
-                                         cheeseHandles[3] );
-        cheeseHandles[4] = updateHandle( wm,
-                                         cheeseHandles[4] );
         wm.retract( cheeseHandles[3] );
         wm.retract( cheeseHandles[4] );
         wm.fireAllRules();
@@ -1144,9 +1219,6 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        byte[] serializedRuleBase = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-
         StatefulSession wm = ruleBase.newStatefulSession();
         List results = new ArrayList();
 
@@ -1172,13 +1244,15 @@
         InternalFactHandle bobHandle = (InternalFactHandle) wm.insert( bob );
         InternalFactHandle markHandle = (InternalFactHandle) wm.insert( mark );
 
-        serializedRuleBase = serializeOut( ruleBase );
-        byte[] serializedSession = serializeOut( wm );
-        wm.dispose();
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
 
-        ruleBase = (RuleBase) serializeIn( serializedRuleBase );
-        wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
         results = (List) wm.getGlobal( "results" );
+        updateHandles( wm,
+                       cheeseHandles );
+        bobHandle = updateHandle( wm,
+                                  (InternalFactHandle) bobHandle );
 
         // ---------------- 1st scenario
         wm.fireAllRules();
@@ -1189,8 +1263,6 @@
         // ---------------- 2nd scenario
         final int index = 1;
         cheese[index].setPrice( 9 );
-        cheeseHandles[index] = updateHandle( wm,
-                                             cheeseHandles[index] );
         wm.update( cheeseHandles[index],
                    cheese[index] );
         wm.fireAllRules();
@@ -1203,8 +1275,6 @@
 
         // ---------------- 3rd scenario
         bob.setLikes( "brie" );
-        bobHandle = updateHandle( wm,
-                                  bobHandle );
         wm.update( bobHandle,
                    bob );
         wm.fireAllRules();
@@ -1216,8 +1286,6 @@
                              ((Cheesery) results.get( results.size() - 1 )).getTotalAmount() );
 
         // ---------------- 4th scenario
-        cheeseHandles[3] = updateHandle( wm,
-                                         cheeseHandles[3] );
         wm.retract( cheeseHandles[3] );
         wm.fireAllRules();
 
@@ -1233,12 +1301,9 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulatePreviousBinds.drl" ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        byte[] serializeOut = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializeOut );
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
-
         wm.setGlobal( "results",
                       results );
 
@@ -1251,6 +1316,11 @@
         wm.insert( new Cheese( "brie",
                                20 ) );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+
         wm.fireAllRules();
 
         assertEquals( 1,
@@ -1265,12 +1335,9 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateGlobals.drl" ) );
         RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
-        final List results = new ArrayList();
+        StatefulSession wm = ruleBase.newStatefulSession();
+        List results = new ArrayList();
 
-        byte[] serializeOut = serializeOut( ruleBase );
-        ruleBase = (RuleBase) serializeIn( serializeOut );
-
         wm.setGlobal( "results",
                       results );
         wm.setGlobal( "globalValue",
@@ -1285,6 +1352,11 @@
         wm.insert( new Cheese( "brie",
                                20 ) );
 
+        ruleBase = serializeRuleBase( ruleBase );
+        wm = serializeWorkingMemory( ruleBase,
+                                     wm );
+        results = (List) wm.getGlobal( "results" );
+
         wm.fireAllRules();
 
         assertEquals( 1,




More information about the jboss-svn-commits mailing list