[jboss-svn-commits] JBL Code SVN: r31597 - labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 11 18:17:29 EST 2010
Author: baunax
Date: 2010-02-11 18:17:29 -0500 (Thu, 11 Feb 2010)
New Revision: 31597
Modified:
labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java
Log:
transform the ExecutionResultImpl before marshalling
Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java 2010-02-11 23:16:20 UTC (rev 31596)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java 2010-02-11 23:17:29 UTC (rev 31597)
@@ -1,29 +1,19 @@
package org.drools.runtime.pipeline.impl;
import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.OutputKeys;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
+import org.drools.FactHandle;
+import org.drools.common.DisconnectedFactHandle;
import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.xml.jaxb.util.JaxbListWrapper;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import org.w3c.dom.Node;
public class ResultTranslator {
@@ -32,13 +22,42 @@
public ResultTranslator() {}
+ private Object convert(Object obj) {
+ if (obj instanceof FactHandle && !(obj instanceof DisconnectedFactHandle)) {
+ return new DisconnectedFactHandle(((FactHandle) obj).toExternalForm());
+ }
+
+ Class<? extends Object> vClass = obj.getClass();
+ if (List.class.isAssignableFrom(vClass) && !JaxbListWrapper.class.equals(vClass)) {
+ JaxbListWrapper<Object> wrapper = new JaxbListWrapper<Object>(((List<?>) obj).size());
+ for (Object item : ((List<?>) obj)) {
+ wrapper.add(convert(item));
+ }
+ return wrapper;
+ }
+
+ return obj;
+ }
+
public String transform( ExecutionResultImpl executionResult, Marshaller marshaller ) throws JAXBException, TransformerException{
// Document document = documentBuilder.newDocument();
-
- StringWriter writer = new StringWriter();
- marshaller.marshal(executionResult, writer);
- return writer.toString();
+ //TODO {bauna} remove this try
+ try {
+ StringWriter writer = new StringWriter();
+ for (Map.Entry<String, Object> entry : executionResult.getFactHandles().entrySet()) {
+ entry.setValue(convert(entry.getValue()));
+ }
+
+ for (Map.Entry<String, Object> entry : executionResult.getResults().entrySet()) {
+ entry.setValue(convert(entry.getValue()));
+ }
+ marshaller.marshal(executionResult, writer);
+ return writer.toString();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
//
// Element results = document.createElement("results");
// Map<String, Object> executionResults = executionResult.getResults();
More information about the jboss-svn-commits
mailing list