[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