[jboss-svn-commits] JBL Code SVN: r31238 - in labs/jbossrules/branches/camel_jaxb_marshaller-lucaz: drools-core/src/main/java/org/drools/command/runtime/rule and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 26 16:53:05 EST 2010


Author: lucazamador
Date: 2010-01-26 16:53:05 -0500 (Tue, 26 Jan 2010)
New Revision: 31238

Modified:
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xml
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java
Log:
jaxb command translator

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -18,6 +18,7 @@
 import org.drools.command.runtime.process.SignalEventCommand;
 import org.drools.command.runtime.process.StartProcessCommand;
 import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.command.runtime.rule.GetObjectCommand;
 import org.drools.command.runtime.rule.InsertElementsCommand;
 import org.drools.command.runtime.rule.InsertObjectCommand;
 import org.drools.command.runtime.rule.QueryCommand;
@@ -85,7 +86,8 @@
 //        @XmlElement(name = "get-global", type = GetGlobalCommand.class),
 //        @XmlElement(name = "insert-elements", type = InsertElementsCommand.class),
 //        @XmlElement(name = "query", type = QueryCommand.class),
-        @XmlElement(name = "insert", type = InsertObjectCommand.class)
+        @XmlElement(name = "insert", type = InsertObjectCommand.class),
+        @XmlElement(name = "get-object", type = GetObjectCommand.class)
     })
     protected List<GenericCommand<?>> commands;
 
@@ -127,7 +129,6 @@
         return this.commands;
     }
 
-
     public Void execute(Context context) {
         for ( GenericCommand<?> command : commands ) {
             ((GenericCommand<?>)command).execute( context );

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -1,23 +1,34 @@
 package org.drools.command.runtime.rule;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.common.DisconnectedFactHandle;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
+ at XmlRootElement(name="get-object")
+ at XmlAccessorType(XmlAccessType.NONE)
 public class GetObjectCommand
     implements
     GenericCommand<Object> {
 
     private FactHandle factHandle;
     private String     outIdentifier;
+    
+    public GetObjectCommand() { }
 
     public GetObjectCommand(FactHandle factHandle) {
         this.factHandle = factHandle;
     }
 
+    @XmlAttribute(name="out-identifier", required=true)
     public String getOutIdentifier() {
         return outIdentifier;
     }
@@ -26,7 +37,12 @@
         this.outIdentifier = outIdentifier;
     }
 
-    public Object execute(Context context) {
+    @XmlAttribute(name="factHandle", required=true)
+    public void setFactHandleString(String factHandleString) {
+    	factHandle = new DisconnectedFactHandle(factHandleString);
+	}
+
+	public Object execute(Context context) {
         StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
         
         Object object = ksession.getObject( factHandle );

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -14,8 +14,8 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
- at XmlRootElement
- at XmlAccessorType( XmlAccessType.NONE )
+ at XmlRootElement(name="insert")
+ at XmlAccessorType(XmlAccessType.NONE)
 public class InsertObjectCommand
     implements
     GenericCommand<FactHandle> {

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -16,13 +16,14 @@
  * limitations under the License.
  */
 
+import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlTransient;
 
 import org.drools.FactHandle;
-import org.drools.runtime.rule.WorkingMemoryEntryPoint;
 import org.drools.reteoo.LeftTuple;
 import org.drools.reteoo.RightTuple;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
 
 /**
  * Implementation of <code>FactHandle</code>.
@@ -138,6 +139,11 @@
         return "0:" + this.id + ":" + getIdentityHashCode() + ":" + getObjectHashCode() + ":" + getRecency();
     }
 
+    @XmlElement(name="external-form")
+    public String getExternalForm() {
+    	return toExternalForm();
+    }
+    
     /**
      * @see Object
      */
@@ -145,6 +151,7 @@
         return "[fact " + toExternalForm() + ":" + this.object + "]";
     }
 
+    @XmlTransient
     public long getRecency() {
         return this.recency;
     }
@@ -167,6 +174,7 @@
         return ( this.id != -1 );
     }
     
+    @XmlTransient
     public Object getObject() {
         return this.object;
     }
@@ -178,6 +186,7 @@
     /**
      * @return the key
      */
+    @XmlTransient
     public EqualityKey getEqualityKey() {
         return this.key;
     }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -5,14 +5,27 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
 import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 import org.drools.runtime.ExecutionResults;
 
 @XmlRootElement(name="execution-results")
+ at XmlAccessorType(XmlAccessType.NONE)
 public class ExecutionResultImpl implements ExecutionResults, Serializable {
-    Map<String, Object> results = new HashMap<String, Object>();    
-    Map<String, Object> facts = new HashMap<String, Object>();
+	
+	private static final long serialVersionUID = 1L;
+	
+	@XmlJavaTypeAdapter(ExecutionResultAdapter.class)
+	@XmlElement(name="results")
+    HashMap<String, Object> results = new HashMap<String, Object>();
+//	@XmlJavaTypeAdapter(ExecutionResultAdapter.class)
+	@XmlElement(name="facts")
+	HashMap<String, Object> facts = new HashMap<String, Object>();
     
     /* (non-Javadoc)
      * @see org.drools.batchexecution.BatchExecutionResult#getIdentifiers()
@@ -36,7 +49,7 @@
         return this.results;
     }
 
-    public void setResults(Map<String, Object> results) {
+    public void setResults(HashMap<String, Object> results) {
         this.results = results;
     }
     
@@ -44,7 +57,7 @@
         return this.facts;
     }    
     
-    public void setFactHandles(Map<String, Object> facts) {
+    public void setFactHandles(HashMap<String, Object> facts) {
         this.facts = facts;
     }
 }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -8,6 +8,7 @@
 import java.io.StringReader;
 
 import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
@@ -18,13 +19,16 @@
 import org.drools.KnowledgeBase;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.command.runtime.BatchExecutionCommand;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.impl.StatelessKnowledgeSessionImpl;
 import org.drools.io.Resource;
 import org.drools.io.ResourceFactory;
 import org.drools.reteoo.ReteooRuleBase;
 import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.impl.ExecutionResultAdapter;
 import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.impl.CommandTranslator;
 import org.drools.runtime.pipeline.impl.ServiceManagerPipelineContextImpl;
 import org.drools.vsm.ServiceManager;
 import org.drools.vsm.local.ServiceManagerLocalClient;
@@ -41,6 +45,7 @@
  */
 public class DroolsJaxbDataFormat implements DataFormat {
 
+	private CommandTranslator cmdTranslator;
 	private Unmarshaller unmarshaller;
 	private Marshaller marshaller;
 
@@ -48,17 +53,23 @@
 		JAXBContext jaxbContext = createJaxbContext();
 		this.unmarshaller = jaxbContext.createUnmarshaller();
 		this.marshaller = jaxbContext.createMarshaller();
+		this.marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
 		this.marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+		this.marshaller.setAdapter(new ExecutionResultAdapter());
+
+		this.cmdTranslator = new CommandTranslator(unmarshaller);
 	}
 
 	public void marshal(Exchange exchange, Object graph, OutputStream stream)
 	throws Exception {
 
-		System.out.println("JaxbDataFormat marshal");
-
 		Object body = exchange.getIn().getBody();
 
-		this.marshaller.marshal(body, stream);
+		try {
+			this.marshaller.marshal(body, stream);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 
 		stream.flush();
 
@@ -66,14 +77,12 @@
 
 	public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
 
-		System.out.println("JaxbDataFormat unmarshal");
-
 		PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
 		Document d = exchange.getIn().getBody(Document.class);
 		Object body = exchange.getIn().getBody();
 		String name = d.getDocumentElement().getAttribute("lookup");
-//        JAXBContext jaxbContext = (JAXBContext) context.getProperties().get("jaxb-context");
-//        this.unmarshaller = getUnmarshaller(jaxbContext);
+		//        JAXBContext jaxbContext = (JAXBContext) context.getProperties().get("jaxb-context");
+		//        this.unmarshaller = getUnmarshaller(jaxbContext);
 		ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
 		ServiceManager sm = vsmContext.getServiceManager();
 		CommandExecutor executor = sm.lookup(name);
@@ -113,8 +122,18 @@
 		} else {
 			throw new IllegalArgumentException( "exchange input body object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
 		}
-//        context.getProperties().put("jaxb-context", jaxbCtx);
+
+		if ( payload instanceof JAXBElement ) {
+			payload = ((JAXBElement<?>) payload).getValue();
+		}
+
+		if (payload instanceof BatchExecutionCommand) {
+			payload = cmdTranslator.transform((BatchExecutionCommand) payload);
+		}
+
+		//        context.getProperties().put("jaxb-context", jaxbCtx);
 		exchange.setProperty("drools-context", context);
+
 		return payload;
 	}
 

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -24,22 +24,33 @@
 public class CamelEndpointWithJaxbTest extends DroolsCamelTestSupport {
 	
     private String handle;
+//	private JAXBContext jaxbContext;
+    
+//    public void testSimple() throws JAXBException {
+//    	ExecutionResultImpl res = new ExecutionResultImpl();
+//    	HashMap<String, Object> results = new HashMap<String, Object>();
+//    	results.put("name", new String("lucaz"));
+//		res.setResults(results);
+//    	Marshaller marshaller = jaxbContext.createMarshaller();
+//    	marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+//    	marshaller.marshal(res, System.out);
+//    }
 
     public void testSessionInsert() throws Exception {
 
         String cmd = "<batch-execution lookup=\"ksession1\">\n" +
         				"<insert out-identifier=\"lucaz\">\n" +
         				  "<object>\n" +
-	        				"<org.drools.model.person.Person>\n" +
-	                        	"<name>lucaz</name>\n" +
-        						"<age>25</age>\n" +
-	                        "</org.drools.model.person.Person>\n" +
+        				  	"<Person xmlns=\"http://drools.org/model\" >\n" +
+        				  	  "<name>lucaz</name>\n" +
+        				  	  "<age>25</age>\n" +
+        		    		"</Person>\n" +
 	                      "</object>\n" +
         				"</insert>" +
             		 "</batch-execution>\n";
 
         Object requestBody = template.requestBody("direct:test-with-session", cmd);
-        System.out.println("output: " + new String((byte[])requestBody));
+        System.out.println(new String((byte[])requestBody));
         
 //        String outXml = new String((byte[])template.requestBody("direct:test-with-session", cmd));
         
@@ -59,7 +70,37 @@
 //        assertEquals(expectedXml, outXml);
 
     }
+    
+    public void testSessionGetObject() throws Exception {
+    	
+//    	String cmd = "" +
+//			    	"<batch-execution lookup=\"ksession1\">\n" +
+//			    		"<get-object out-identifier=\"rider\" factHandle=\""+ handle +"\"/>\n" +
+//			    	"</batch-execution>\n";
+//
+//    	String outXml = new String((byte[])template.requestBody("direct:test-with-session", cmd));
+//    	
+//    	System.out.println(outXml);
+//    	
+//    	Object requestBody = template.requestBody("direct:test-with-session", cmd);
+//    	System.out.println(requestBody);
 
+//    	ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML(outXml);
+//    	Person person = (Person) result.getValue("rider");
+//    	assertEquals("Hadrian", person.getName());
+//
+//    	String expectedXml = "<execution-results>\n" +
+//					    	"  <result identifier=\"rider\">\n" +
+//					    	"    <org.drools.pipeline.camel.Person>\n" +
+//					    	"      <name>Hadrian</name>\n" +
+//					    	"    </org.drools.pipeline.camel.Person>\n" +
+//					    	"  </result>\n" +
+//					    	"</execution-results>";
+//
+//    	assertEquals(expectedXml, outXml);
+
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
@@ -90,7 +131,8 @@
     	Options xjcOpts = new Options();
         xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
 
-        String[] classNames = null;
+        String classNames[] = null;
+        
         try {
 			classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource("person.xsd", getClass()),
 			                                                          kbuilder,

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xml
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xml	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xml	2010-01-26 21:53:05 UTC (rev 31238)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<person xmlns="http://drools.org/model/person" >
-    <name>lucaz</name>
-    <age>25</age>
-</person>
\ No newline at end of file
+<Person xmlns="http://drools.org/model" >
+	<name>lucaz</name>
+	<age>25</age>
+</Person>
\ No newline at end of file

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd	2010-01-26 21:53:05 UTC (rev 31238)
@@ -1,9 +1,9 @@
-<xsd:schema xmlns:person="http://drools.org/model/person" 
+<xsd:schema xmlns:person="http://drools.org/model" 
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-	        targetNamespace="http://drools.org/model/person"
+	        targetNamespace="http://drools.org/model"
 	        elementFormDefault="qualified" >
 	        
-	<xsd:element name="person">
+	<xsd:element name="Person">
 		<xsd:complexType>
 			<xsd:sequence>
 				<xsd:element name="name" type="xsd:string" />

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -5,7 +5,6 @@
 import java.util.List;
 import java.util.Map;
 
-import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Unmarshaller;
 
@@ -24,14 +23,14 @@
  * @author Wolfgang Laun
  */
 public class CommandTranslator {
-    private JaxbTransformer jaxbTransformer;
+    private Unmarshaller unmarshaller;
     private Map<Class<?>,CommandTransformer> class2trans;
     
     /**
      * Constructor
      *  
      */
-    public CommandTranslator( JaxbTransformer jaxbTransformer ){
+    public CommandTranslator( Unmarshaller unmarshaller ){
         class2trans = new HashMap<Class<?>,CommandTransformer>();
         class2trans.put( BatchExecutionCommand.class,   new BatchExecutionTransformer() );
         class2trans.put( InsertElementsCommand.class,   new InsertElementsTransformer() );
@@ -40,7 +39,7 @@
         class2trans.put( SetGlobalCommand.class,        new SetGlobalTransformer() );
         class2trans.put( SignalEventCommand.class,      new SignalEventTransformer() );
         class2trans.put( StartProcessCommand.class,     new StartProcessTransformer() );
-        this.jaxbTransformer = jaxbTransformer;
+        this.unmarshaller = unmarshaller;
     }
     
     /**
@@ -50,11 +49,12 @@
      * the object's class.
      * 
      * @param xmlCmds the list of XML elements representing Drools command objects
+     * @return 
      * @return a list of <tt>Command&lt;?&gt;</tt> objects
      */
-    public void transform( BatchExecutionCommand batchExecution ){
+    public GenericCommand<?> transform( BatchExecutionCommand batchExecution ){
         CommandTransformer ct = class2trans.get( batchExecution.getClass() );
-        ct.transform( this, batchExecution );
+        return ct.transform( this, batchExecution );
     }
 
     CommandTransformer getCommandTransformer( Class<?> clazz ){
@@ -64,9 +64,7 @@
     protected Object makeObject( Element element ){        
         Object obj = null;
         try {
-            JAXBContext ctxt = jaxbTransformer.getContext();
-            Unmarshaller um = ctxt.createUnmarshaller();
-            obj = um.unmarshal( element );
+            obj = unmarshaller.unmarshal( element.getFirstChild() );
         } catch (JAXBException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
@@ -89,8 +87,7 @@
 class BatchExecutionTransformer extends CommandTransformer {
     public GenericCommand<?> transform( CommandTranslator cmdTrans, Object o ){
         BatchExecutionCommand be = (BatchExecutionCommand)o;
-//        List<GenericCommand<?>> xmlCmds = be.getCommands();
-        List<GenericCommand<?>> xmlCmds = null;
+        List<GenericCommand<?>> xmlCmds = be.getCommands();
         for( int i = 0; i < xmlCmds.size(); i++ ){
             GenericCommand<?> cmd = xmlCmds.get( i );
             CommandTransformer ct = cmdTrans.getCommandTransformer( cmd.getClass() );
@@ -102,9 +99,6 @@
     }
 }
 
-
-
-
 /**
  * Class for transforming an InsertElements command.
  */
@@ -114,12 +108,10 @@
         Iterable<?> ioList = ie.getObjects();        
         List<Object> coList = new ArrayList<Object>();
         for( Object io: ioList ){
-            System.out.println( io.getClass() );
             Element el = (Element)io;
             Object co = ct.makeObject( el );
             coList.add( co );
         }
-        System.out.println( "insert " + coList.size() + " elements" );
         ie.setObjects( coList );
         return ie;
     }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java	2010-01-26 21:23:44 UTC (rev 31237)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java	2010-01-26 21:53:05 UTC (rev 31238)
@@ -68,13 +68,6 @@
     		result = ((JAXBElement<?>) result).getValue();
     	}
 
-    	if( result instanceof BatchExecutionCommand ){
-    		if( cmdTrans == null ){
-    			cmdTrans = new CommandTranslator( this );
-    		}
-    		cmdTrans.transform( (BatchExecutionCommand)result );
-    	}
-
     	emit( result,
     			context );
     }


More information about the jboss-svn-commits mailing list