[jboss-svn-commits] JBL Code SVN: r27141 - in labs/jbossrules/trunk: drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jun 25 22:51:10 EDT 2009
Author: michael.neale at jboss.com
Date: 2009-06-25 22:51:10 -0400 (Thu, 25 Jun 2009)
New Revision: 27141
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
Log:
JBRULES-2143
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java 2009-06-25 23:08:06 UTC (rev 27140)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java 2009-06-26 02:51:10 UTC (rev 27141)
@@ -15,6 +15,7 @@
import org.drools.command.Setter;
import org.drools.common.DisconnectedFactHandle;
import org.drools.common.InternalFactHandle;
+import org.drools.common.DefaultFactHandle;
import org.drools.process.command.AbortWorkItemCommand;
import org.drools.process.command.CompleteWorkItemCommand;
import org.drools.process.command.FireAllRulesCommand;
@@ -102,7 +103,9 @@
FlatQueryResults.class );
xstream.alias( "query-results",
NativeQueryResults.class );
+ xstream.alias("fact-handle", DefaultFactHandle.class);
+
xstream.registerConverter( new InsertConverter( xstream.getMapper() ) );
xstream.registerConverter( new RetractConverter( xstream.getMapper() ) );
xstream.registerConverter( new ModifyConverter( xstream.getMapper() ) );
@@ -119,6 +122,7 @@
xstream.registerConverter( new GetObjectsConverter( xstream.getMapper() ) );
xstream.registerConverter( new BatchExecutionResultConverter( xstream.getMapper() ) );
xstream.registerConverter( new QueryResultsConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new FactHandleConverter(xstream.getMapper()));
return xstream;
}
@@ -222,6 +226,29 @@
}
+ public static class FactHandleConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+ public FactHandleConverter(Mapper mapper) {
+ super(mapper);
+ }
+
+ public boolean canConvert(Class aClass) {
+ return FactHandle.class.isAssignableFrom(aClass);
+ }
+
+ public void marshal(Object object, HierarchicalStreamWriter writer, MarshallingContext marshallingContext) {
+ FactHandle fh = (FactHandle) object;
+ //writer.startNode("fact-handle");
+ writer.addAttribute("externalForm", fh.toExternalForm());
+ //writer.endNode();
+ }
+
+ public Object unmarshal(HierarchicalStreamReader hierarchicalStreamReader, UnmarshallingContext unmarshallingContext) {
+ throw new UnsupportedOperationException("Unable to unmarshal fact handles.");
+ }
+ }
+
public static class ModifyConverter extends AbstractCollectionConverter
implements
Converter {
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-06-25 23:08:06 UTC (rev 27140)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java 2009-06-26 02:51:10 UTC (rev 27141)
@@ -570,6 +570,55 @@
assertEquals( expectedList,
new HashSet( list ) );
}
+
+ public void testFactHandleReturn() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " System.err.println(42); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <get-global identifier='list' out-identifier='out-list'/>";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ FactHandle fh = ksession.insert(new Person("mic", 42));
+ List<FactHandle> list = new ArrayList<FactHandle>();
+ list.add(fh);
+
+ ksession.setGlobal("list", list);
+
+ ResultHandlerImpl resultHandler = new ResultHandlerImpl();
+ getPipelineStateful( ksession ).insert( inXml,
+ resultHandler );
+ getPipelineStateful( ksession ).insert( inXml,
+ resultHandler );
+ String outXml = (String) resultHandler.getObject();
+
+ System.err.println(outXml);
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n" +
+ " <result identifier=\"out-list\">\n" +
+ " <list>\n" +
+ " <fact-handle externalForm=\"" + fh.toExternalForm() +"\"/>\n" +
+ " </list>\n" +
+ " </result>\n" +
+ "</execution-results>";
+
+ assertXMLEqual( expectedXml, outXml );
+
+ }
+
+
+
public void testInsertElementsWithReturnObjects() throws Exception {
String str = "";
More information about the jboss-svn-commits
mailing list