[jboss-svn-commits] JBL Code SVN: r16398 - in labs/jbossrules/branches/4.0.x: drools-core/src/main/java/org/drools/reteoo and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Nov 6 23:08:55 EST 2007
Author: mark.proctor at jboss.com
Date: 2007-11-06 23:08:55 -0500 (Tue, 06 Nov 2007)
New Revision: 16398
Modified:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
Log:
JBRULES-1316 Serialising Both the RuleBase and WorkingMemory throws null pointer
Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-11-07 03:55:25 UTC (rev 16397)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-11-07 04:08:55 UTC (rev 16398)
@@ -1809,7 +1809,86 @@
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( bob ) );
assertTrue( IteratorToList.convert( workingMemory.iterateObjects() ).contains( new Person( "help" ) ) );
}
+
+ public void testSerializeWorkingMemoryAndRuleBase() throws Exception {
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Serializable.drl" ) );
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( reader );
+ final Package pkg = builder.getPackage();
+
+ assertEquals( 0,
+ builder.getErrors().getErrors().length );
+
+ RuleBase ruleBase = getRuleBase();// RuleBaseFactory.newRuleBase();
+
+
+ Map map = new HashMap();
+ map.put( "x", ruleBase );
+ final byte[] ast = serializeOut( map );
+ map = (Map) serializeIn( ast );
+ ruleBase = (RuleBase) map.get( "x" );
+
+ WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+
+ final byte[] wm = serializeOut( workingMemory );
+
+ workingMemory = ruleBase.newStatefulSession( new ByteArrayInputStream( wm ) );
+
+ ruleBase.addPackage( pkg );
+
+ workingMemory.setGlobal( "list",
+ new ArrayList() );
+
+
+ final Person bob = new Person( "bob" );
+ workingMemory.insert( bob );
+
+
+
+ final Rule[] rules = ruleBase.getPackages()[0].getRules();
+
+
+ assertEquals( 4,
+ rules.length );
+
+ assertEquals( "match Person 1",
+ rules[0].getName() );
+ assertEquals( "match Person 2",
+ rules[1].getName() );
+ assertEquals( "match Person 3",
+ rules[2].getName() );
+ assertEquals( "match Integer",
+ rules[3].getName() );
+
+
+
+ assertEquals( 1,
+ IteratorToList.convert( workingMemory.iterateObjects() ).size() );
+ assertEquals( bob,
+ IteratorToList.convert( workingMemory.iterateObjects() ).get( 0 ) );
+
+ assertEquals( 2,
+ workingMemory.getAgenda().agendaSize() );
+
+ workingMemory.fireAllRules();
+
+ final List list = (List) workingMemory.getGlobal( "list" );
+
+ assertEquals( 3,
+ list.size() );
+ // because of agenda-groups
+ assertEquals( new Integer( 4 ),
+ 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" ) ) );
+
+ }
+
public void testEmptyRule() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_EmptyRule.drl" ) ) );
Modified: labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2007-11-07 03:55:25 UTC (rev 16397)
+++ labs/jbossrules/branches/4.0.x/drools-core/src/main/java/org/drools/reteoo/ReteooBuilder.java 2007-11-07 04:08:55 UTC (rev 16398)
@@ -95,6 +95,7 @@
ClassNotFoundException {
stream.defaultReadObject();
this.ruleBase = ((DroolsObjectInputStream) stream).getRuleBase();
+ this.ruleBuilder = new ReteooRuleBuilder();
}
// ------------------------------------------------------------
More information about the jboss-svn-commits
mailing list