[jboss-svn-commits] JBL Code SVN: r27314 - in labs/jbossrules/trunk: drools-compiler/src/test/resources/org/drools/integrationtests and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jun 29 18:34:51 EDT 2009
Author: tirelli
Date: 2009-06-29 18:34:51 -0400 (Mon, 29 Jun 2009)
New Revision: 27314
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SerializableAccumulate.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java
Log:
JBRULES-2149: fixing CCE
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 2009-06-29 22:12:15 UTC (rev 27313)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java 2009-06-29 22:34:51 UTC (rev 27314)
@@ -1,16 +1,13 @@
package org.drools.integrationtests;
+import static org.drools.integrationtests.SerializationHelper.getSerialisedStatefulKnowledgeSession;
import static org.drools.integrationtests.SerializationHelper.getSerialisedStatefulSession;
-import static org.drools.integrationtests.SerializationHelper.getSerialisedStatefulKnowledgeSession;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
-import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
-import java.io.OutputStream;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
@@ -57,7 +54,6 @@
import org.drools.marshalling.MarshallerFactory;
import org.drools.marshalling.ObjectMarshallingStrategy;
import org.drools.marshalling.ObjectMarshallingStrategyAcceptor;
-import org.drools.marshalling.impl.DefaultMarshaller;
import org.drools.marshalling.impl.RuleBaseNodes;
import org.drools.reteoo.ObjectTypeNode;
import org.drools.reteoo.ReteooStatefulSession;
@@ -2183,9 +2179,10 @@
20 ) );
ksession.insert( new Person( "Bob",
"brie" ) );
-
- ksession = getSerialisedStatefulKnowledgeSession( ksession, true );
+ ksession = getSerialisedStatefulKnowledgeSession( ksession,
+ true );
+
ksession.fireAllRules();
assertEquals( 1,
@@ -2246,9 +2243,72 @@
session.getObjects().iterator().next() );
in.close();
}
-
-
+ public void testAccumulateSerialization() {
+ try {
+ KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ knowledgeBuilder.add( ResourceFactory.newClassPathResource( "org/drools/integrationtests/test_SerializableAccumulate.drl" ),
+ ResourceType.DRL );
+
+ if( knowledgeBuilder.hasErrors() ) {
+ fail( knowledgeBuilder.getErrors().toString() );
+ }
+
+ KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
+ knowledgeBase.addKnowledgePackages( knowledgeBuilder.getKnowledgePackages() );
+ StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
+ ksession.setGlobal( "results",
+ new ArrayList() );
+
+ Cheese t1 = new Cheese( "brie",
+ 10 );
+ Cheese t2 = new Cheese( "brie",
+ 15 );
+ Cheese t3 = new Cheese( "stilton",
+ 20 );
+ Cheese t4 = new Cheese( "brie",
+ 30 );
+
+ ksession.insert( t1 );
+ ksession.insert( t2 );
+ ksession.insert( t3 );
+ ksession.insert( t4 );
+
+ //ksession.fireAllRules();
+ Marshaller marshaller = createSerializableMarshaller( knowledgeBase );
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream out = new DroolsObjectOutputStream( baos );
+ out.writeObject( knowledgeBase );
+ marshaller.marshall( out,
+ ksession );
+ out.flush();
+ out.close();
+
+ ObjectInputStream in = new DroolsObjectInputStream( new ByteArrayInputStream( baos.toByteArray() ) );
+ knowledgeBase = (KnowledgeBase) in.readObject();
+ marshaller = createSerializableMarshaller( knowledgeBase );
+ ksession = marshaller.unmarshall( in );
+ in.close();
+
+ // setting the global again, since it is not serialized with the session
+ List<List> results = (List<List>) new ArrayList<List>();
+ ksession.setGlobal( "results", results );
+ assertNotNull( results );
+
+ ksession.fireAllRules();
+ ksession.dispose();
+
+ assertEquals( 1,
+ results.size() );
+ assertEquals( 3,
+ results.get( 0 ).size() );
+
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ }
+
private Marshaller createSerializableMarshaller(KnowledgeBase knowledgeBase) {
ObjectMarshallingStrategyAcceptor acceptor = MarshallerFactory.newClassFilterAcceptor( new String[]{"*.*"} );
ObjectMarshallingStrategy strategy = MarshallerFactory.newSerializeMarshallingStrategy( acceptor );
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SerializableAccumulate.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SerializableAccumulate.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_SerializableAccumulate.drl 2009-06-29 22:34:51 UTC (rev 27314)
@@ -0,0 +1,17 @@
+package org.drools
+
+import java.util.List
+
+global List results
+
+rule "test accumulate serialization"
+when
+ $total : List() from accumulate(
+ $c : Cheese( type == "brie" ),
+ init( java.util.ArrayList s = new java.util.ArrayList(); ),
+ action( s.add($c); ),
+ reverse( s.remove($c); ),
+ result( s ) )
+then
+ results.add( $total );
+end
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java 2009-06-29 22:12:15 UTC (rev 27313)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/impl/MarshallerReaderContext.java 2009-06-29 22:34:51 UTC (rev 27314)
@@ -6,6 +6,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
+import java.io.ObjectStreamClass;
import java.util.HashMap;
import java.util.Map;
@@ -68,4 +69,15 @@
this.marshalProcessInstances = marshalProcessInstances;
this.marshalWorkItems = marshalWorkItems;
}
+
+ @Override
+ protected Class< ? > resolveClass(ObjectStreamClass desc) throws IOException,
+ ClassNotFoundException {
+ String name = desc.getName();
+ try {
+ return Class.forName(name, false, this.ruleBase.getRootClassLoader());
+ } catch (ClassNotFoundException ex) {
+ return super.resolveClass( desc );
+ }
+ }
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list