[jboss-svn-commits] JBL Code SVN: r19997 - in labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools: integrationtests and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat May 17 23:08:36 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-05-17 23:08:35 -0400 (Sat, 17 May 2008)
New Revision: 19997
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cell.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactA.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactB.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactC.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SerializationHelper.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
Log:
JBRULES-1598 Efficient WorkingMemory serialization with binary protocol
-First working version, ready for the world to see :) Still needs Accumulate, Collect and From to be done.
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cell.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cell.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Cell.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -37,4 +37,22 @@
public void setValue(final int value) {
this.value = value;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + value;
+ 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 Cell other = (Cell) obj;
+ if ( value != other.value ) return false;
+ return true;
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactA.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactA.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactA.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -13,6 +13,10 @@
public FactA( String f1 ) {
this.field1 = f1;
}
+
+ public FactA( final Integer f2 ) {
+ this.field2 = f2;
+ }
public FactA(final String f1,
final Integer f2,
@@ -46,4 +50,32 @@
this.field3 = f;
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((field1 == null) ? 0 : field1.hashCode());
+ result = prime * result + ((field2 == null) ? 0 : field2.hashCode());
+ result = prime * result + ((field3 == null) ? 0 : field3.hashCode());
+ 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 FactA other = (FactA) obj;
+ if ( field1 == null ) {
+ if ( other.field1 != null ) return false;
+ } else if ( !field1.equals( other.field1 ) ) return false;
+ if ( field2 == null ) {
+ if ( other.field2 != null ) return false;
+ } else if ( !field2.equals( other.field2 ) ) return false;
+ if ( field3 == null ) {
+ if ( other.field3 != null ) return false;
+ } else if ( !field3.equals( other.field3 ) ) return false;
+ return true;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactB.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactB.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactB.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -13,6 +13,10 @@
public FactB( String f1 ) {
this.f1 = f1;
}
+
+ public FactB( final Integer b ) {
+ this.f2 = b;
+ }
public FactB(final String a,
final Integer b,
@@ -46,4 +50,32 @@
this.f3 = f;
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((f1 == null) ? 0 : f1.hashCode());
+ result = prime * result + ((f2 == null) ? 0 : f2.hashCode());
+ result = prime * result + ((f3 == null) ? 0 : f3.hashCode());
+ 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 FactB other = (FactB) obj;
+ if ( f1 == null ) {
+ if ( other.f1 != null ) return false;
+ } else if ( !f1.equals( other.f1 ) ) return false;
+ if ( f2 == null ) {
+ if ( other.f2 != null ) return false;
+ } else if ( !f2.equals( other.f2 ) ) return false;
+ if ( f3 == null ) {
+ if ( other.f3 != null ) return false;
+ } else if ( !f3.equals( other.f3 ) ) return false;
+ return true;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactC.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactC.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FactC.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -22,6 +22,10 @@
public FactC( String f1 ) {
this.f1 = f1;
}
+
+ public FactC( final Integer b ) {
+ this.f2 = b;
+ }
public String getF1() {
return this.f1;
@@ -47,4 +51,32 @@
this.f3 = f;
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((f1 == null) ? 0 : f1.hashCode());
+ result = prime * result + ((f2 == null) ? 0 : f2.hashCode());
+ result = prime * result + ((f3 == null) ? 0 : f3.hashCode());
+ 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 FactC other = (FactC) obj;
+ if ( f1 == null ) {
+ if ( other.f1 != null ) return false;
+ } else if ( !f1.equals( other.f1 ) ) return false;
+ if ( f2 == null ) {
+ if ( other.f2 != null ) return false;
+ } else if ( !f2.equals( other.f2 ) ) return false;
+ if ( f3 == null ) {
+ if ( other.f3 != null ) return false;
+ } else if ( !f3.equals( other.f3 ) ) return false;
+ return true;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -14,6 +14,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
import org.drools.TemporalSession;
import org.drools.StockTick;
import org.drools.WorkingMemory;
@@ -66,11 +67,11 @@
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_CEP_SimpleEventAssertion.drl" ) );
RuleBase ruleBase = loadRuleBase( reader );
- WorkingMemory wm = ruleBase.newTemporalSession( ClockType.PSEUDO_CLOCK );
+ StatefulSession session = ruleBase.newTemporalSession( ClockType.PSEUDO_CLOCK );
final List results = new ArrayList();
- wm.setGlobal( "results",
- results );
+ session.setGlobal( "results",
+ results );
StockTick tick1 = new StockTick( 1,
"DROO",
@@ -89,10 +90,10 @@
50,
System.currentTimeMillis() );
- InternalFactHandle handle1 = (InternalFactHandle) wm.insert( tick1 );
- InternalFactHandle handle2 = (InternalFactHandle) wm.insert( tick2 );
- InternalFactHandle handle3 = (InternalFactHandle) wm.insert( tick3 );
- InternalFactHandle handle4 = (InternalFactHandle) wm.insert( tick4 );
+ InternalFactHandle handle1 = (InternalFactHandle) session.insert( tick1 );
+ InternalFactHandle handle2 = (InternalFactHandle) session.insert( tick2 );
+ InternalFactHandle handle3 = (InternalFactHandle) session.insert( tick3 );
+ InternalFactHandle handle4 = (InternalFactHandle) session.insert( tick4 );
assertNotNull( handle1 );
assertNotNull( handle2 );
@@ -104,11 +105,12 @@
assertTrue( handle3.isEvent() );
assertTrue( handle4.isEvent() );
- wm = SerializationHelper.serializeObject( wm );
- wm.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 2,
- ((List) wm.getGlobal( "results" )).size() );
+ ((List) session.getGlobal( "results" )).size() );
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -339,20 +339,21 @@
ruleBase.addPackage( SerializationHelper.serializeObject( builder.getPackage() ) );
ruleBase = SerializationHelper.serializeObject( ruleBase );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory.insert( new Precondition( "genericcode",
+ session.insert( new Precondition( "genericcode",
"genericvalue" ) );
- workingMemory.fireAllRules();
+ session.fireAllRules();
- RuleBase ruleBaseWM = workingMemory.getRuleBase();
+ RuleBase ruleBaseWM = session.getRuleBase();
ruleBaseWM.removePackage( packageName );
final PackageBuilder builder1 = new PackageBuilder();
builder1.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_RemovePackage.drl" ) ) );
ruleBaseWM.addPackage( SerializationHelper.serializeObject( builder1.getPackage() ) );
ruleBaseWM = SerializationHelper.serializeObject( ruleBaseWM );
- workingMemory = SerializationHelper.serializeObject( workingMemory );
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
ruleBaseWM.removePackage( packageName );
ruleBaseWM.addPackage( SerializationHelper.serializeObject( builder1.getPackage() ) );
@@ -363,30 +364,31 @@
public void testDynamicRules() throws Exception {
RuleBase ruleBase = getRuleBase();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
final Cheese a = new Cheese( "stilton",
10 );
final Cheese b = new Cheese( "stilton",
15 );
final Cheese c = new Cheese( "stilton",
20 );
- workingMemory.insert( a );
- workingMemory.insert( b );
- workingMemory.insert( c );
+ session.insert( a );
+ session.insert( b );
+ session.insert( c );
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRules.drl" ) ) );
final Package pkg = builder.getPackage();
ruleBase.addPackage( SerializationHelper.serializeObject( pkg ) );
ruleBase = SerializationHelper.serializeObject( ruleBase );
- workingMemory = SerializationHelper.serializeObject( workingMemory );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
- workingMemory.fireAllRules();
+ session.fireAllRules();
}
public void testDynamicRules2() throws Exception {
RuleBase ruleBase = getRuleBase();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
// Assert some simple facts
final FactA a = new FactA( "hello",
@@ -395,17 +397,18 @@
final FactB b = new FactB( "hello",
new Integer( 2 ),
new Float( 6.28 ) );
- workingMemory.insert( a );
- workingMemory.insert( b );
+ session.insert( a );
+ session.insert( b );
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRules2.drl" ) ) );
final Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
ruleBase = SerializationHelper.serializeObject( ruleBase );
- workingMemory = SerializationHelper.serializeObject( workingMemory );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
- workingMemory.fireAllRules();
+ session.fireAllRules();
}
public void testRuleBaseAddRemove() throws Exception {
@@ -562,9 +565,9 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkgInit );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
List results = new ArrayList();
- workingMemory.setGlobal( "results",
+ session.setGlobal( "results",
results );
final Cheese a = new Cheese( "stilton",
@@ -573,35 +576,37 @@
15 );
final Cheese c = new Cheese( "stilton",
20 );
- workingMemory.insert( a );
- FactHandle handle = workingMemory.insert( b );
- workingMemory.insert( c );
-
+ session.insert( a );
+ session.insert( b );
+ session.insert( c );
+
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicNotNode.drl" ) ) );
final Package pkg = builder.getPackage();
ruleBase.addPackage( SerializationHelper.serializeObject( pkg ) );
ruleBase = SerializationHelper.serializeObject( ruleBase );
- workingMemory = SerializationHelper.serializeObject( workingMemory );
- results = (List) workingMemory.getGlobal( "results" );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ results = (List) session.getGlobal( "results" );
- workingMemory.fireAllRules();
+ session.fireAllRules();
assertEquals( 0,
results.size() );
ruleBase.removePackage( "org.drools" );
- workingMemory.retract( handle );
+ session.retract( session.getFactHandle( b ) );
final PackageBuilder builder1 = new PackageBuilder();
builder1.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicNotNode.drl" ) ) );
final Package pkg1 = builder.getPackage();
ruleBase.addPackage( SerializationHelper.serializeObject( pkg1 ) );
ruleBase = SerializationHelper.serializeObject( ruleBase );
- workingMemory = SerializationHelper.serializeObject( workingMemory );
- results = (List) workingMemory.getGlobal( "results" );
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ results = (List) session.getGlobal( "results" );
+ session.fireAllRules();
assertEquals( 1,
results.size() );
@@ -701,10 +706,10 @@
builder2.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesWithSubnetwork2.drl" ) ) );
ruleBase.addPackage( SerializationHelper.serializeObject( builder2.getPackage() ) );
- final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ final StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "results",
+ session.setGlobal( "results",
list );
Order order = new Order();
@@ -715,7 +720,7 @@
OrderItem.TYPE_BOOK,
24 );
order.addItem( item1 );
- workingMemory.insert( item1 );
+ session.insert( item1 );
OrderItem item2 = new OrderItem( order,
2,
@@ -723,7 +728,7 @@
OrderItem.TYPE_BOOK,
15 );
order.addItem( item2 );
- workingMemory.insert( item2 );
+ session.insert( item2 );
OrderItem item3 = new OrderItem( order,
3,
@@ -731,7 +736,7 @@
OrderItem.TYPE_CD,
9 );
order.addItem( item3 );
- workingMemory.insert( item3 );
+ session.insert( item3 );
OrderItem item4 = new OrderItem( order,
4,
@@ -739,17 +744,17 @@
OrderItem.TYPE_CD,
11 );
order.addItem( item4 );
- workingMemory.insert( item4 );
+ session.insert( item4 );
- workingMemory.insert( order );
+ session.insert( order );
assertEquals( 11,
- workingMemory.getAgenda().getActivations().length );
+ session.getAgenda().getActivations().length );
reteooRuleBase.removeRule( "org.drools",
"Apply Discount on all books" );
assertEquals( 10,
- workingMemory.getAgenda().getActivations().length );
+ session.getAgenda().getActivations().length );
reteooRuleBase.removeRule( "org.drools",
"like book" );
@@ -760,17 +765,17 @@
OrderItem.TYPE_CD,
5 );
assertEquals( 8,
- workingMemory.getAgenda().getActivations().length );
+ session.getAgenda().getActivations().length );
- workingMemory.insert( item5 );
+ session.insert( item5 );
assertEquals( 10,
- workingMemory.getAgenda().getActivations().length );
+ session.getAgenda().getActivations().length );
reteooRuleBase.removePackage( "org.drools" );
assertEquals( 0,
- workingMemory.getAgenda().getActivations().length );
+ session.getAgenda().getActivations().length );
}
public void testDynamicRuleRemovalsUnusedWorkingMemorySubNetwork() throws Exception {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -45,15 +45,6 @@
config );
}
- private StatefulSession serializeWorkingMemory(RuleBase ruleBase,
- StatefulSession wm) throws IOException,
- ClassNotFoundException {
- byte[] serializedSession = DroolsStreamUtils.streamOut( wm );
- wm.dispose();
- wm = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
- return wm;
- }
-
public void testCollect() throws Exception {
// read in the source
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -23,12 +23,15 @@
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.WorkingMemory;
+import org.drools.base.MapGlobalResolver;
import org.drools.common.InternalFactHandle;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.marshalling.Marshaller;
import org.drools.rule.MapBackedClassLoader;
import org.drools.rule.Package;
import org.drools.rule.Rule;
+import org.drools.spi.GlobalResolver;
import org.drools.util.DroolsStreamUtils;
public class MarshallingTest extends TestCase {
@@ -39,12 +42,12 @@
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( reader );
- final Package pkg = SerializationHelper.serializeObject( builder.getPackage());
+ final Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
assertEquals( 0,
builder.getErrors().getErrors().length );
- RuleBase ruleBase = getRuleBase(pkg);// RuleBaseFactory.newRuleBase();
+ RuleBase ruleBase = getRuleBase( pkg );// RuleBaseFactory.newRuleBase();
Map map = new HashMap();
map.put( "x",
@@ -64,29 +67,27 @@
assertEquals( "match Integer",
rules[3].getName() );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory.setGlobal( "list",
- new ArrayList() );
+ session.setGlobal( "list",
+ new ArrayList() );
final Person bob = new Person( "bob" );
- workingMemory.insert( bob );
+ session.insert( bob );
- final byte[] wm = DroolsStreamUtils.streamOut( workingMemory );
+ session = SerializationHelper.getSerialisedStatefulSession( session );
- workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
-
assertEquals( 1,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+ IteratorToList.convert( session.iterateObjects() ).size() );
assertEquals( bob,
- IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
+ IteratorToList.convert( session.iterateObjects() ).get( 0 ) );
assertEquals( 2,
- workingMemory.getAgenda().agendaSize() );
+ session.getAgenda().agendaSize() );
- workingMemory.fireAllRules();
+ session.fireAllRules();
- final List list = (List) workingMemory.getGlobal( "list" );
+ final List list = (List) session.getGlobal( "list" );
assertEquals( 3,
list.size() );
@@ -95,9 +96,9 @@
list.get( 0 ) );
assertEquals( 2,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
+ IteratorToList.convert( session.iterateObjects() ).size() );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( bob ) );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( new Person( "help" ) ) );
}
public void testSerializeWorkingMemoryAndRuleBase1() throws Exception {
@@ -113,27 +114,24 @@
RuleBase ruleBase = getRuleBase();// RuleBaseFactory.newRuleBase();
+ StatefulSession session = ruleBase.newStatefulSession();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
Map map = new HashMap();
map.put( "x",
ruleBase );
- map = SerializationHelper.serializeObject(map);
+ map = SerializationHelper.serializeObject( map );
ruleBase = (RuleBase) map.get( "x" );
- final byte[] wm = DroolsStreamUtils.streamOut( workingMemory );
-
- workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
-
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+
+ session.setGlobal( "list",
+ new ArrayList() );
- workingMemory.setGlobal( "list",
- new ArrayList() );
-
final Person bob = new Person( "bob" );
- workingMemory.insert( bob );
+ session.insert( bob );
final Rule[] rules = ruleBase.getPackages()[0].getRules();
@@ -150,17 +148,17 @@
rules[3].getName() );
assertEquals( 1,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+ IteratorToList.convert( session.iterateObjects() ).size() );
assertEquals( bob,
- IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
+ IteratorToList.convert( session.iterateObjects() ).get( 0 ) );
assertEquals( 2,
- workingMemory.getAgenda().agendaSize() );
+ session.getAgenda().agendaSize() );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session );
+ session.fireAllRules();
- final List list = (List) workingMemory.getGlobal( "list" );
+ final List list = (List) session.getGlobal( "list" );
assertEquals( 3,
list.size() );
@@ -169,9 +167,9 @@
list.get( 0 ) );
assertEquals( 2,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
+ IteratorToList.convert( session.iterateObjects() ).size() );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( bob ) );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( new Person( "help" ) ) );
}
@@ -195,19 +193,18 @@
map = SerializationHelper.serializeObject( map );
ruleBase = (RuleBase) map.get( "x" );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
// serialise the working memory before population
- final byte[] wm = DroolsStreamUtils.streamOut( workingMemory );
- workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
ruleBase.addPackage( pkg );
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
new ArrayList() );
final Person bob = new Person( "bob" );
- workingMemory.insert( bob );
+ session.insert( bob );
final Rule[] rules = ruleBase.getPackages()[0].getRules();
@@ -224,17 +221,17 @@
rules[3].getName() );
assertEquals( 1,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+ IteratorToList.convert( session.iterateObjects() ).size() );
assertEquals( bob,
- IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
+ IteratorToList.convert( session.iterateObjects() ).get( 0 ) );
assertEquals( 2,
- workingMemory.getAgenda().agendaSize() );
+ session.getAgenda().agendaSize() );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session );
+ session.fireAllRules();
- final List list = (List) workingMemory.getGlobal( "list" );
+ final List list = (List) session.getGlobal( "list" );
assertEquals( 3,
list.size() );
@@ -243,9 +240,9 @@
list.get( 0 ) );
assertEquals( 2,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
+ IteratorToList.convert( session.iterateObjects() ).size() );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( bob ) );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( new Person( "help" ) ) );
}
public void testSerializeWorkingMemoryAndRuleBase3() throws Exception {
@@ -254,21 +251,21 @@
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( reader );
- final Package pkg = SerializationHelper.serializeObject( builder.getPackage());
+ final Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
assertEquals( 0,
builder.getErrors().getErrors().length );
RuleBase ruleBase = getRuleBase();
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
ruleBase.addPackage( pkg );
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
new ArrayList() );
final Person bob = new Person( "bob" );
- workingMemory.insert( bob );
+ session.insert( bob );
// serialise a hashmap with the RuleBase as a key, after WM population
Map map = new HashMap();
@@ -278,8 +275,7 @@
ruleBase = (RuleBase) map.get( "x" );
// now try serialising with a fully populated wm from a serialised rulebase
- final byte[] wm = DroolsStreamUtils.streamOut( workingMemory );
- workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
final Rule[] rules = ruleBase.getPackages()[0].getRules();
@@ -296,17 +292,17 @@
rules[3].getName() );
assertEquals( 1,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+ IteratorToList.convert( session.iterateObjects() ).size() );
assertEquals( bob,
- IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
+ IteratorToList.convert( session.iterateObjects() ).get( 0 ) );
assertEquals( 2,
- workingMemory.getAgenda().agendaSize() );
+ session.getAgenda().agendaSize() );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
+ session.fireAllRules();
- final List list = (List) workingMemory.getGlobal( "list" );
+ final List list = (List) session.getGlobal( "list" );
assertEquals( 3,
list.size() );
@@ -315,56 +311,66 @@
list.get( 0 ) );
assertEquals( 2,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
- assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
+ IteratorToList.convert( session.iterateObjects() ).size() );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( bob ) );
+ assertTrue( IteratorToList.convert( session.iterateObjects() ).contains( new Person( "help" ) ) );
}
public void testSerializeAdd() throws Exception {
//Create a rulebase, a session, and test it
- RuleBase ruleBase = RuleBaseFactory.newRuleBase( );
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1.drl" ) ) );
- Package pkg = SerializationHelper.serializeObject( builder.getPackage());
+ Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
- session.setGlobal( "list", list );
+ session.setGlobal( "list",
+ list );
- InternalFactHandle stilton = (InternalFactHandle) session.insert( new Cheese( "stilton", 10 ) );
- InternalFactHandle brie = (InternalFactHandle) session.insert( new Cheese( "brie", 10 ) );
+ InternalFactHandle stilton = (InternalFactHandle) session.insert( new Cheese( "stilton",
+ 10 ) );
+ InternalFactHandle brie = (InternalFactHandle) session.insert( new Cheese( "brie",
+ 10 ) );
session.fireAllRules();
- assertEquals( list.size(), 1 );
- assertEquals( "stilton", list.get( 0 ));
+ assertEquals( list.size(),
+ 1 );
+ assertEquals( "stilton",
+ list.get( 0 ) );
- byte[] serializedSession = DroolsStreamUtils.streamOut( session );
- session.dispose();
-
// now recreate the rulebase, deserialize the session and test it
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
list = (List) session.getGlobal( "list" );
assertNotNull( list );
- assertEquals( list.size(), 1 );
- assertEquals( "stilton", list.get( 0 ));
+ assertEquals( list.size(),
+ 1 );
+ assertEquals( "stilton",
+ list.get( 0 ) );
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic3.drl" ) ) );
- pkg = SerializationHelper.serializeObject( builder.getPackage());
+ pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
- InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton", 10 ) );
- InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie", 10 ) );
- InternalFactHandle bob = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
+ InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton",
+ 10 ) );
+ InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie",
+ 10 ) );
+ InternalFactHandle bob = (InternalFactHandle) session.insert( new Person( "bob",
+ 30 ) );
session.fireAllRules();
- assertEquals( list.size(), 3 );
- assertEquals( bob.getObject(), list.get( 1 ));
- assertEquals( "stilton", list.get( 2 ));
+ assertEquals( list.size(),
+ 3 );
+ assertEquals( bob.getObject(),
+ list.get( 1 ) );
+ assertEquals( "stilton",
+ list.get( 2 ) );
session.dispose();
@@ -381,7 +387,7 @@
0,
builder.getErrors().getErrors().length );
- RuleBase ruleBase = getRuleBase(pkg);// RuleBaseFactory.newRuleBase();
+ RuleBase ruleBase = getRuleBase( pkg );// RuleBaseFactory.newRuleBase();
Map map = new HashMap();
map.put( "x",
@@ -392,33 +398,31 @@
assertEquals( 3,
rules.length );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
new ArrayList() );
- final Primitives p = new Primitives( );
+ final Primitives p = new Primitives();
p.setBytePrimitive( (byte) 1 );
p.setShortPrimitive( (short) 2 );
p.setIntPrimitive( (int) 3 );
- workingMemory.insert( p );
+ session.insert( p );
- final byte[] wm = DroolsStreamUtils.streamOut( workingMemory );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
- workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
-
assertEquals( 1,
- IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+ IteratorToList.convert( session.iterateObjects() ).size() );
assertEquals( p,
- IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
+ IteratorToList.convert( session.iterateObjects() ).get( 0 ) );
assertEquals( 3,
- workingMemory.getAgenda().agendaSize() );
+ session.getAgenda().agendaSize() );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
+ session.fireAllRules();
- final List list = (List) workingMemory.getGlobal( "list" );
+ final List list = (List) session.getGlobal( "list" );
assertEquals( 3,
list.size() );
@@ -468,13 +472,17 @@
results.get( 0 ) );
// serialize session and rulebase out
- byte[] serializedSession = DroolsStreamUtils.streamOut( session );
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Marshaller marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos, marshaller );
+ GlobalResolver resolver = session.getGlobalResolver();
byte[] serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
// now deserialize the rulebase, deserialize the session and test it
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ session.setGlobalResolver( resolver );
// dynamically add a new package
builder = new PackageBuilder();
@@ -500,10 +508,9 @@
assertEquals( mark.getObject(),
results.get( 3 ) );
- serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
// dispose session
@@ -539,7 +546,10 @@
10 ) );
session.fireAllRules();
- byte[] serializedSession = DroolsStreamUtils.streamOut( session );
+ GlobalResolver resolver = session.getGlobalResolver();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Marshaller marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos, marshaller );
byte[] serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
@@ -551,7 +561,8 @@
// now recreate the rulebase, deserialize the session and test it
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ session.setGlobalResolver( resolver );
results = (List) session.getGlobal( "results" );
builder = new PackageBuilder();
@@ -560,11 +571,11 @@
ruleBase.addPackage( pkg );
InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton",
- 20 ) );
+ 20 ) );
InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie",
- 20 ) );
+ 20 ) );
InternalFactHandle brie3 = (InternalFactHandle) session.insert( new Cheese( "brie",
- 30 ) );
+ 30 ) );
session.fireAllRules();
assertEquals( 5,
results.size() );
@@ -577,10 +588,9 @@
assertEquals( brie3.getObject(),
results.get( 3 ) );
- serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
@@ -591,7 +601,7 @@
*/
public void testSerializeAdd3() throws Exception {
//Create a rulebase, a session, and test it
- RuleBase ruleBase = RuleBaseFactory.newRuleBase( );
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1_0.drl" ) ) );
Package pkg = SerializationHelper.serializeObject( builder.getPackage() );
@@ -608,7 +618,10 @@
10 ) );
session.fireAllRules();
- byte[] serializedSession = DroolsStreamUtils.streamOut( session );
+ GlobalResolver resolver = session.getGlobalResolver();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Marshaller marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos, marshaller );
byte[] serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
@@ -620,7 +633,8 @@
// now recreate the rulebase, deserialize the session and test it
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ session.setGlobalResolver( resolver );
results = (List) session.getGlobal( "results" );
builder = new PackageBuilder();
@@ -629,10 +643,14 @@
ruleBase.addPackage( pkg );
- InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton", 20 ) );
- InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie", 20 ) );
- InternalFactHandle bob1 = (InternalFactHandle) session.insert( new Person( "bob", 20 ) );
- InternalFactHandle bob2 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
+ InternalFactHandle stilton2 = (InternalFactHandle) session.insert( new Cheese( "stilton",
+ 20 ) );
+ InternalFactHandle brie2 = (InternalFactHandle) session.insert( new Cheese( "brie",
+ 20 ) );
+ InternalFactHandle bob1 = (InternalFactHandle) session.insert( new Person( "bob",
+ 20 ) );
+ InternalFactHandle bob2 = (InternalFactHandle) session.insert( new Person( "bob",
+ 30 ) );
session.fireAllRules();
assertEquals( 4,
@@ -644,17 +662,20 @@
assertEquals( bob1.getObject(),
results.get( 3 ) );
- serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ resolver = session.getGlobalResolver();
+ baos = new ByteArrayOutputStream();
+ marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos, marshaller );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
// now recreate the rulebase, deserialize the session and test it
- ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+ ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ session.setGlobalResolver( resolver );
results = (List) session.getGlobal( "results" );
builder = new PackageBuilder();
@@ -662,10 +683,14 @@
pkg = SerializationHelper.serializeObject( builder.getPackage() );
ruleBase.addPackage( pkg );
- InternalFactHandle stilton3 = (InternalFactHandle) session.insert( new Cheese( "stilton", 40 ) );
- InternalFactHandle brie3 = (InternalFactHandle) session.insert( new Cheese( "brie", 40 ) );
- InternalFactHandle bob3 = (InternalFactHandle) session.insert( new Person( "bob", 40 ) );
- InternalFactHandle bob4 = (InternalFactHandle) session.insert( new Person( "bob", 40 ) );
+ InternalFactHandle stilton3 = (InternalFactHandle) session.insert( new Cheese( "stilton",
+ 40 ) );
+ InternalFactHandle brie3 = (InternalFactHandle) session.insert( new Cheese( "brie",
+ 40 ) );
+ InternalFactHandle bob3 = (InternalFactHandle) session.insert( new Person( "bob",
+ 40 ) );
+ InternalFactHandle bob4 = (InternalFactHandle) session.insert( new Person( "bob",
+ 40 ) );
InternalFactHandle addr1 = (InternalFactHandle) session.insert( new Address( "bangalore" ) );
InternalFactHandle addr2 = (InternalFactHandle) session.insert( new Address( "India" ) );
@@ -684,23 +709,29 @@
assertEquals( addr1.getObject(),
results.get( 8 ) );
- serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ resolver = session.getGlobalResolver();
+ baos = new ByteArrayOutputStream();
+ marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos, marshaller );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
-
session.dispose();
// now recreate the rulebase, deserialize the session and test it
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ session.setGlobalResolver( resolver );
results = (List) session.getGlobal( "results" );
- InternalFactHandle stilton4 = (InternalFactHandle) session.insert( new Cheese( "stilton", 50 ) );
- InternalFactHandle brie4 = (InternalFactHandle) session.insert( new Cheese( "brie", 50 ) );
- InternalFactHandle bob5 = (InternalFactHandle) session.insert( new Person( "bob", 50 ) );
- InternalFactHandle bob6 = (InternalFactHandle) session.insert( new Person( "bob", 50 ) );
+ InternalFactHandle stilton4 = (InternalFactHandle) session.insert( new Cheese( "stilton",
+ 50 ) );
+ InternalFactHandle brie4 = (InternalFactHandle) session.insert( new Cheese( "brie",
+ 50 ) );
+ InternalFactHandle bob5 = (InternalFactHandle) session.insert( new Person( "bob",
+ 50 ) );
+ InternalFactHandle bob6 = (InternalFactHandle) session.insert( new Person( "bob",
+ 50 ) );
InternalFactHandle addr3 = (InternalFactHandle) session.insert( new Address( "Tripura" ) );
InternalFactHandle addr4 = (InternalFactHandle) session.insert( new Address( "Agartala" ) );
@@ -719,16 +750,14 @@
assertEquals( addr3.getObject(),
results.get( 13 ) );
- serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
-
}
-
+
/*
* I have tried both the scenarios
* 1. Remove a rule from a pkg.
@@ -758,7 +787,9 @@
10 ) );
session.fireAllRules();
- byte[] serializedSession = DroolsStreamUtils.streamOut( session );
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Marshaller marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos, marshaller );
byte[] serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
@@ -770,8 +801,9 @@
// now recreate the rulebase, deserialize the session and test it
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
- results = (List) session.getGlobal( "results" );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ results.clear();
+ session.setGlobal( "results", results );
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic3_0.drl" ) ) );
@@ -785,27 +817,29 @@
InternalFactHandle bob2 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
session.fireAllRules();
- assertEquals( 4,
+ assertEquals( 3,
results.size() );
assertEquals( stilton2.getObject(),
+ results.get( 0 ) );
+ assertEquals( bob2.getObject(),
results.get( 1 ) );
- assertEquals( bob2.getObject(),
+ assertEquals( bob1.getObject(),
results.get( 2 ) );
- assertEquals( bob1.getObject(),
- results.get( 3 ) );
- serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ baos = new ByteArrayOutputStream();
+ marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos, marshaller );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
// now recreate the rulebase, deserialize the session and test it
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
- results = (List) session.getGlobal( "results" );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ results.clear();
+ session.setGlobal( "results", results );
// CASE 1: remove rule
ruleBase.removeRule("org.drools.test", "like stilton");
@@ -816,18 +850,19 @@
InternalFactHandle bob4 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
session.fireAllRules();
- assertEquals( 6,
+ assertEquals( 2,
results.size() );
assertEquals( bob4.getObject(),
- results.get( 4 ) );
+ results.get( 0 ) );
assertEquals( bob3.getObject(),
- results.get( 5 ) );
+ results.get( 1 ) );
// now recreate the rulebase, deserialize the session and test it
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) );
- results = (List) session.getGlobal( "results" );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller );
+ results.clear();
+ session.setGlobal( "results", results );
// CASE 2: remove pkg
ruleBase.removePackage("org.drools.test");
@@ -838,23 +873,26 @@
InternalFactHandle bob6 = (InternalFactHandle) session.insert( new Person( "bob", 30 ) );
session.fireAllRules();
- assertEquals( 6,
+ assertEquals( 2,
results.size() );
assertEquals( bob6.getObject(),
- results.get( 4 ) );
+ results.get( 0 ) );
assertEquals( bob5.getObject(),
- results.get( 5 ) );
+ results.get( 1 ) );
- serializedSession = null;
+ byte[] serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ baos = new ByteArrayOutputStream();
+ marshaller = new Marshaller();
+ ruleBase.writeStatefulSession( session, baos,marshaller );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
// Deserialize the rulebase and the session
ruleBase = (RuleBase) DroolsStreamUtils.streamIn( serializedRulebase );
- session = ruleBase.newStatefulSession( new ByteArrayInputStream( serializedSession ) ); // throws java.lang.ClassNotFoundException Exception
- results = (List) session.getGlobal( "results" );
+ session = ruleBase.readStatefulSession( new ByteArrayInputStream( baos.toByteArray() ), marshaller ); // throws java.lang.ClassNotFoundException Exception
+ results.clear();
+ session.setGlobal( "results", results );
InternalFactHandle stilton5 = (InternalFactHandle) session.insert( new Cheese( "stilton", 30 ) );
InternalFactHandle brie5 = (InternalFactHandle) session.insert( new Cheese( "brie", 30 ) );
@@ -862,22 +900,22 @@
InternalFactHandle bob8 = (InternalFactHandle) session.insert( new Person( "bob", 40 ) );
session.fireAllRules();
- assertEquals( 8,
+ assertEquals( 2,
results.size() );
assertEquals( bob8.getObject(),
- results.get( 6 ) );
+ results.get( 0 ) );
assertEquals( bob7.getObject(),
- results.get( 7 ) );
+ results.get( 1 ) );
serializedSession = null;
serializedRulebase = null;
- serializedSession = DroolsStreamUtils.streamOut( session );
+ session = SerializationHelper.getSerialisedStatefulSession( session, ruleBase );
serializedRulebase = DroolsStreamUtils.streamOut( ruleBase );
session.dispose();
- }
+ }
/**
* In this case we are dealing with facts which are not on the systems classpath.
@@ -886,7 +924,7 @@
public void testSerializabilityWithJarFacts() throws Exception {
MapBackedClassLoader loader = new MapBackedClassLoader( this.getClass().getClassLoader() );
- JarInputStream jis = new JarInputStream(this.getClass().getResourceAsStream("/billasurf.jar"));
+ JarInputStream jis = new JarInputStream( this.getClass().getResourceAsStream( "/billasurf.jar" ) );
JarEntry entry = null;
byte[] buf = new byte[1024];
@@ -895,26 +933,28 @@
if ( !entry.isDirectory() ) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
while ( (len = jis.read( buf )) >= 0 ) {
- out.write( buf, 0, len );
+ out.write( buf,
+ 0,
+ len );
}
- loader.addResource( entry.getName() , out.toByteArray() );
+ loader.addResource( entry.getName(),
+ out.toByteArray() );
}
}
- String drl = "package foo.bar \n" +
- "import com.billasurf.Board\n" +
- "rule 'MyGoodRule' \n dialect 'mvel' \n when Board() then System.err.println(42); \n end\n";
+ String drl = "package foo.bar \n" + "import com.billasurf.Board\n" + "rule 'MyGoodRule' \n dialect 'mvel' \n when Board() then System.err.println(42); \n end\n";
- PackageBuilder builder = new PackageBuilder(new PackageBuilderConfiguration(loader));
- builder.addPackageFromDrl(new StringReader(drl));
- assertFalse(builder.hasErrors());
+ PackageBuilder builder = new PackageBuilder( new PackageBuilderConfiguration( loader ) );
+ builder.addPackageFromDrl( new StringReader( drl ) );
+ assertFalse( builder.hasErrors() );
Package p = builder.getPackage();
- byte[] ser = DroolsStreamUtils.streamOut(p);
+ byte[] ser = DroolsStreamUtils.streamOut( p );
//now read it back
- Package p_ = (Package) DroolsStreamUtils.streamIn(ser, loader);
- assertNotNull(p_);
+ Package p_ = (Package) DroolsStreamUtils.streamIn( ser,
+ loader );
+ assertNotNull( p_ );
}
@@ -925,10 +965,10 @@
}
protected RuleBase getRuleBase(Package pkg) throws Exception {
- RuleBase ruleBase = getRuleBase();
+ RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage(pkg);
- return SerializationHelper.serializeObject(ruleBase);
+ ruleBase.addPackage( pkg );
+ return SerializationHelper.serializeObject( ruleBase );
}
protected RuleBase getRuleBase(final RuleBaseConfiguration config) throws Exception {
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-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -147,18 +147,19 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final Cheese cheese = new Cheese( "stilton",
15 );
- workingMemory.insert( cheese );
+ session.insert( cheese );
List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session.setGlobal( "list",
+ list );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
- list = (List)workingMemory.getGlobal("list");
+ list = (List) session.getGlobal( "list" );
assertEquals( 4,
list.size() );
@@ -179,49 +180,40 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
// will test serialisation of int and typesafe enums tests
- workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( DroolsStreamUtils.streamOut( workingMemory )) );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
final Cheesery cheesery1 = new Cheesery();
cheesery1.setStatus( Cheesery.SELLING_CHEESE );
cheesery1.setMaturity( Maturity.OLD );
- workingMemory.insert( cheesery1 );
+ session.insert( cheesery1 );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
final Cheesery cheesery2 = new Cheesery();
cheesery2.setStatus( Cheesery.MAKING_CHEESE );
cheesery2.setMaturity( Maturity.YOUNG );
- workingMemory.insert( cheesery2 );
+ session.insert( cheesery2 );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
- workingMemory.fireAllRules();
+ session.fireAllRules();
assertEquals( 2,
list.size() );
- assertSame( cheesery1, list.get( 0 ) );
assertEquals( cheesery1,
list.get( 0 ) );
- assertSame( cheesery2, list.get( 1 ) );
assertEquals( cheesery2,
list.get( 1 ) );
-
- // test list after serialising
- workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( DroolsStreamUtils.streamOut( workingMemory )) );
- list = (List) workingMemory.getGlobal( "list" );
- workingMemory.fireAllRules();
-
- assertEquals(2, list.size());
-
- assertNotSame( cheesery1, list.get( 0 ) );
- assertEquals(cheesery1, list.get(0));
- assertNotSame( cheesery2, list.get( 1 ) );
- assertEquals(cheesery2, list.get(1));
}
public void testPrimitiveArray() throws Exception {
@@ -231,22 +223,23 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
List result = new ArrayList();
- workingMemory.setGlobal( "result",
- result );
+ session.setGlobal( "result",
+ result );
final Primitives p1 = new Primitives();
p1.setPrimitiveArrayAttribute( new int[]{1, 2, 3} );
p1.setArrayAttribute( new String[]{"a", "b"} );
- workingMemory.insert( p1 );
+ session.insert( p1 );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- result = (List) workingMemory.getGlobal( "result" );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ result = (List) session.getGlobal( "result" );
- workingMemory.fireAllRules();
+ session.fireAllRules();
assertEquals( 3,
result.size() );
assertEquals( 3,
@@ -264,15 +257,16 @@
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "MVEL_soundex.drl" ) );
RuleBase ruleBase = loadRuleBase( reader );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory = SerializationHelper.serializeObject(workingMemory);
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
Cheese c = new Cheese( "fubar",
2 );
- workingMemory.insert( c );
- workingMemory.fireAllRules();
+ session.insert( c );
+ session.fireAllRules();
assertEquals( 42,
c.getPrice() );
}
@@ -285,25 +279,26 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
- workingMemory.setGlobal( "string",
- "stilton" );
+ session.setGlobal( "string",
+ "stilton" );
final Cheese stilton = new Cheese( "stilton",
5 );
- workingMemory.insert( stilton );
+ session.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( new Integer( 5 ),
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testGlobals2() throws Exception {
@@ -314,65 +309,53 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List results = new ArrayList();
- workingMemory.setGlobal( "results",
- results );
+ session.setGlobal( "results",
+ results );
final List cheeseTypes = new ArrayList();
- workingMemory.setGlobal( "cheeseTypes",
- cheeseTypes );
+ session.setGlobal( "cheeseTypes",
+ cheeseTypes );
cheeseTypes.add( "stilton" );
cheeseTypes.add( "muzzarela" );
final Cheese stilton = new Cheese( "stilton",
5 );
- workingMemory.insert( stilton );
+ session.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 1,
- ((List)workingMemory.getGlobal("results")).size() );
+ ((List) session.getGlobal( "results" )).size() );
assertEquals( "memberOf",
- ((List)workingMemory.getGlobal("results")).get( 0 ) );
+ ((List) session.getGlobal( "results" )).get( 0 ) );
final Cheese brie = new Cheese( "brie",
5 );
- workingMemory.insert( brie );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session.insert( brie );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 2,
- ((List)workingMemory.getGlobal("results")).size() );
+ ((List) session.getGlobal( "results" )).size() );
assertEquals( "not memberOf",
- ((List)workingMemory.getGlobal("results")).get( 1 ) );
+ ((List) session.getGlobal( "results" )).get( 1 ) );
}
public void testGlobalMerge() throws Exception {
// from JBRULES-1512
- String rule1 = "package com.sample\n" +
- "rule \"rule 1\"\n" +
- " salience 10\n"+
- " when\n" +
- " l : java.util.List()\n" +
- " then\n" +
- " l.add( \"rule 1 executed\" );\n" +
- "end\n";
+ String rule1 = "package com.sample\n" + "rule \"rule 1\"\n" + " salience 10\n" + " when\n" + " l : java.util.List()\n" + " then\n" + " l.add( \"rule 1 executed\" );\n" + "end\n";
- String rule2 = "package com.sample\n" +
- "global String str;\n" +
- "rule \"rule 2\"\n" +
- " when\n" +
- " l : java.util.List()\n" +
- " then\n" +
- " l.add( \"rule 2 executed \" + str);\n" +
- "end\n";
+ String rule2 = "package com.sample\n" + "global String str;\n" + "rule \"rule 2\"\n" + " when\n" + " l : java.util.List()\n" + " then\n" + " l.add( \"rule 2 executed \" + str);\n" + "end\n";
PackageBuilder builder1 = new PackageBuilder();
- builder1.addPackageFromDrl( new StringReader( rule1 ));
+ builder1.addPackageFromDrl( new StringReader( rule1 ) );
Package pkg1 = builder1.getPackage();
// build second package
PackageBuilder builder2 = new PackageBuilder();
@@ -380,16 +363,19 @@
Package pkg2 = builder2.getPackage();
// create rule base and add both packages
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage(pkg1);
- ruleBase.addPackage(pkg2);
+ ruleBase.addPackage( pkg1 );
+ ruleBase.addPackage( pkg2 );
WorkingMemory wm = ruleBase.newStatefulSession();
- wm.setGlobal( "str", "boo" );
+ wm.setGlobal( "str",
+ "boo" );
List list = new ArrayList();
- wm.insert( list );
+ wm.insert( list );
wm.fireAllRules();
- assertEquals( "rule 1 executed", list.get( 0 ) );
- assertEquals( "rule 2 executed boo", list.get( 1 ));
+ assertEquals( "rule 1 executed",
+ list.get( 0 ) );
+ assertEquals( "rule 2 executed boo",
+ list.get( 1 ) );
}
public void testCustomGlobalResolver() throws Exception {
@@ -399,7 +385,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Map map = new HashMap();
@@ -412,7 +398,8 @@
string );
workingMemory.setGlobalResolver( new GlobalResolver() {
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -449,7 +436,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Map map = new HashMap();
@@ -472,7 +459,8 @@
value );
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
}
public void writeExternal(ObjectOutput out) throws IOException {
@@ -515,46 +503,50 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory wm = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
- wm.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
final TestParam tp1 = new TestParam();
tp1.setValue2( "boo" );
- wm.insert( tp1 );
+ session.insert( tp1 );
- wm = SerializationHelper.serializeObject(wm);
- wm.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
- assertEquals( 1, ((List)wm.getGlobal("list")).size() );
+ assertEquals( 1,
+ ((List) session.getGlobal( "list" )).size() );
}
public void testGeneratedBeans() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_GeneratedBeans.drl" ) ) );
- assertFalse("" + builder.getErrors(), builder.hasErrors());
+ assertFalse( "" + builder.getErrors(),
+ builder.hasErrors() );
Package p = builder.getPackage();
- assertEquals(2, p.getRules().length);
+ assertEquals( 2,
+ p.getRules().length );
//to test it we will generate another class that looks just like it
ClassBuilder cb = new ClassBuilder();
- ClassDefinition def = new ClassDefinition("org.drools.generatedbeans.Cheese");
- def.addField(new FieldDefinition("type", "java.lang.String"));
- byte[] classdata = cb.buildClass(def);
- MapBackedClassLoader cl = new MapBackedClassLoader(this.getClass().getClassLoader());
- cl.addClass("org.drools.generatedbeans.Cheese", classdata);
+ ClassDefinition def = new ClassDefinition( "org.drools.generatedbeans.Cheese" );
+ def.addField( new FieldDefinition( "type",
+ "java.lang.String" ) );
+ byte[] classdata = cb.buildClass( def );
+ MapBackedClassLoader cl = new MapBackedClassLoader( this.getClass().getClassLoader() );
+ cl.addClass( "org.drools.generatedbeans.Cheese",
+ classdata );
-
//this one doesn't work
- RuleBase ruleBase = RuleBaseFactory.newRuleBase(new RuleBaseConfiguration(cl));
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase( new RuleBaseConfiguration( cl ) );
-
//this one does work...
- ruleBase = RuleBaseFactory.newRuleBase(new RuleBaseConfiguration(p.getDialectDatas().getClassLoader()));
+ ruleBase = RuleBaseFactory.newRuleBase( new RuleBaseConfiguration( p.getDialectDatas().getClassLoader() ) );
ruleBase.addPackage( p );
@@ -562,24 +554,23 @@
//Class cc = cl.loadClass("org.drools.generatedbeans.Cheese");
//this one has an error with shadow proxies unless I use the same classloader as the package...
- Class cc = p.getDialectDatas().getClassLoader().loadClass("org.drools.generatedbeans.Cheese");
+ Class cc = p.getDialectDatas().getClassLoader().loadClass( "org.drools.generatedbeans.Cheese" );
Object cheese = cc.newInstance();
WorkingMemory wm = ruleBase.newStatefulSession();
List result = new ArrayList();
- wm.setGlobal("list", result);
+ wm.setGlobal( "list",
+ result );
- wm.insert(cheese);
+ wm.insert( cheese );
wm.fireAllRules();
- assertEquals(1, result.size());
- Integer r = (Integer) result.get(0);
- assertEquals(new Integer(5), r);
+ assertEquals( 1,
+ result.size() );
+ Integer r = (Integer) result.get( 0 );
+ assertEquals( new Integer( 5 ),
+ r );
-
-
-
-
}
public void testNullHandling() throws Exception {
@@ -590,32 +581,33 @@
// add the package to a rulebase
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
final Cheese nullCheese = new Cheese( null,
2 );
- workingMemory.insert( nullCheese );
+ session.insert( nullCheese );
final Person notNullPerson = new Person( "shoes butt back" );
notNullPerson.setBigDecimal( new BigDecimal( "42.42" ) );
- workingMemory.insert( notNullPerson );
+ session.insert( notNullPerson );
final Person nullPerson = new Person( "whee" );
nullPerson.setBigDecimal( null );
- workingMemory.insert( nullPerson );
+ session.insert( nullPerson );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
- System.out.println( ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
+ System.out.println( ((List) session.getGlobal( "list" )).get( 0 ) );
assertEquals( 3,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
}
@@ -627,7 +619,7 @@
// add the package to a rulebase
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
List list = new ArrayList();
@@ -636,13 +628,13 @@
workingMemory.insert( new Attribute() );
workingMemory.insert( new Message() );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
+ workingMemory = SerializationHelper.serializeObject( workingMemory );
workingMemory.fireAllRules();
assertEquals( 1,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) workingMemory.getGlobal( "list" )).size() );
assertEquals( "X",
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) workingMemory.getGlobal( "list" )).get( 0 ) );
}
@@ -655,23 +647,24 @@
// add the package to a rulebase
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
final Cheese stilton = new Cheese( "stilton",
5 );
- workingMemory.insert( stilton );
+ session.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 5,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
private RuleBase loadRuleBase(final Reader reader) throws IOException,
@@ -691,7 +684,7 @@
// add the package to a rulebase
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
// load up the rulebase
return ruleBase;
}
@@ -700,23 +693,24 @@
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_ExplicitAnd.drl" ) );
final RuleBase ruleBase = loadRuleBase( reader );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
- workingMemory.insert( new Message( "hola" ) );
+ session.setGlobal( "list",
+ list );
+ session.insert( new Message( "hola" ) );
- workingMemory.fireAllRules();
+ session.fireAllRules();
assertEquals( 0,
list.size() );
- workingMemory.insert( new Cheese( "brie",
- 33 ) );
+ session.insert( new Cheese( "brie",
+ 33 ) );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 1,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
}
public void testHelloWorld() throws Exception {
@@ -738,11 +732,11 @@
workingMemory.insert( message );
workingMemory.insert( "boo" );
-// workingMemory = SerializationHelper.serializeObject(workingMemory);
+ // workingMemory = SerializationHelper.serializeObject(workingMemory);
workingMemory.fireAllRules();
assertTrue( message.isFired() );
assertEquals( message,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) workingMemory.getGlobal( "list" )).get( 0 ) );
}
@@ -753,22 +747,23 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
final Cheese stilton = new Cheese( "stilton",
5 );
- workingMemory.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
+ session.insert( stilton );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
- workingMemory.fireAllRules();
+ session.fireAllRules();
assertEquals( "stilton",
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testLiteralWithBoolean() throws Exception {
@@ -778,24 +773,25 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
final PersonInterface bill = new Person( "bill",
null,
12 );
bill.setAlive( true );
- workingMemory.insert( bill );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
+ session.insert( bill );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
- workingMemory.fireAllRules();
+ session.fireAllRules();
assertEquals( bill,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testFactBindings() throws Exception {
@@ -806,7 +802,7 @@
// add the package to a rulebase
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List events = new ArrayList();
@@ -851,7 +847,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -864,61 +860,62 @@
"stilton" );
stilton.setFieldValue( "price",
new Integer( 100 ) );
- InternalFactHandle stiltonHandle = ( InternalFactHandle ) workingMemory.insert( stilton );
+ InternalFactHandle stiltonHandle = (InternalFactHandle) workingMemory.insert( stilton );
// TODO does not work for facts now. adding equals(object) to it.
-// workingMemory = SerializationHelper.serializeObject(workingMemory);
+ // workingMemory = SerializationHelper.serializeObject(workingMemory);
workingMemory.fireAllRules();
assertEquals( 1,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) workingMemory.getGlobal( "list" )).size() );
assertEquals( stilton,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
- final Fact fact = (Fact) ((List)workingMemory.getGlobal("list")).get( 0 );
+ ((List) workingMemory.getGlobal( "list" )).get( 0 ) );
+ final Fact fact = (Fact) ((List) workingMemory.getGlobal( "list" )).get( 0 );
assertEquals( stilton,
- fact );
+ fact );
assertEquals( new Integer( 200 ),
fact.getFieldValue( "price" ) );
- assertEquals( -1, stiltonHandle.getId() );
+ assertEquals( -1,
+ stiltonHandle.getId() );
}
public void testFactTemplateFieldBinding() throws Exception {
// from JBRULES-1512
- String rule1 = "package org.drools.entity\n" +
- " global java.util.List list\n" +
- "template Settlement\n" +
- " String InstrumentType\n" +
- " String InstrumentName\n" +
- "end\n" +
- "rule TestEntity\n" +
+ String rule1 = "package org.drools.entity\n";
+ rule1 += " global java.util.List list\n";
+ rule1 += "template Settlement\n";
+ rule1 += " String InstrumentType\n";
+ rule1 += " String InstrumentName\n";
+ rule1 += "end\n" + "rule TestEntity\n";
+ rule1 += " when\n";
+ rule1 += " Settlement(InstrumentType == \"guitar\", name : InstrumentName)\n";
+ rule1 += " then \n";
+ rule1 += " list.add( name ) ;\n";
+ rule1 += "end\n";
- " when\n" +
- " Settlement(InstrumentType == \"guitar\", name : InstrumentName)\n" +
- " then \n" +
- " list.add( name ) ;\n" +
- "end\n";
-
PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( rule1 ));
+ builder.addPackageFromDrl( new StringReader( rule1 ) );
Package pkg = builder.getPackage();
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage(pkg);
+ ruleBase.addPackage( pkg );
WorkingMemory wm = ruleBase.newStatefulSession();
List list = new ArrayList();
- wm.setGlobal( "list", list );
+ wm.setGlobal( "list",
+ list );
final FactTemplate cheese = pkg.getFactTemplate( "Settlement" );
final Fact guitar = cheese.createFact( 0 );
guitar.setFieldValue( "InstrumentType",
- "guitar" );
+ "guitar" );
guitar.setFieldValue( "InstrumentName",
- "gibson" );
+ "gibson" );
wm.insert( guitar );
wm.fireAllRules();
- assertEquals( "gibson", list.get( 0 ) );
+ assertEquals( "gibson",
+ list.get( 0 ) );
}
public void testPropertyChangeSupport() throws Exception {
@@ -928,34 +925,36 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
+ session.setGlobal( "list",
+ list );
final State state = new State( "initial" );
- workingMemory.insert( state,
- true );
- workingMemory.fireAllRules();
+ session.insert( state,
+ true );
+ session.fireAllRules();
assertEquals( 1,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
state.setFlag( true );
assertEquals( 1,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
- workingMemory.fireAllRules();
+ session.fireAllRules();
assertEquals( 2,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
state.setState( "finished" );
-// workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 3,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
}
@@ -967,11 +966,11 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final PersonInterface bill = new Person( "bill",
@@ -984,41 +983,45 @@
13 );
ben.setBigDecimal( new BigDecimal( "43" ) );
- workingMemory.insert( bill );
- workingMemory.insert( ben );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session.insert( bill );
+ session.insert( ben );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 1,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
}
- public void testBigDecimalIntegerLiteral() throws Exception {
+ public void testBigDecimalIntegerLiteral() throws Exception {
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl(new InputStreamReader(getClass()
- .getResourceAsStream("big_decimal_and_literal.drl")));
- final Package pkg = builder.getPackage();
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "big_decimal_and_literal.drl" ) ) );
+ final Package pkg = builder.getPackage();
- final RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage(pkg);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ StatefulSession session = ruleBase.newStatefulSession();
- final List list = new ArrayList();
- workingMemory.setGlobal("list", list);
+ final List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
- final PersonInterface bill = new Person("bill", null, 12);
- bill.setBigDecimal(new BigDecimal("42"));
- bill.setBigInteger(new BigInteger("42"));
+ final PersonInterface bill = new Person( "bill",
+ null,
+ 12 );
+ bill.setBigDecimal( new BigDecimal( "42" ) );
+ bill.setBigInteger( new BigInteger( "42" ) );
- workingMemory.insert(bill);
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session.insert( bill );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
- assertEquals(6, ((List)workingMemory.getGlobal("list")).size());
- }
+ assertEquals( 6,
+ ((List) session.getGlobal( "list" )).size() );
+ }
-
// @FIXME
public void FIXME_testBigDecimalWithFromAndEval() throws Exception {
String rule = "package org.test;\n";
@@ -1069,13 +1072,14 @@
List list = new ArrayList();
session.setGlobal( "list",
list );
- session = SerializationHelper.serializeObject(session);
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
session.fireAllRules();
assertEquals( 1,
- ((List)session.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
assertEquals( "first",
- ((List)session.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testCell() throws Exception {
@@ -1087,14 +1091,15 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
- WorkingMemory memory = ruleBase.newStatefulSession();
- memory.insert( cell1 );
- memory.insert( cell );
- // TODO org.drools.spi.ConsequenceException: org.drools.FactException: Update error: handle not found for object: org.drools.Cell at 1654. Is it in the working memory?
-// memory = SerializationHelper.serializeObject(memory);
- memory.fireAllRules();
+ StatefulSession session = ruleBase.newStatefulSession();
+ session.insert( cell1 );
+ FactHandle cellHandle = session.insert( cell );
+
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 9,
cell.getValue() );
}
@@ -1141,12 +1146,13 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory memory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
- memory.insert( p );
- memory = SerializationHelper.serializeObject(memory);
- memory.fireAllRules();
+ session.insert( p );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
}
@@ -1157,17 +1163,17 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final Cheese cheddar = new Cheese( "cheddar",
5 );
- final FactHandle h = workingMemory.insert( cheddar );
+ final FactHandle h = session.insert( cheddar );
- workingMemory.fireAllRules();
+ session.fireAllRules();
// just one added
assertEquals( "got cheese",
@@ -1175,21 +1181,22 @@
assertEquals( 1,
list.size() );
- workingMemory.retract( h );
- workingMemory.fireAllRules();
+ session.retract( h );
+ session.fireAllRules();
// still just one
assertEquals( 1,
list.size() );
- workingMemory.insert( new Cheese( "stilton",
+ session.insert( new Cheese( "stilton",
5 ) );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
// now have one more
assertEquals( 2,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) session.getGlobal( "list" )).size() );
}
@@ -1200,14 +1207,15 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final Cheese stilton = new Cheese( "stinky",
5 );
- workingMemory.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- final QueryResults results = workingMemory.getQueryResults( "simple query" );
+ session.insert( stilton );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ final QueryResults results = session.getQueryResults( "simple query" );
assertEquals( 1,
results.size() );
}
@@ -1219,23 +1227,24 @@
final RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory.setGlobal( "five",
+ session.setGlobal( "five",
new Integer( 5 ) );
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final Cheese stilton = new Cheese( "stilton",
5 );
- workingMemory.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session.insert( stilton );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( stilton,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testJaninoEval() throws Exception {
@@ -1249,24 +1258,25 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory.setGlobal( "five",
+ session.setGlobal( "five",
new Integer( 5 ) );
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final Cheese stilton = new Cheese( "stilton",
5 );
- workingMemory.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session.insert( stilton );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( stilton,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testEvalMore() throws Exception {
@@ -1276,20 +1286,21 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final Person foo = new Person( "foo" );
- workingMemory.insert( foo );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session.insert( foo );
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( foo,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testReturnValue() throws Exception {
@@ -1299,32 +1310,33 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory.setGlobal( "two",
+ session.setGlobal( "two",
new Integer( 2 ) );
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final PersonInterface peter = new Person( "peter",
null,
12 );
- workingMemory.insert( peter );
+ session.insert( peter );
final PersonInterface jane = new Person( "jane",
null,
10 );
- workingMemory.insert( jane );
+ session.insert( jane );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
-
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
+
assertEquals( jane,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
assertEquals( peter,
- ((List)workingMemory.getGlobal("list")).get( 1 ) );
+ ((List) session.getGlobal( "list" )).get( 1 ) );
}
public void testPredicate() throws Exception {
@@ -1334,32 +1346,33 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
- workingMemory.setGlobal( "two",
+ session.setGlobal( "two",
new Integer( 2 ) );
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final PersonInterface peter = new Person( "peter",
null,
12 );
- workingMemory.insert( peter );
+ session.insert( peter );
final PersonInterface jane = new Person( "jane",
null,
10 );
- workingMemory.insert( jane );
+ session.insert( jane );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( jane,
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
assertEquals( peter,
- ((List)workingMemory.getGlobal("list")).get( 1 ) );
+ ((List) session.getGlobal( "list" )).get( 1 ) );
}
public void testNullBehaviour() throws Exception {
@@ -1369,8 +1382,8 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final PersonInterface p1 = new Person( "michael",
"food",
@@ -1378,11 +1391,12 @@
final PersonInterface p2 = new Person( null,
"drink",
30 );
- workingMemory.insert( p1 );
- workingMemory.insert( p2 );
+ session.insert( p1 );
+ session.insert( p2 );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
}
public void testNullConstraint() throws Exception {
@@ -1392,10 +1406,10 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List foo = new ArrayList();
- workingMemory.setGlobal( "messages",
+ session.setGlobal( "messages",
foo );
final PersonInterface p1 = new Person( null,
@@ -1404,13 +1418,14 @@
final Primitives p2 = new Primitives();
p2.setArrayAttribute( null );
- workingMemory.insert( p1 );
- workingMemory.insert( p2 );
+ session.insert( p1 );
+ session.insert( p2 );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( 2,
- ((List)workingMemory.getGlobal("messages")).size() );
+ ((List) session.getGlobal( "messages" )).size() );
}
@@ -1421,7 +1436,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list1 = new ArrayList();
@@ -1449,32 +1464,32 @@
workingMemory.insert( p );
// TODO - can not serializing rule with basic from: java.io.EOFException.
-// workingMemory = SerializationHelper.serializeObject(workingMemory);
+ // workingMemory = SerializationHelper.serializeObject(workingMemory);
workingMemory.fireAllRules();
-// workingMemory = SerializationHelper.serializeObject(workingMemory);
+ // workingMemory = SerializationHelper.serializeObject(workingMemory);
workingMemory.fireAllRules();
// from using a global
assertEquals( 2,
- ((List)workingMemory.getGlobal("list1")).size() );
+ ((List) workingMemory.getGlobal( "list1" )).size() );
assertEquals( cheddar,
- ((List)workingMemory.getGlobal("list1")).get( 0 ) );
+ ((List) workingMemory.getGlobal( "list1" )).get( 0 ) );
assertEquals( stilton,
- ((List)workingMemory.getGlobal("list1")).get( 1 ) );
+ ((List) workingMemory.getGlobal( "list1" )).get( 1 ) );
// from using a declaration
assertEquals( 2,
- ((List)workingMemory.getGlobal("list2")).size() );
+ ((List) workingMemory.getGlobal( "list2" )).size() );
assertEquals( cheddar,
- ((List)workingMemory.getGlobal("list2")).get( 0 ) );
+ ((List) workingMemory.getGlobal( "list2" )).get( 0 ) );
assertEquals( stilton,
- ((List)workingMemory.getGlobal("list2")).get( 1 ) );
+ ((List) workingMemory.getGlobal( "list2" )).get( 1 ) );
// from using a declaration
assertEquals( 1,
- ((List)workingMemory.getGlobal("list3")).size() );
+ ((List) workingMemory.getGlobal( "list3" )).size() );
assertEquals( stilton,
- ((List)workingMemory.getGlobal("list3")).get( 0 ) );
+ ((List) workingMemory.getGlobal( "list3" )).get( 0 ) );
}
public void testFromWithParams() throws Exception {
@@ -1484,7 +1499,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
List list = new ArrayList();
@@ -1500,13 +1515,13 @@
workingMemory.insert( bob );
// TODO java.io.NotSerializableException: org.mvel.util.FastList
-// workingMemory = SerializationHelper.serializeObject(workingMemory);
+ // workingMemory = SerializationHelper.serializeObject(workingMemory);
workingMemory.fireAllRules();
assertEquals( 6,
- ((List)workingMemory.getGlobal("list")).size() );
+ ((List) workingMemory.getGlobal( "list" )).size() );
- final List array = (List) ((List)workingMemory.getGlobal("list")).get( 0 );
+ final List array = (List) ((List) workingMemory.getGlobal( "list" )).get( 0 );
assertEquals( 3,
array.size() );
final Person p = (Person) array.get( 0 );
@@ -1522,7 +1537,7 @@
assertEquals( "y",
nested.get( 1 ) );
- final Map map = (Map) ((List)workingMemory.getGlobal("list")).get( 1 );
+ final Map map = (Map) ((List) workingMemory.getGlobal( "list" )).get( 1 );
assertEquals( 2,
map.keySet().size() );
@@ -1539,13 +1554,13 @@
nestedMap.get( "key2" ) );
assertEquals( new Integer( 42 ),
- ((List)workingMemory.getGlobal("list")).get( 2 ) );
+ ((List) workingMemory.getGlobal( "list" )).get( 2 ) );
assertEquals( "literal",
- ((List)workingMemory.getGlobal("list")).get( 3 ) );
+ ((List) workingMemory.getGlobal( "list" )).get( 3 ) );
assertEquals( bob,
- ((List)workingMemory.getGlobal("list")).get( 4 ) );
+ ((List) workingMemory.getGlobal( "list" )).get( 4 ) );
assertEquals( globalObject,
- ((List)workingMemory.getGlobal("list")).get( 5 ) );
+ ((List) workingMemory.getGlobal( "list" )).get( 5 ) );
}
public void testFromWithNewConstructor() throws Exception {
@@ -1555,7 +1570,7 @@
builder.addPackage( descr );
Package pkg = builder.getPackage();
pkg.checkValidity();
- pkg = SerializationHelper.serializeObject(pkg);
+ pkg = SerializationHelper.serializeObject( pkg );
}
/**
@@ -1575,29 +1590,33 @@
rule += "end";
final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( rule ));
+ builder.addPackageFromDrl( new StringReader( rule ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage(pkg);
+ ruleBase.addPackage( pkg );
StatefulSession session = ruleBase.newStatefulSession();
WorkingMemoryInMemoryLogger logger = new WorkingMemoryInMemoryLogger( session );
List list = new ArrayList();
- session.setGlobal( "list", list );
+ session.setGlobal( "list",
+ list );
Cheesery cheesery = new Cheesery();
- cheesery.addCheese( new Cheese("stilton", 22) );
+ cheesery.addCheese( new Cheese( "stilton",
+ 22 ) );
session.insert( cheesery );
// TODO java.io.EOFException
-// session = SerializationHelper.serializeObject(session);
+ // session = SerializationHelper.serializeObject(session);
session.fireAllRules();
- assertEquals( 1, ((List)session.getGlobal("list")).size());
- assertEquals( "stilton", ((List)session.getGlobal("list")).get(0));
-}
+ assertEquals( 1,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( "stilton",
+ ((List) session.getGlobal( "list" )).get( 0 ) );
+ }
public void testWithInvalidRule() throws Exception {
final PackageBuilder builder = new PackageBuilder();
@@ -1617,7 +1636,7 @@
assertNotNull( e.getMessage() );
runtime = e;
}
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
assertTrue( builder.getErrors().getErrors().length > 0 );
final String pretty = builder.getErrors().toString();
@@ -1680,22 +1699,23 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
- WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
- workingMemory.setGlobal( "list",
+ session.setGlobal( "list",
list );
final Cheese stilton = new Cheese( "stilton",
5 );
- workingMemory.insert( stilton );
+ session.insert( stilton );
- workingMemory = SerializationHelper.serializeObject(workingMemory);
- workingMemory.fireAllRules();
+ session = SerializationHelper.getSerialisedStatefulSession( session,
+ ruleBase );
+ session.fireAllRules();
assertEquals( new Integer( 5 ),
- ((List)workingMemory.getGlobal("list")).get( 0 ) );
+ ((List) session.getGlobal( "list" )).get( 0 ) );
}
public void testAssertRetract() throws Exception {
@@ -1706,7 +1726,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -1719,16 +1739,16 @@
workingMemory.insert( person );
// TODO org.drools.spi.ConsequenceException: org.drools.FactException: Update error: handle not found for object:
-// workingMemory = SerializationHelper.serializeObject(workingMemory);
+ // workingMemory = SerializationHelper.serializeObject(workingMemory);
workingMemory.fireAllRules();
assertEquals( 5,
- ((List)workingMemory.getGlobal("list")).size() );
- assertTrue( ((List)workingMemory.getGlobal("list")).contains( "first" ) );
- assertTrue( ((List)workingMemory.getGlobal("list")).contains( "second" ) );
- assertTrue( ((List)workingMemory.getGlobal("list")).contains( "third" ) );
- assertTrue( ((List)workingMemory.getGlobal("list")).contains( "fourth" ) );
- assertTrue( ((List)workingMemory.getGlobal("list")).contains( "fifth" ) );
+ ((List) workingMemory.getGlobal( "list" )).size() );
+ assertTrue( ((List) workingMemory.getGlobal( "list" )).contains( "first" ) );
+ assertTrue( ((List) workingMemory.getGlobal( "list" )).contains( "second" ) );
+ assertTrue( ((List) workingMemory.getGlobal( "list" )).contains( "third" ) );
+ assertTrue( ((List) workingMemory.getGlobal( "list" )).contains( "fourth" ) );
+ assertTrue( ((List) workingMemory.getGlobal( "list" )).contains( "fifth" ) );
}
@@ -1739,7 +1759,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese mussarela = new Cheese( "Mussarela",
@@ -1792,7 +1812,7 @@
RuleBase ruleBase = getRuleBase( conf );
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese brie = new Cheese( "brie",
@@ -1801,7 +1821,7 @@
workingMemory.fireAllRules();
- assertTrue( ((CustomConsequenceExceptionHandler)((ReteooRuleBase)ruleBase).getConfiguration().getConsequenceExceptionHandler()).isCalled() );
+ assertTrue( ((CustomConsequenceExceptionHandler) ((ReteooRuleBase) ruleBase).getConfiguration().getConsequenceExceptionHandler()).isCalled() );
}
public static class CustomConsequenceExceptionHandler
@@ -1820,12 +1840,13 @@
return this.called;
}
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- called = in.readBoolean();
+ public void readExternal(ObjectInput in) throws IOException,
+ ClassNotFoundException {
+ called = in.readBoolean();
}
public void writeExternal(ObjectOutput out) throws IOException {
- out.writeBoolean(called);
+ out.writeBoolean( called );
}
}
@@ -1836,7 +1857,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese brie = new Cheese( "brie",
@@ -1859,7 +1880,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese brie = new Cheese( "brie",
@@ -1882,7 +1903,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese brie = new Cheese( "brie",
@@ -1905,7 +1926,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese brie = new Cheese( "brie",
@@ -1927,7 +1948,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list1 = new ArrayList();
@@ -2004,7 +2025,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
WorkingMemory workingMemory = ruleBase.newStatefulSession();
List list = new ArrayList();
@@ -2089,7 +2110,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -2124,7 +2145,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DuplicateRuleName2.drl" ) ) );
@@ -2144,7 +2165,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg1 );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
// Adding person with null name and likes attributes
@@ -2175,7 +2196,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -2195,7 +2216,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -2216,7 +2237,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -2249,7 +2270,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg1 );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( workingMemory );
logger.setFileName( "log_20080401" );
@@ -2287,7 +2308,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
workingMemory.fireAllRules();
@@ -2305,7 +2326,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
workingMemory.fireAllRules();
@@ -2347,7 +2368,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Cheese stilton = new Cheese( "stinky",
@@ -2489,7 +2510,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Person p1 = new Person( "p1",
@@ -2575,7 +2596,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -2600,7 +2621,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List matchlist = new ArrayList();
@@ -2642,7 +2663,7 @@
RuleBase ruleBase = getRuleBase( config );
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List sensors = new ArrayList();
@@ -2673,7 +2694,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
Assert.fail( "Should have thrown an InvalidRulePackage" );
} catch ( final InvalidRulePackage e ) {
@@ -2692,7 +2713,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -2729,7 +2750,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
fail( "Should have trown an exception" );
} catch ( final InvalidRulePackage e ) {
@@ -2747,7 +2768,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory wm = ruleBase.newStatefulSession();
@@ -2777,7 +2798,7 @@
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ImportConflict.drl" ) ) );
final Package pkg = builder.getPackage();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
}
public void testEmptyIdentifier() throws Exception {
@@ -2787,7 +2808,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List result = new ArrayList();
workingMemory.setGlobal( "results",
@@ -2812,7 +2833,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final Map result = new HashMap();
workingMemory.setGlobal( "results",
@@ -2870,7 +2891,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
workingMemory.insert( new Child( "gp" ) );
@@ -2885,7 +2906,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -2923,7 +2944,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -2981,7 +3002,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3011,7 +3032,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory wm = ruleBase.newStatefulSession();
final List agendaList = new ArrayList();
@@ -3101,7 +3122,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3126,7 +3147,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
workingMemory.setGlobal( "value",
@@ -3142,7 +3163,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3181,7 +3202,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3210,7 +3231,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3244,7 +3265,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3271,7 +3292,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final AbstractWorkingMemory workingMemory = (AbstractWorkingMemory) ruleBase.newStatefulSession();
final Cheese stilton = new Cheese( "stilton",
@@ -3303,7 +3324,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3366,7 +3387,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3424,7 +3445,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3485,7 +3506,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3515,7 +3536,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3586,7 +3607,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3618,7 +3639,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3643,7 +3664,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3695,7 +3716,7 @@
conf.setAssertBehaviour( RuleBaseConfiguration.AssertBehaviour.EQUALITY );
RuleBase ruleBase = getRuleBase( conf );
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3724,7 +3745,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3764,7 +3785,7 @@
conf.setShareAlphaNodes( false );
RuleBase ruleBase = getRuleBase( conf );
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3797,7 +3818,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3823,7 +3844,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -3846,7 +3867,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3896,7 +3917,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg1 );
ruleBase.addPackage( pkg2 );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -3961,7 +3982,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg1 );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4004,7 +4025,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4031,7 +4052,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4064,7 +4085,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4091,7 +4112,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4205,7 +4226,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4242,7 +4263,7 @@
conf.setShadowProxy( true );
RuleBase rb = RuleBaseFactory.newRuleBase( conf );
rb.addPackage( builder.getPackage() );
- rb = SerializationHelper.serializeObject(rb);
+ rb = SerializationHelper.serializeObject( rb );
StatefulSession session = rb.newStatefulSession();
List list1 = new ArrayList();
@@ -4303,7 +4324,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4333,7 +4354,7 @@
conf.setSequential( true );
RuleBase ruleBase = getRuleBase( conf );
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
StatelessSession session = ruleBase.newStatelessSession();
List list = new ArrayList();
@@ -4352,7 +4373,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
@@ -4386,7 +4407,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -4491,7 +4512,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
ruleBase.addPackage( pkg2 );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
@@ -4510,7 +4531,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4534,7 +4555,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List results = new ArrayList();
@@ -4592,7 +4613,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
workingMemory.fireAllRules();
@@ -4614,7 +4635,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
@@ -4673,7 +4694,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory wm = ruleBase.newStatefulSession();
@@ -4704,7 +4725,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
@@ -4770,7 +4791,7 @@
try {
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
} catch ( Exception e ) {
e.printStackTrace();
fail( "Should not raise any exception!" );
@@ -4784,7 +4805,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( builder.getPackage() );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
@@ -4820,7 +4841,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -4862,7 +4883,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -4907,7 +4928,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -4966,7 +4987,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -4994,7 +5015,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -5073,7 +5094,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -5107,7 +5128,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -5132,7 +5153,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -5158,7 +5179,7 @@
conf.setAssertBehaviour( RuleBaseConfiguration.AssertBehaviour.EQUALITY );
RuleBase ruleBase = RuleBaseFactory.newRuleBase( conf );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final StatefulSession session = ruleBase.newStatefulSession();
CheeseEqual cheese = new CheeseEqual( "stilton",
@@ -5174,7 +5195,7 @@
conf.setAssertBehaviour( RuleBaseConfiguration.AssertBehaviour.IDENTITY );
RuleBase ruleBase = RuleBaseFactory.newRuleBase( conf );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final StatefulSession session = ruleBase.newStatefulSession();
CheeseEqual cheese = new CheeseEqual( "stilton",
@@ -5194,7 +5215,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final WorkingMemory workingMemory = ruleBase.newStatefulSession();
final List list = new ArrayList();
@@ -5219,7 +5240,7 @@
RuleBase ruleBase = getRuleBase();
ruleBase.addPackage( pkg );
- ruleBase = SerializationHelper.serializeObject(ruleBase);
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
final StatefulSession session = ruleBase.newStatefulSession();
final List list = new ArrayList();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SerializationHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SerializationHelper.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/SerializationHelper.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -1,18 +1,102 @@
package org.drools.integrationtests;
+import org.drools.RuleBase;
+import org.drools.StatefulSession;
+import org.drools.marshalling.Marshaller;
+import org.drools.reteoo.ReteooRuleBase;
import org.drools.util.DroolsStreamUtils;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* Marshalling helper class to perform serialize/de-serialize a given object
*/
public class SerializationHelper {
- public static <T> T serializeObject(T obj) throws IOException, ClassNotFoundException {
- return serializeObject(obj, null);
+ public static <T> T serializeObject(T obj) throws IOException,
+ ClassNotFoundException {
+ return serializeObject( obj,
+ null );
}
- public static <T> T serializeObject(T obj, ClassLoader classLoader) throws IOException, ClassNotFoundException {
- return (T)DroolsStreamUtils.streamIn(DroolsStreamUtils.streamOut(obj), classLoader);
+ public static <T> T serializeObject(T obj,
+ ClassLoader classLoader) throws IOException,
+ ClassNotFoundException {
+ return (T) DroolsStreamUtils.streamIn( DroolsStreamUtils.streamOut( obj ),
+ classLoader );
}
+
+ public static StatefulSession getSerialisedStatefulSession(StatefulSession session) throws Exception {
+ return getSerialisedStatefulSession( session,
+ true );
+ }
+
+ public static StatefulSession getSerialisedStatefulSession(StatefulSession session,
+ RuleBase ruleBase) throws Exception {
+ return getSerialisedStatefulSession( session,
+ ruleBase,
+ true );
+ }
+
+ public static StatefulSession getSerialisedStatefulSession(StatefulSession session,
+ boolean dispose) throws Exception {
+ return getSerialisedStatefulSession( session,
+ session.getRuleBase(),
+ dispose );
+ }
+
+ public static StatefulSession getSerialisedStatefulSession(StatefulSession session,
+ RuleBase ruleBase,
+ boolean dispose) throws Exception {
+ Marshaller marshaller = new Marshaller();
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ruleBase.writeStatefulSession( session,
+ baos,
+ marshaller );
+
+ byte[] b1 = baos.toByteArray();
+ ByteArrayInputStream bais = new ByteArrayInputStream( b1 );
+ StatefulSession session2 = ruleBase.readStatefulSession( bais,
+ true,
+ marshaller );
+
+ // write methods allways needs a new marshaller for Identity strategies
+ marshaller = new Marshaller();
+ baos = new ByteArrayOutputStream();
+ ruleBase.writeStatefulSession( session2,
+ baos,
+ marshaller );
+
+ byte[] b2 = baos.toByteArray();
+ // bytes should be the same.
+ if ( !areByteArraysEqual( b1,
+ b2 ) ) {
+ assert false : "byte streams for serialisation test are not equal";
+ }
+
+ session2.setGlobalResolver( session.getGlobalResolver() );
+
+ if ( dispose ) {
+ session.dispose();
+ }
+
+ return session2;
+ }
+
+ public static boolean areByteArraysEqual(byte[] b1,
+ byte[] b2) {
+ if ( b1.length != b2.length ) {
+ return false;
+ }
+
+ for ( int i = 0, length = b1.length; i < length; i++ ) {
+ if ( b1[i] != b2[i] ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/persister/WorkingMemorySerialisationTest.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -2,6 +2,7 @@
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
+import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.io.StringReader;
@@ -13,6 +14,12 @@
import junit.framework.TestCase;
+import org.drools.Cell;
+import org.drools.Cheese;
+import org.drools.FactA;
+import org.drools.FactB;
+import org.drools.FactC;
+import org.drools.FactHandle;
import org.drools.Person;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
@@ -24,14 +31,130 @@
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalWorkingMemory;
import org.drools.compiler.PackageBuilder;
+import org.drools.integrationtests.SerializationHelper;
+import org.drools.marshalling.Marshaller;
+import org.drools.marshalling.RuleBaseNodes;
import org.drools.reteoo.ObjectTypeNode;
+import org.drools.reteoo.ReteooRuleBase;
import org.drools.reteoo.RuleTerminalNode;
import org.drools.rule.Package;
+import org.drools.spi.ActivationGroup;
+import org.drools.spi.AgendaGroup;
+import static org.drools.integrationtests.SerializationHelper.*;
+
public class WorkingMemorySerialisationTest extends TestCase {
- public void test1() throws Exception {
+ public void testEmptyRule() throws Exception {
String rule = "package org.test;\n";
+ rule += "global java.util.List list\n";
+ rule += "rule \"Rule 1\"\n";
+ rule += "when\n";
+ rule += "then\n";
+ rule += " list.add( \"fired\" );\n";
+ rule += "end";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule ) );
+ assertTrue( builder.getErrors().isEmpty() );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ // Make sure the rete node map is created correctly
+ Map<Integer, BaseNode> nodes = RuleBaseNodes.getNodeMap( (InternalRuleBase) ruleBase );
+ assertEquals( 2,
+ nodes.size() );
+ assertEquals( "InitialFact",
+ ((ClassObjectType) ((ObjectTypeNode) nodes.get( 3 )).getObjectType()).getClassType().getSimpleName() );
+ assertEquals( "Rule 1",
+ ((RuleTerminalNode) nodes.get( 5 )).getRule().getName() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.fireAllRules();
+
+ session = getSerialisedStatefulSession( session );
+
+ assertEquals( 1,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( "fired",
+ ((List) session.getGlobal( "list" )).get( 0 ) );
+ }
+
+ public void testDynamicEmptyRule() throws Exception {
+ String rule1 = "package org.test;\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule \"Rule 1\"\n";
+ rule1 += "when\n";
+ rule1 += "then\n";
+ rule1 += " list.add( \"fired1\" );\n";
+ rule1 += "end";
+
+ String rule2 = "package org.test;\n";
+ rule2 += "global java.util.List list\n";
+ rule2 += "rule \"Rule 2\"\n";
+ rule2 += "when\n";
+ rule2 += "then\n";
+ rule2 += " list.add( \"fired2\" );\n";
+ rule2 += "end";
+
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule1 ) );
+ Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ // Make sure the rete node map is created correctly
+ Map<Integer, BaseNode> nodes = RuleBaseNodes.getNodeMap( (InternalRuleBase) ruleBase );
+ assertEquals( 2,
+ nodes.size() );
+ assertEquals( "InitialFact",
+ ((ClassObjectType) ((ObjectTypeNode) nodes.get( 3 )).getObjectType()).getClassType().getSimpleName() );
+ assertEquals( "Rule 1",
+ ((RuleTerminalNode) nodes.get( 5 )).getRule().getName() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+ StatefulSession session1 = getSerialisedStatefulSession( session );
+ session1.fireAllRules();
+
+ assertEquals( 1,
+ ((List) session1.getGlobal( "list" )).size() );
+
+ WorkingMemory session2 = getSerialisedStatefulSession( session1,
+ true );
+
+ session.dispose();
+ session1.dispose();
+
+ builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule2 ) );
+ pkg = builder.getPackage();
+
+ ruleBase.addPackage( pkg );
+
+ assertEquals( 2,
+ ((List) session2.getGlobal( "list" )).size() );
+ assertEquals( "fired1",
+ ((List) session2.getGlobal( "list" )).get( 0 ) );
+ assertEquals( "fired2",
+ ((List) session2.getGlobal( "list" )).get( 1 ) );
+ }
+
+ public void testSinglePattern() throws Exception {
+ String rule = "package org.test;\n";
rule += "import org.drools.Person\n";
rule += "global java.util.List list\n";
rule += "rule \"Rule 1\"\n";
@@ -42,79 +165,878 @@
rule += "end";
final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( rule ));
+ builder.addPackageFromDrl( new StringReader( rule ) );
final Package pkg = builder.getPackage();
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
- ruleBase.addPackage(pkg);
+ ruleBase.addPackage( pkg );
// Make sure the rete node map is created correctly
Map<Integer, BaseNode> nodes = RuleBaseNodes.getNodeMap( (InternalRuleBase) ruleBase );
- assertEquals( 2, nodes.size() );
- assertEquals( "Person", ((ClassObjectType)((ObjectTypeNode)nodes.get(3)).getObjectType()).getClassType().getSimpleName() );
- assertEquals( "Rule 1", ((RuleTerminalNode)nodes.get(5)).getRule().getName() );
-
+ assertEquals( 2,
+ nodes.size() );
+ assertEquals( "Person",
+ ((ClassObjectType) ((ObjectTypeNode) nodes.get( 3 )).getObjectType()).getClassType().getSimpleName() );
+ assertEquals( "Rule 1",
+ ((RuleTerminalNode) nodes.get( 5 )).getRule().getName() );
+
StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
- session.setGlobal( "list", list );
+ session.setGlobal( "list",
+ list );
- Person p = new Person( "bobba fet", 32);
+ Person p = new Person( "bobba fet",
+ 32 );
+ session.insert( p );
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+
+ assertEquals( 1,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( p,
+ ((List) session.getGlobal( "list" )).get( 0 ) );
+ }
+
+ public void testSingleRuleSingleJoinNodePattern() throws Exception {
+ String rule = "package org.test;\n";
+ rule += "import org.drools.Person\n";
+ rule += "import org.drools.Cheese\n";
+ rule += "global java.util.List list\n";
+ rule += "rule \"Rule 1\"\n";
+ rule += "when\n";
+ rule += " $c : Cheese( ) \n";
+ rule += " $p : Person( cheese == $c ) \n";
+ rule += "then\n";
+ rule += " list.add( $p );\n";
+ rule += "end";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ // Make sure the rete node map is created correctly
+ Map<Integer, BaseNode> nodes = RuleBaseNodes.getNodeMap( (InternalRuleBase) ruleBase );
+ assertEquals( 4,
+ nodes.size() );
+ assertEquals( "Cheese",
+ ((ClassObjectType) ((ObjectTypeNode) nodes.get( 3 )).getObjectType()).getClassType().getSimpleName() );
+ assertEquals( "Person",
+ ((ClassObjectType) ((ObjectTypeNode) nodes.get( 6 )).getObjectType()).getClassType().getSimpleName() );
+ assertEquals( "JoinNode",
+ nodes.get( 7 ).getClass().getSimpleName() );
+ assertEquals( "Rule 1",
+ ((RuleTerminalNode) nodes.get( 8 )).getRule().getName() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ Cheese stilton = new Cheese( "stilton",
+ 25 );
+ Cheese brie = new Cheese( "brie",
+ 49 );
+ Person bobba = new Person( "bobba fet",
+ 32 );
+ bobba.setCheese( stilton );
+
+ Person vadar = new Person( "darth vadar",
+ 32 );
+
+ session.insert( stilton );
+ session.insert( bobba );
+ session.insert( vadar );
+ session.insert( brie );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.fireAllRules();
+
+ assertEquals( 1,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( bobba,
+ ((List) session.getGlobal( "list" )).get( 0 ) );
+
+ Person c3po = new Person( "c3p0",
+ 32 );
+ c3po.setCheese( stilton );
+ session.insert( c3po );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.fireAllRules();
+
+ assertEquals( 2,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( c3po,
+ ((List) session.getGlobal( "list" )).get( 1 ) );
+
+ Person r2d2 = new Person( "r2d2",
+ 32 );
+ r2d2.setCheese( brie );
+ session.insert( r2d2 );
+
+ System.out.println( "\n\njointpattern" );
+ session = getSerialisedStatefulSession( session );
+
+ session.fireAllRules();
+
+ assertEquals( 3,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( r2d2,
+ ((List) session.getGlobal( "list" )).get( 2 ) );
+ }
+
+ public void testMultiRuleMultiJoinNodePatternsWithHalt() throws Exception {
+ String rule1 = "package org.test;\n";
+ rule1 += "import org.drools.Person\n";
+ rule1 += "import org.drools.Cheese\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule \"Rule 1\"\n";
+ rule1 += "when\n";
+ rule1 += " $c : Cheese( ) \n";
+ rule1 += " $p : Person( cheese == $c ) \n";
+ rule1 += "then\n";
+ rule1 += " list.add( $p );\n";
+ rule1 += "end";
+
+ String rule2 = "package org.test;\n";
+ rule2 += "import org.drools.Person\n";
+ rule2 += "import org.drools.Cheese\n";
+ rule2 += "import org.drools.Cell\n";
+ rule2 += "global java.util.List list\n";
+ rule2 += "rule \"Rule 2\"\n";
+ rule2 += "when\n";
+ rule2 += " $c : Cheese( ) \n";
+ rule2 += " $p : Person( cheese == $c ) \n";
+ rule2 += " Cell( value == $p.age ) \n";
+ rule2 += "then\n";
+ rule2 += " list.add( $p );\n";
+ rule2 += "end";
+
+ String rule3 = "package org.test;\n";
+ rule3 += "import org.drools.FactA\n";
+ rule3 += "import org.drools.FactB\n";
+ rule3 += "import org.drools.FactC\n";
+ rule3 += "import org.drools.Person\n";
+ rule3 += "global java.util.List list\n";
+ rule3 += "rule \"Rule 3\"\n";
+ rule3 += "when\n";
+ rule3 += " $a : FactA( field2 > 10 ) \n";
+ rule3 += " $b : FactB( f2 >= $a.field2 ) \n";
+ rule3 += " $p : Person( name == \"darth vadar\" ) \n";
+ rule3 += " $c : FactC( f2 >= $b.f2 ) \n";
+ rule3 += "then\n";
+ rule3 += " list.add( $c );\n";
+ rule3 += " drools.halt();\n";
+ rule3 += "end";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule1 ) );
+ builder.addPackageFromDrl( new StringReader( rule2 ) );
+ builder.addPackageFromDrl( new StringReader( rule3 ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ Cheese stilton = new Cheese( "stilton",
+ 25 );
+ Cheese brie = new Cheese( "brie",
+ 49 );
+ Person bobba = new Person( "bobba fet",
+ 30 );
+ bobba.setCheese( stilton );
+ Person vadar = new Person( "darth vadar",
+ 38 );
+ Person c3po = new Person( "c3p0",
+ 17 );
+ c3po.setCheese( stilton );
+ Person r2d2 = new Person( "r2d2",
+ 58 );
+ r2d2.setCheese( brie );
+
+ session.insert( stilton );
+ session.insert( bobba );
+ session.insert( vadar );
+ session.insert( brie );
+ session.insert( c3po );
+ session.insert( r2d2 );
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+
+ assertEquals( 3,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( bobba,
+ ((List) session.getGlobal( "list" )).get( 2 ) );
+ assertEquals( c3po,
+ ((List) session.getGlobal( "list" )).get( 1 ) );
+ assertEquals( r2d2,
+ ((List) session.getGlobal( "list" )).get( 0 ) );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.insert( new Cell( 30 ) );
+ session.insert( new Cell( 58 ) );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.fireAllRules();
+
+ assertEquals( 5,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( r2d2,
+ ((List) session.getGlobal( "list" )).get( 3 ) );
+ assertEquals( bobba,
+ ((List) session.getGlobal( "list" )).get( 4 ) );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.insert( new FactA( 15 ) );
+ session.insert( new FactB( 20 ) );
+ session.insert( new FactC( 27 ) );
+ session.insert( new FactC( 52 ) );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.fireAllRules();
+
+ assertEquals( 6,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( new FactC( 52 ),
+ ((List) session.getGlobal( "list" )).get( 5 ) );
+
+ session = getSerialisedStatefulSession( session );
+
+ session.fireAllRules();
+
+ assertEquals( 7,
+ ((List) session.getGlobal( "list" )).size() );
+ assertEquals( new FactC( 27 ),
+ ((List) session.getGlobal( "list" )).get( 6 ) );
+ }
+
+ public void testNot() throws Exception {
+ String header = "package org.drools.test;\n";
+ header += "import java.util.List;\n";
+ header += "import org.drools.Person\n";
+ header += "import org.drools.Cheese\n";
+ header += "global java.util.List list;\n";
+
+ String rule1 = "rule \"not rule test\"\n";
+ rule1 += "salience 10\n";
+ rule1 += "when\n";
+ rule1 += " Person()\n";
+ rule1 += " not Cheese( price >= 5 )\n";
+ rule1 += "then\n";
+ rule1 += " list.add( new Integer( 5 ) );\n";
+ rule1 += "end\n";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( header + rule1 ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+ List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ // add a person, no cheese
+ session = getSerialisedStatefulSession( session );
+ Person bobba = new Person( "bobba fet",
+ 50 );
+ session.insert( bobba );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 1,
+ list.size() );
+
+ // add another person, no cheese
+ session = getSerialisedStatefulSession( session );
+ Person darth = new Person( "darth vadar",
+ 200 );
+ session.insert( darth );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 2,
+ list.size() );
+
+ // add cheese
+ session = getSerialisedStatefulSession( session );
+ Cheese stilton = new Cheese( "stilton",
+ 5 );
+ session.insert( stilton );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 2,
+ list.size() );
+
+ // remove cheese
+ session = getSerialisedStatefulSession( session );
+ session.retract( session.getFactHandle( stilton ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
+
+ // put 2 cheeses back in
+ session = getSerialisedStatefulSession( session );
+ session.insert( stilton );
+ session = getSerialisedStatefulSession( session );
+ Cheese brie = new Cheese( "brie",
+ 18 );
+ session.insert( brie );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
+
+ // now remove a cheese, should be no change
+ session.retract( session.getFactHandle( stilton ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
- session.insert( p );
+ // now remove a person, should be no change
+ session.retract( session.getFactHandle( bobba ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
- WorkingMemory wm2 = getSerialisedWorkingMemory( session );
-
- wm2.fireAllRules();
-
- assertEquals( 1, ((List)wm2.getGlobal("list")).size());
- assertEquals( p, ((List)wm2.getGlobal("list")).get(0));
+ //removal remaining cheese, should increase by one, as one person left
+ session.retract( session.getFactHandle( brie ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 5,
+ list.size() );
}
- public WorkingMemory getSerialisedWorkingMemory(WorkingMemory wm) throws Exception {
- RuleBase ruleBase = wm.getRuleBase();
+ public void testExists() throws Exception {
+ String header = "package org.drools.test;\n";
+ header += "import java.util.List;\n";
+ header += "import org.drools.Person\n";
+ header += "import org.drools.Cheese\n";
+ header += "global java.util.List list;\n";
+
+ String rule1 = "rule \"not rule test\"\n";
+ rule1 += "salience 10\n";
+ rule1 += "when\n";
+ rule1 += " Person()\n";
+ rule1 += " exists Cheese( price >= 5 )\n";
+ rule1 += "then\n";
+ rule1 += " list.add( new Integer( 5 ) );\n";
+ rule1 += "end\n";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( header + rule1 ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+ List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ // add a person, no cheese
+ session = getSerialisedStatefulSession( session );
+ Person bobba = new Person( "bobba fet",
+ 50 );
+ session.insert( bobba );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 0,
+ list.size() );
+
+ // add another person, no cheese
+ session = getSerialisedStatefulSession( session );
+ Person darth = new Person( "darth vadar",
+ 200 );
+ session.insert( darth );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 0,
+ list.size() );
+
+ // add cheese
+ session = getSerialisedStatefulSession( session );
+ Cheese stilton = new Cheese( "stilton",
+ 5 );
+ session.insert( stilton );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 2,
+ list.size() );
+
+ // remove cheese
+ session = getSerialisedStatefulSession( session );
+ session.retract( session.getFactHandle( stilton ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 2,
+ list.size() );
+
+ // put 2 cheeses back in
+ session = getSerialisedStatefulSession( session );
+ session.insert( stilton );
+ session = getSerialisedStatefulSession( session );
+ Cheese brie = new Cheese( "brie",
+ 18 );
+ session.insert( brie );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
+
+ // now remove a cheese, should be no change
+ session.retract( session.getFactHandle( stilton ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
- PlaceholderResolverStrategyFactory factory = new PlaceholderResolverStrategyFactory();
- factory.addPlaceholderResolverStrategy( new SerializablePlaceholderResolverStrategy() );
+ // now remove a person, should be no change
+ session.retract( session.getFactHandle( bobba ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- OutputPersister op = new OutputPersister( (InternalRuleBase) ruleBase, ( InternalWorkingMemory )wm, new ObjectOutputStream( baos ), factory);
- op.write();
+ //removal remaining cheese, no
+ session.retract( session.getFactHandle( brie ) );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 4,
+ list.size() );
- byte[] b1 = baos.toByteArray();
- ByteArrayInputStream bais = new ByteArrayInputStream( b1 );
- InputPersister ip = new InputPersister( (InternalRuleBase) ruleBase, new ObjectInputStream( bais ), factory);
- WorkingMemory wm2 = ip.read();
- wm2.setGlobalResolver( wm.getGlobalResolver() );
-
- //this is to check round tripping
- baos = new ByteArrayOutputStream();
- op = new OutputPersister( (InternalRuleBase) ruleBase, ( InternalWorkingMemory )wm2, new ObjectOutputStream( baos ), factory);
- op.write();
-
- byte[] b2 = baos.toByteArray();
- // bytes should be the same.
- assertTrue( areByteArraysEqual(b1, b2) );
-
- bais = new ByteArrayInputStream( b2 );
- ip = new InputPersister( (InternalRuleBase) ruleBase, new ObjectInputStream( bais ), factory);
- wm2 = ip.read();
- wm2.setGlobalResolver( wm.getGlobalResolver() );
-
- return wm2;
+ // put one cheese back in, with one person should increase by one
+ session = getSerialisedStatefulSession( session );
+ session.insert( stilton );
+ session.fireAllRules();
+ assertEquals( 5,
+ list.size() );
+ }
+
+ public void testTruthMaintenance() throws Exception {
+ String header = "package org.drools.test;\n";
+ header += "import java.util.List;\n";
+ header += "import org.drools.Person\n";
+ header += "import org.drools.Cheese\n";
+ header += "global Cheese cheese;\n";
+ header += "global Person person;\n";
+ header += "global java.util.List list;\n";
+
+ String rule1 = "rule \"not person then cheese\"\n";
+ rule1 += "when \n";
+ rule1 += " not Person() \n";
+ rule1 += "then \n";
+ rule1 += " if (list.size() < 3) { \n";
+ rule1 += " list.add(new Integer(0)); \n";
+ rule1 += " insertLogical( cheese ); \n" + " }\n";
+ rule1 += " drools.halt();\n" + "end\n";
+
+ String rule2 = "rule \"if cheese then person\"\n";
+ rule2 += "when\n";
+ rule2 += " Cheese()\n";
+ rule2 += "then\n";
+ rule2 += " if (list.size() < 3) {\n";
+ rule2 += " list.add(new Integer(0));\n";
+ rule2 += " insertLogical( person );\n";
+ rule2 += " }\n" + " drools.halt();\n";
+ rule2 += "end\n";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( header + rule1 ) );
+ builder.addPackageFromDrl( new StringReader( header + rule2 ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ final List list = new ArrayList();
+
+ final Person person = new Person( "person" );
+ final Cheese cheese = new Cheese( "cheese",
+ 0 );
+ session.setGlobal( "cheese",
+ cheese );
+ session.setGlobal( "person",
+ person );
+ session.setGlobal( "list",
+ list );
+ session.fireAllRules();
+ assertEquals( 1,
+ list.size() );
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 2,
+ list.size() );
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 3,
+ list.size() );
+
+ // should not grow any further
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( 3,
+ list.size() );
}
-
- public static boolean areByteArraysEqual( byte[] b1, byte[] b2) {
+
+ public void testActivationGroups() throws Exception {
+ String rule1 = "package org.test;\n";
+ rule1 += "import org.drools.Cheese\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule \"Rule 1\"\n";
+ rule1 += " activation-group \"activation-group-1\"\n";
+ rule1 += "when\n";
+ rule1 += " $c : Cheese( ) \n";
+ rule1 += "then\n";
+ rule1 += " list.add( \"rule1\" );\n";
+ rule1 += " drools.halt();\n";
+ rule1 += "end";
+
+ String rule2 = "package org.test;\n";
+ rule2 += "import org.drools.Cheese\n";
+ rule2 += "global java.util.List list\n";
+ rule2 += "rule \"Rule 2\"\n";
+ rule2 += " salience 10\n";
+ rule2 += " activation-group \"activation-group-1\"\n";
+ rule2 += "when\n";
+ rule2 += " $c : Cheese( ) \n";
+ rule2 += "then\n";
+ rule2 += " list.add( \"rule2\" );\n";
+ rule2 += " drools.halt();\n";
+ rule2 += "end";
+
+ String rule3 = "package org.test;\n";
+ rule3 += "import org.drools.Cheese\n";
+ rule3 += "global java.util.List list\n";
+ rule3 += "rule \"Rule 3\"\n";
+ rule3 += " activation-group \"activation-group-1\"\n";
+ rule3 += "when\n";
+ rule3 += " $c : Cheese( ) \n";
+ rule3 += "then\n";
+ rule3 += " list.add( \"rule3\" );\n";
+ rule3 += " drools.halt();\n";
+ rule3 += "end";
+
+ String rule4 = "package org.test;\n";
+ rule4 += "import org.drools.Cheese\n";
+ rule4 += "global java.util.List list\n";
+ rule4 += "rule \"Rule 4\"\n";
+ rule4 += " activation-group \"activation-group-2\"\n";
+ rule4 += "when\n";
+ rule4 += " $c : Cheese( ) \n";
+ rule4 += "then\n";
+ rule4 += " list.add( \"rule4\" );\n";
+ rule4 += " drools.halt();\n";
+ rule4 += "end";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule1 ) );
+ builder.addPackageFromDrl( new StringReader( rule2 ) );
+ builder.addPackageFromDrl( new StringReader( rule3 ) );
+ builder.addPackageFromDrl( new StringReader( rule4 ) );
+
+ final Package pkg = builder.getPackage();
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
+ session = getSerialisedStatefulSession( session );
+
+ final List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ final Cheese brie = new Cheese( "brie",
+ 12 );
+ session.insert( brie );
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+
+ assertEquals( 2,
+ list.size() );
+ assertEquals( "rule2",
+ list.get( 0 ) );
+ assertEquals( "rule4",
+ list.get( 1 ) );
+ }
+
+ public void testAgendaGroups() throws Exception {
+ String rule1 = "package org.test;\n";
+ rule1 += "import org.drools.Cheese\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule \"Rule 1\"\n";
+ rule1 += " agenda-group \"agenda-group-1\"\n";
+ rule1 += "when\n";
+ rule1 += " $c : Cheese( ) \n";
+ rule1 += "then\n";
+ rule1 += " list.add( \"rule1\" );\n";
+ rule1 += " drools.halt();\n";
+ rule1 += "end";
+
+ String rule2 = "package org.test;\n";
+ rule2 += "import org.drools.Cheese\n";
+ rule2 += "global java.util.List list\n";
+ rule2 += "rule \"Rule 2\"\n";
+ rule2 += " salience 10\n";
+ rule2 += " agenda-group \"agenda-group-1\"\n";
+ rule2 += "when\n";
+ rule2 += " $c : Cheese( ) \n";
+ rule2 += "then\n";
+ rule2 += " list.add( \"rule2\" );\n";
+ rule2 += " drools.halt();\n";
+ rule2 += "end";
+
+ String rule3 = "package org.test;\n";
+ rule3 += "import org.drools.Cheese\n";
+ rule3 += "global java.util.List list\n";
+ rule3 += "rule \"Rule 3\"\n";
+ rule3 += " salience 10\n";
+ rule3 += " agenda-group \"agenda-group-2\"\n";
+ rule3 += " activation-group \"activation-group-2\"\n";
+ rule3 += "when\n";
+ rule3 += " $c : Cheese( ) \n";
+ rule3 += "then\n";
+ rule3 += " list.add( \"rule3\" );\n";
+ rule3 += " drools.halt();\n";
+ rule3 += "end";
+
+ String rule4 = "package org.test;\n";
+ rule4 += "import org.drools.Cheese\n";
+ rule4 += "global java.util.List list\n";
+ rule4 += "rule \"Rule 4\"\n";
+ rule4 += " agenda-group \"agenda-group-2\"\n";
+ rule4 += " activation-group \"activation-group-2\"\n";
+ rule4 += "when\n";
+ rule4 += " $c : Cheese( ) \n";
+ rule4 += "then\n";
+ rule4 += " list.add( \"rule4\" );\n";
+ rule4 += " drools.halt();\n";
+ rule4 += "end";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule1 ) );
+ builder.addPackageFromDrl( new StringReader( rule2 ) );
+ builder.addPackageFromDrl( new StringReader( rule3 ) );
+ builder.addPackageFromDrl( new StringReader( rule4 ) );
+
+ final Package pkg = builder.getPackage();
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ session = getSerialisedStatefulSession( session );
+
+ final List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ final Cheese brie = new Cheese( "brie",
+ 12 );
+ session.insert( brie );
+
+ session = getSerialisedStatefulSession( session );
+ session.setFocus( "agenda-group-1" );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( "rule2",
+ list.get( 0 ) );
+
+ session = getSerialisedStatefulSession( session );
+ session.setFocus( "agenda-group-2" );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( "rule3",
+ list.get( 1 ) );
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( "rule1",
+ list.get( 2 ) );
+ }
+
+ public void testRuleFlowGroups() throws Exception {
+ String rule1 = "package org.test;\n";
+ rule1 += "import org.drools.Cheese\n";
+ rule1 += "global java.util.List list\n";
+ rule1 += "rule \"Rule 1\"\n";
+ rule1 += " ruleflow-group \"ruleflow-group-1\"\n";
+ rule1 += "when\n";
+ rule1 += " $c : Cheese( ) \n";
+ rule1 += "then\n";
+ rule1 += " list.add( \"rule1\" );\n";
+ rule1 += " drools.halt();\n";
+ rule1 += "end";
+
+ String rule2 = "package org.test;\n";
+ rule2 += "import org.drools.Cheese\n";
+ rule2 += "global java.util.List list\n";
+ rule2 += "rule \"Rule 2\"\n";
+ rule2 += " salience 10\n";
+ rule2 += " ruleflow-group \"ruleflow-group-1\"\n";
+ rule2 += "when\n";
+ rule2 += " $c : Cheese( ) \n";
+ rule2 += "then\n";
+ rule2 += " list.add( \"rule2\" );\n";
+ rule2 += " drools.halt();\n";
+ rule2 += "end";
+
+ String rule3 = "package org.test;\n";
+ rule3 += "import org.drools.Cheese\n";
+ rule3 += "global java.util.List list\n";
+ rule3 += "rule \"Rule 3\"\n";
+ rule3 += " salience 10\n";
+ rule3 += " ruleflow-group \"ruleflow-group-2\"\n";
+ rule3 += " activation-group \"activation-group-2\"\n";
+ rule3 += "when\n";
+ rule3 += " $c : Cheese( ) \n";
+ rule3 += "then\n";
+ rule3 += " list.add( \"rule3\" );\n";
+ rule3 += " drools.halt();\n";
+ rule3 += "end";
+
+ String rule4 = "package org.test;\n";
+ rule4 += "import org.drools.Cheese\n";
+ rule4 += "global java.util.List list\n";
+ rule4 += "rule \"Rule 4\"\n";
+ rule4 += " ruleflow-group \"ruleflow-group-2\"\n";
+ rule4 += " activation-group \"activation-group-2\"\n";
+ rule4 += "when\n";
+ rule4 += " $c : Cheese( ) \n";
+ rule4 += "then\n";
+ rule4 += " list.add( \"rule4\" );\n";
+ rule4 += " drools.halt();\n";
+ rule4 += "end";
+
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new StringReader( rule1 ) );
+ builder.addPackageFromDrl( new StringReader( rule2 ) );
+ builder.addPackageFromDrl( new StringReader( rule3 ) );
+ builder.addPackageFromDrl( new StringReader( rule4 ) );
+
+ final Package pkg = builder.getPackage();
+
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+ ruleBase = SerializationHelper.serializeObject( ruleBase );
+ StatefulSession session = ruleBase.newStatefulSession();
+
+ session = getSerialisedStatefulSession( session );
+
+ final List list = new ArrayList();
+ session.setGlobal( "list",
+ list );
+
+ final Cheese brie = new Cheese( "brie",
+ 12 );
+ session.insert( brie );
+
+ session = getSerialisedStatefulSession( session );
+ session.getAgenda().activateRuleFlowGroup( "ruleflow-group-1" );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( "rule2",
+ list.get( 0 ) );
+
+ session = getSerialisedStatefulSession( session );
+ session.getAgenda().activateRuleFlowGroup( "ruleflow-group-2" );
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( "rule3",
+ list.get( 1 ) );
+
+ session = getSerialisedStatefulSession( session );
+ session.fireAllRules();
+ assertEquals( "rule1",
+ list.get( 2 ) );
+ }
+
+ // public StatefulSession getSerialisedStatefulSession(StatefulSession session) throws Exception {
+ // return getSerialisedStatefulSession( session,
+ // true );
+ // }
+ //
+ // public StatefulSession getSerialisedStatefulSession(StatefulSession session,
+ // boolean dispose) throws Exception {
+ // Marshaller marshaller = new Marshaller();
+ //
+ // ReteooRuleBase ruleBase = (ReteooRuleBase) session.getRuleBase();
+ //
+ // ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ // ruleBase.writeStatefulSession( session,
+ // baos,
+ // marshaller );
+ //
+ // byte[] b1 = baos.toByteArray();
+ // ByteArrayInputStream bais = new ByteArrayInputStream( b1 );
+ // StatefulSession session2 = ruleBase.readStatefulSession( bais,
+ // true,
+ // marshaller );
+ //
+ // // write methods allways needs a new marshaller for Identity strategies
+ // marshaller = new Marshaller();
+ // baos = new ByteArrayOutputStream();
+ // ruleBase.writeStatefulSession( session2,
+ // baos,
+ // marshaller );
+ //
+ // byte[] b2 = baos.toByteArray();
+ // // bytes should be the same.
+ // assertTrue( areByteArraysEqual( b1,
+ // b2 ) );
+ //
+ // session2.setGlobalResolver( session.getGlobalResolver() );
+ //
+ // if ( dispose ) {
+ // session.dispose();
+ // }
+ //
+ // return session2;
+ // }
+
+ public static boolean areByteArraysEqual(byte[] b1,
+ byte[] b2) {
if ( b1.length != b2.length ) {
return false;
}
-
+
for ( int i = 0, length = b1.length; i < length; i++ ) {
- if ( b1[i] != b2[i]) {
+ if ( b1[i] != b2[i] ) {
return false;
}
}
-
+
return true;
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -4,6 +4,7 @@
import java.io.InputStream;
import java.io.ObjectOutput;
import java.io.ObjectInput;
+import java.io.OutputStream;
import java.util.List;
import org.drools.ClockType;
@@ -12,6 +13,7 @@
import org.drools.StatelessSession;
import org.drools.TemporalSession;
import org.drools.event.RuleBaseEventListener;
+import org.drools.marshalling.Marshaller;
import org.drools.rule.Package;
public class MockRuleBase implements RuleBase {
@@ -62,7 +64,7 @@
return null;
}
- public StatefulSession newStatefulSession(InputStream stream,
+ public StatefulSession readStatefulSession(InputStream stream,
boolean keepReference) throws IOException, ClassNotFoundException {
// TODO Auto-generated method stub
return null;
@@ -136,4 +138,32 @@
public void writeExternal(ObjectOutput out) throws IOException {
}
+
+ public void writeStatefulSession(StatefulSession session,
+ OutputStream stream) throws IOException {
+ // TODO Auto-generated method stub
+
+ }
+
+ public StatefulSession readStatefulSession(InputStream stream,
+ Marshaller marshaller) throws IOException,
+ ClassNotFoundException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public StatefulSession readStatefulSession(InputStream stream,
+ boolean keepReference,
+ Marshaller marshaller) throws IOException,
+ ClassNotFoundException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void writeStatefulSession(StatefulSession session,
+ OutputStream stream,
+ Marshaller marshaller) throws IOException {
+ // TODO Auto-generated method stub
+
+ }
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2008-05-17 22:10:51 UTC (rev 19996)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2008-05-18 03:08:35 UTC (rev 19997)
@@ -18,6 +18,7 @@
import org.drools.ObjectFilter;
import org.drools.QueryResults;
import org.drools.RuleBase;
+import org.drools.common.InternalFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.NodeMemory;
@@ -522,4 +523,9 @@
return null;
}
+ public InternalFactHandle getInitialFactHandle() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
More information about the jboss-svn-commits
mailing list