[jboss-svn-commits] JBL Code SVN: r25704 - labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 18 01:37:20 EDT 2009
Author: michael.neale at jboss.com
Date: 2009-03-18 01:37:19 -0400 (Wed, 18 Mar 2009)
New Revision: 25704
Modified:
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
Log:
some more test coverage
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java 2009-03-18 04:47:30 UTC (rev 25703)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java 2009-03-18 05:37:19 UTC (rev 25704)
@@ -22,6 +22,7 @@
import org.drools.io.ResourceFactory;
import org.drools.runtime.BatchExecutionResults;
import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.help.BatchExecutionHelper;
import org.drools.runtime.pipeline.Action;
import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
@@ -547,8 +548,58 @@
assertXMLEqual(expectedXml, outXml );
-
+
}
+
+
+ public void testInsertObjectStateful() throws Exception {
+ String str = "";
+ str += "package org.foo \n";
+ str += "declare Whee \n\ttype: String\n\tprice: Integer\n\toldPrice: Integer\nend\n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Whee(price < 30) \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n update($c);\n";
+ str += "end\n";
+ str += "query results\n";
+ str += " w: Whee(price == 30)";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert>";
+ inXml += " <org.foo.Whee>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.foo.Whee>";
+ inXml += " </insert>";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+ getPipelineStateful(ksession).insert( inXml, resultHandler );
+
+ String nextXML = "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>";
+ getPipelineStateful(ksession).insert( nextXML, resultHandler );
+ String outXml = ( String ) resultHandler.getObject();
+
+
+ //we have not fired the rules yet
+ assertFalse(outXml.indexOf("<price>30</price>") > -1);
+
+ ksession.fireAllRules();
+
+ //ok lets try that again...
+ getPipelineStateful(ksession).insert( nextXML, resultHandler );
+ outXml = ( String ) resultHandler.getObject();
+ assertTrue(outXml.indexOf("<price>30</price>") > -1);
+
+
+
+ }
private Pipeline getPipeline(StatelessKnowledgeSession ksession) {
Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
@@ -573,6 +624,29 @@
}
+ private Pipeline getPipelineStateful(StatefulKnowledgeSession ksession) {
+ Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+ Action assignResult = PipelineFactory.newAssignObjectAsResult();
+ assignResult.setReceiver( executeResultHandler );
+
+ Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+ outTransformer.setReceiver( assignResult );
+
+ KnowledgeRuntimeCommand batchExecution = PipelineFactory.newBatchExecutor();
+ batchExecution.setReceiver( outTransformer );
+
+
+ Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+ inTransformer.setReceiver( batchExecution );
+
+ Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
+ pipeline.setReceiver( inTransformer );
+
+ return pipeline;
+ }
+
+
public static class ResultHandlerImpl
implements
ResultHandler {
@@ -587,9 +661,6 @@
}
}
- private StatelessKnowledgeSession getSession2(String fileName) throws Exception {
- return getSession2( ResourceFactory.newClassPathResource( fileName, getClass() ) );
- }
private StatelessKnowledgeSession getSession2(Resource resource) throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
@@ -609,6 +680,29 @@
StatelessKnowledgeSession session = kbase.newStatelessKnowledgeSession();
return session;
- }
+ }
+
+ private StatefulKnowledgeSession getSessionStateful(Resource resource) throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( resource, ResourceType.DRL );
+
+ if (kbuilder.hasErrors() ) {
+ System.out.println( kbuilder.getErrors() );
+ }
+
+ assertFalse( kbuilder.hasErrors() );
+ Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+
+ kbase.addKnowledgePackages( pkgs );
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+
+ return session;
+ }
+
+
+
}
More information about the jboss-svn-commits
mailing list