|
From: <jbo...@li...> - 2006-06-06 10:47:04
|
Author: mar...@jb...
Date: 2006-06-06 06:46:47 -0400 (Tue, 06 Jun 2006)
New Revision: 4639
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ConflictResolver.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsRule.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/CompositeConflictResolver.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/LoadOrderConflictResolver.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleComplexityConflictResolver.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleSalienceConflictResolver.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/util/TokenStack.java
Log:
JBRULES-285 WorkingMemory is not serializable
-Updated leaps to be serializable
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -1688,13 +1688,8 @@
}
- public void testSerializable() throws Exception {
-// PrimitiveLongMap longMap = new PrimitiveLongMap(8, 32);
-//
-// final byte[] map = serializeOut( longMap );
-// longMap = (PrimitiveLongMap) serializeIn( map );
+ public void testSerializable() throws Exception {
-
final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Serializable.drl" ) );
final PackageBuilder builder = new PackageBuilder();
@@ -1727,7 +1722,7 @@
workingMemory.setGlobal( "list", new ArrayList() );
- workingMemory.assertObject( new Integer(5) );
+ workingMemory.assertObject( new Integer(5) );
final byte[] wm = serializeOut( workingMemory );
@@ -1747,8 +1742,7 @@
assertEquals( 2, workingMemory.getObjects().size() );
assertEquals( new Integer( 5 ) , workingMemory.getObjects().get(0) );
- assertEquals( "help" , workingMemory.getObjects().get(1) );
-
+ assertEquals( "help" , workingMemory.getObjects().get(1) );
}
public void testLogicalAssertions() throws Exception {
@@ -2270,7 +2264,7 @@
assertTrue( list.contains( "fired3" ) );
}
- private Object serializeIn(final byte[] bytes) throws IOException,
+ protected Object serializeIn(final byte[] bytes) throws IOException,
ClassNotFoundException {
final ObjectInput in = new ObjectInputStream( new ByteArrayInputStream( bytes ) );
final Object obj = in.readObject();
@@ -2278,7 +2272,7 @@
return obj;
}
- private byte[] serializeOut(final Object obj) throws IOException {
+ protected byte[] serializeOut(final Object obj) throws IOException {
// Serialize to a byte array
final ByteArrayOutputStream bos = new ByteArrayOutputStream();
final ObjectOutput out = new ObjectOutputStream( bos );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,7 +16,9 @@
* limitations under the License.
*/
+import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
+import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
@@ -28,6 +30,7 @@
import org.drools.WorkingMemory;
import org.drools.compiler.PackageBuilder;
import org.drools.rule.Package;
+import org.drools.rule.Rule;
/**
* This runs the integration test cases with the leaps implementation.
@@ -229,6 +232,61 @@
leapsRuleBase.removePackage( "org.drools.test" );
assertEquals( 0, workingMemory.getAgenda( ).getActivations( ).length );
+ }
+
+ public void testSerializable() 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().length );
+
+ RuleBase ruleBase = getRuleBase();//RuleBaseFactory.newRuleBase();
+
+ ruleBase.addPackage( pkg );
+
+ final byte[] ast = serializeOut( ruleBase );
+ ruleBase = (RuleBase) serializeIn( ast );
+ 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() );
+
+ WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+
+ workingMemory.setGlobal( "list", new ArrayList() );
+
+ workingMemory.assertObject( new Integer(5) );
+
+ final byte[] wm = serializeOut( workingMemory );
+
+ workingMemory = ruleBase.newWorkingMemory( new ByteArrayInputStream( wm ) );
+
+ assertEquals( 1, workingMemory.getObjects().size() );
+ assertEquals( new Integer( 5 ) , workingMemory.getObjects().get(0) );
+
+ workingMemory.fireAllRules();
+
+ List list = ( List ) workingMemory.getGlobal( "list" );
+
+ assertEquals( 1, list.size() );
+ assertEquals( new Integer( 4 ), list.get( 0 ) );
+
+ assertEquals( 2, workingMemory.getObjects().size() );
+ assertEquals( new Integer( 5 ) , workingMemory.getObjects().get(0) );
+ assertEquals( "help" , workingMemory.getObjects().get(1) );
}
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ColumnConstraints.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.List;
import org.drools.WorkingMemory;
@@ -32,7 +33,7 @@
* @author Alexander Bagerman
*
*/
-public class ColumnConstraints {
+public class ColumnConstraints implements Serializable {
private Class classType;
private final FieldConstraint[] alphaConstraints;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ConflictResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ConflictResolver.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/ConflictResolver.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.Comparator;
/**
@@ -25,7 +26,7 @@
* @author Alexander Bagerman
*
*/
-public interface ConflictResolver {
+public interface ConflictResolver extends Serializable {
public Comparator getFactConflictResolver();
public Comparator getRuleConflictResolver();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsRule.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsRule.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsRule.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.ArrayList;
import org.drools.common.AgendaGroupImpl;
@@ -29,7 +30,7 @@
* @author Alexander Bagerman
*
*/
-class LeapsRule {
+class LeapsRule implements Serializable {
Rule rule;
final ColumnConstraints[] columnConstraints;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsWorkingMemory.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/LeapsWorkingMemory.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -17,6 +17,7 @@
*/
import java.beans.PropertyChangeListener;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -808,65 +809,66 @@
/**
* to store facts to cursor over it
*/
- private final Map factTables = new Map( ) {
- private LinkedList tables = new LinkedList( );
+ private final Map factTables = new FactTables();
+
+ class FactTables implements Map, Serializable {
+ private LinkedList tables = new LinkedList( );
- private HashMap map = new HashMap( );
+ private HashMap map = new HashMap( );
- public int size() {
- return this.tables.size( );
- }
+ public int size() {
+ return this.tables.size( );
+ }
- public void clear() {
- this.tables.clear( );
- this.map.clear( );
- }
+ public void clear() {
+ this.tables.clear( );
+ this.map.clear( );
+ }
- public boolean isEmpty() {
- return this.tables.isEmpty( );
- }
+ public boolean isEmpty() {
+ return this.tables.isEmpty( );
+ }
- public boolean containsKey( Object key ) {
- return this.map.containsKey( key );
- }
+ public boolean containsKey( Object key ) {
+ return this.map.containsKey( key );
+ }
- public boolean containsValue( Object value ) {
- return this.map.containsValue( value );
- }
+ public boolean containsValue( Object value ) {
+ return this.map.containsValue( value );
+ }
- public Collection values() {
- return this.tables;
- }
+ public Collection values() {
+ return this.tables;
+ }
- public void putAll( Map t ) {
- this.tables.addAll( t.values( ) );
- this.map.putAll( t );
- }
+ public void putAll( Map t ) {
+ this.tables.addAll( t.values( ) );
+ this.map.putAll( t );
+ }
- public Set entrySet() {
- return this.map.entrySet( );
- }
+ public Set entrySet() {
+ return this.map.entrySet( );
+ }
- public Set keySet() {
- return this.map.keySet( );
- }
+ public Set keySet() {
+ return this.map.keySet( );
+ }
- public Object get( Object key ) {
- return this.map.get( key );
+ public Object get( Object key ) {
+ return this.map.get( key );
- }
+ }
- public Object remove( Object key ) {
- Object ret = this.map.remove( key );
- this.tables.remove( ret );
- return ret;
- }
+ public Object remove( Object key ) {
+ Object ret = this.map.remove( key );
+ this.tables.remove( ret );
+ return ret;
+ }
- public Object put( Object key, Object value ) {
- this.tables.add( value );
- this.map.put( key, value );
- return value;
- }
- };
-
+ public Object put( Object key, Object value ) {
+ this.tables.add( value );
+ this.map.put( key, value );
+ return value;
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/CompositeConflictResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/CompositeConflictResolver.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/CompositeConflictResolver.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.Comparator;
/**
@@ -46,34 +47,39 @@
}
public final Comparator getFactConflictResolver() {
- return new Comparator() {
- public int compare(final Object o1,
- final Object o2) {
- int ret = 0;
- if ( o1 != o2 ) {
- for ( int i = 0, length = CompositeConflictResolver.this.factResolvers.length; ret == 0 && i < length; ++i ) {
- ret = CompositeConflictResolver.this.factResolvers[i].compare( o1,
- o2 );
- }
+ return new FactConflictResolver();
+ }
+
+ class FactConflictResolver implements Comparator, Serializable {
+ public int compare(final Object o1,
+ final Object o2) {
+ int ret = 0;
+ if ( o1 != o2 ) {
+ for ( int i = 0, length = CompositeConflictResolver.this.factResolvers.length; ret == 0 && i < length; ++i ) {
+ ret = CompositeConflictResolver.this.factResolvers[i].compare( o1,
+ o2 );
}
- return ret;
}
- };
+ return ret;
+ }
}
public final Comparator getRuleConflictResolver() {
- return new Comparator() {
- public int compare(final Object o1,
- final Object o2) {
- int ret = 0;
- if ( o1 != o2 ) {
- for ( int i = 0, length = CompositeConflictResolver.this.ruleResolvers.length; ret == 0 && i < length; ++i ) {
- ret = CompositeConflictResolver.this.ruleResolvers[i].compare( o1,
- o2 );
- }
+ return new RuleConflictResolver();
+ }
+
+ class RuleConflictResolver implements Comparator, Serializable {
+ public int compare(final Object o1,
+ final Object o2) {
+ int ret = 0;
+ if ( o1 != o2 ) {
+ for ( int i = 0, length = CompositeConflictResolver.this.factResolvers.length; ret == 0 && i < length; ++i ) {
+ ret = CompositeConflictResolver.this.factResolvers[i].compare( o1,
+ o2 );
}
- return ret;
}
- };
+ return ret;
+ }
}
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/LoadOrderConflictResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/LoadOrderConflictResolver.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/LoadOrderConflictResolver.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.Comparator;
import org.drools.common.DefaultFactHandle;
@@ -32,7 +33,8 @@
*/
public class LoadOrderConflictResolver
implements
- Comparator {
+ Comparator,
+ Serializable {
/** Singleton instance. */
private static final LoadOrderConflictResolver INSTANCE = new LoadOrderConflictResolver();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleComplexityConflictResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleComplexityConflictResolver.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleComplexityConflictResolver.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.Comparator;
import org.drools.leaps.LeapsRuleHandle;
@@ -31,7 +32,8 @@
*/
class RuleComplexityConflictResolver
implements
- Comparator {
+ Comparator,
+ Serializable {
/** Singleton instance. */
private static final RuleComplexityConflictResolver INSTANCE = new RuleComplexityConflictResolver();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleSalienceConflictResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleSalienceConflictResolver.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/conflict/RuleSalienceConflictResolver.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.Comparator;
import org.drools.leaps.LeapsRuleHandle;
@@ -32,7 +33,8 @@
*/
class RuleSalienceConflictResolver
implements
- Comparator {
+ Comparator,
+ Serializable {
/** Singleton instance. */
private static final RuleSalienceConflictResolver INSTANCE = new RuleSalienceConflictResolver();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/util/TokenStack.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/util/TokenStack.java 2006-06-06 09:59:25 UTC (rev 4638)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/leaps/util/TokenStack.java 2006-06-06 10:46:47 UTC (rev 4639)
@@ -16,6 +16,7 @@
* limitations under the License.
*/
+import java.io.Serializable;
import java.util.EmptyStackException;
import java.util.Iterator;
@@ -30,7 +31,7 @@
*
*/
-public class TokenStack {
+public class TokenStack implements Serializable {
protected TableRecord tailRecord = null;
|