[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