[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