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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Jan 21 15:59:44 EST 2010


Author: lucazamador
Date: 2010-01-21 15:59:42 -0500 (Thu, 21 Jan 2010)
New Revision: 31186

Removed:
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/jaxb.index
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/jaxb.index
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java
Modified:
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml
   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/SetGlobalCommand.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/BatchExecutionImpl.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-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/DroolsJaxbHelperProviderImpl.java
   labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
Log:
InserObjectCommand working, added temporarily jaxb dependencies to core

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml	2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml	2010-01-21 20:59:42 UTC (rev 31186)
@@ -40,6 +40,18 @@
         <groupId>org.joda</groupId>  
         <artifactId>com.springsource.org.joda.time</artifactId>  
     </dependency-->
+
+	<dependency>
+		<groupId>com.sun.xml.bind</groupId>
+		<artifactId>jaxb-impl</artifactId>
+		<version>2.0.3</version>
+	</dependency>
+
+	<dependency>
+		<groupId>com.sun.xml.bind</groupId>
+		<artifactId>jaxb-xjc</artifactId>
+		<version>2.0.3</version>
+	</dependency>                
     
   </dependencies>
   

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-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -8,6 +8,7 @@
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 import org.drools.command.Context;
@@ -50,9 +51,10 @@
  * 
  * 
  */
+ at XmlRootElement(name="batch-execution")
 @XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "BatchExecutionCommand", propOrder = {
-    "commands"
+ at XmlType(name = "batch-execution", propOrder = {
+    "lookup", "commands"
 })
 public class BatchExecutionCommand implements GenericCommand<Void> {
 	
@@ -75,14 +77,14 @@
 	
     @XmlElements({
         @XmlElement(name = "set-global", type = SetGlobalCommand.class),
-        @XmlElement(name = "complete-work-item", type = CompleteWorkItemCommand.class),
-        @XmlElement(name = "abort-work-item", type = AbortWorkItemCommand.class),
-        @XmlElement(name = "signal-event", type = SignalEventCommand.class),
-        @XmlElement(name = "fire-all-rules", type = FireAllRulesCommand.class),
-        @XmlElement(name = "start-process", type = StartProcessCommand.class),
-        @XmlElement(name = "get-global", type = GetGlobalCommand.class),
-        @XmlElement(name = "insert-elements", type = InsertElementsCommand.class),
-        @XmlElement(name = "query", type = QueryCommand.class),
+//        @XmlElement(name = "complete-work-item", type = CompleteWorkItemCommand.class),
+//        @XmlElement(name = "abort-work-item", type = AbortWorkItemCommand.class),
+//        @XmlElement(name = "signal-event", type = SignalEventCommand.class),
+//        @XmlElement(name = "fire-all-rules", type = FireAllRulesCommand.class),
+//        @XmlElement(name = "start-process", type = StartProcessCommand.class),
+//        @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)
     })
     protected List<GenericCommand<?>> commands;

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java	2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -4,6 +4,7 @@
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
 
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
@@ -13,6 +14,7 @@
 import org.drools.result.SetGlobalResult;
 import org.drools.runtime.StatefulKnowledgeSession;
 
+ at XmlRootElement
 @XmlAccessorType( XmlAccessType.NONE )
 public class SetGlobalCommand
     implements
@@ -21,7 +23,7 @@
     @XmlAttribute(required = true)
     private String identifier;
 
-    @XmlElement
+    @XmlElement(name="")
     private Object object;
     
     @XmlAttribute(name = "out-identifier")

Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index	2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index	2010-01-21 20:59:42 UTC (rev 31186)
@@ -1 +0,0 @@
-BatchExecutionCommand
\ No newline at end of file

Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/jaxb.index
===================================================================

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-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -1,5 +1,11 @@
 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.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
@@ -8,14 +14,18 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
+ at XmlRootElement
+ at XmlAccessorType( XmlAccessType.NONE )
 public class InsertObjectCommand
     implements
     GenericCommand<FactHandle> {
 
 	private static final long serialVersionUID = 1L;
 
+	@XmlElement
 	private Object  object;
 
+	@XmlAttribute(name="out-identifier", required=true)
     private String  outIdentifier;
 
     private boolean returnObject = true;

Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/jaxb.index
===================================================================

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-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -16,6 +16,9 @@
  * limitations under the License.
  */
 
+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;
@@ -26,6 +29,7 @@
  * @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
  * @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
  */
+ at XmlRootElement
 public class DefaultFactHandle
     implements
     InternalFactHandle {
@@ -193,6 +197,7 @@
         return false;
     }
 
+    @XmlTransient
     public RightTuple getRightTuple() {
         return rightTuple;
     }
@@ -205,10 +210,12 @@
         this.leftTuple = leftTuple;
     }
 
+    @XmlTransient
     public LeftTuple getLeftTuple() {
         return this.leftTuple;
     }
 
+    @XmlTransient
     public WorkingMemoryEntryPoint getEntryPoint() {
         return entryPoint;
     }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java	2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -1,21 +1,23 @@
 package org.drools.runtime.impl;
 
-import java.util.Collection;
 import java.util.List;
 
+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.reteoo.ReteooWorkingMemory;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.process.ProcessInstance;
-import org.drools.vsm.ServiceManager;
 
+ at XmlRootElement
+public class BatchExecutionImpl implements GenericCommand<Void> {
 
-public class BatchExecutionImpl implements GenericCommand<Void> {
+	private static final long serialVersionUID = 1L;
+
 	private List<GenericCommand> commands;
 	
 	private String lookup;
+	
+	public BatchExecutionImpl() {
+	}
 
 	public BatchExecutionImpl(List<GenericCommand> commands) {
         this.commands = commands;

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-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -5,8 +5,11 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.xml.bind.annotation.XmlRootElement;
+
 import org.drools.runtime.ExecutionResults;
 
+ at XmlRootElement(name="execution-results")
 public class ExecutionResultImpl implements ExecutionResults, Serializable {
     Map<String, Object> results = new HashMap<String, Object>();    
     Map<String, Object> facts = new HashMap<String, Object>();

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-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -9,6 +9,7 @@
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
 import javax.xml.bind.Unmarshaller;
 import javax.xml.transform.Source;
 
@@ -24,7 +25,6 @@
 import org.drools.reteoo.ReteooRuleBase;
 import org.drools.runtime.CommandExecutor;
 import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.impl.JaxbFromXmlVsmTransformer;
 import org.drools.runtime.pipeline.impl.ServiceManagerPipelineContextImpl;
 import org.drools.vsm.ServiceManager;
 import org.drools.vsm.local.ServiceManagerLocalClient;
@@ -41,145 +41,105 @@
  */
 public class DroolsJaxbDataFormat implements DataFormat {
 
-	private JaxbFromXmlVsmTransformer transformer;
 	private Unmarshaller unmarshaller;
-    private String charset;
+	private Marshaller marshaller;
 
-    public DroolsJaxbDataFormat() throws JAXBException {
-    	JAXBContext jaxbContext = createJaxbContext();
-    	transformer = new JaxbFromXmlVsmTransformer(jaxbContext);
-    	transformer.addContextForCommands();
-    	unmarshaller = transformer.getUnmarshaller();
-    }
+	public DroolsJaxbDataFormat() throws JAXBException {
+		JAXBContext jaxbContext = createJaxbContext();
+		this.unmarshaller = jaxbContext.createUnmarshaller();
+		this.marshaller = jaxbContext.createMarshaller();
+		this.marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+	}
 
-    public void marshal(Exchange exchange, Object graph, OutputStream stream)
-            throws Exception {
+	public void marshal(Exchange exchange, Object graph, OutputStream stream)
+	throws Exception {
 
-    	System.out.println("JaxbDataFormat marshal");
-    	
-//        PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
-//        JAXBContext jaxbContext = (JAXBContext) context.getProperties().get("jaxb-context");
-//        this.unmarshaller = getUnmarshaller(jaxbContext);
+		System.out.println("JaxbDataFormat marshal");
 
-        String result = null;
-        Object body = exchange.getIn().getBody();
-        
-        if ( body instanceof File ) {
-        	result = (String) this.unmarshaller.unmarshal( (File) body );
-        } else if ( body instanceof InputStream ) {
-        	result = (String) this.unmarshaller.unmarshal( (InputStream) body );
-        } else if ( body instanceof Reader ) {
-        	result = (String) this.unmarshaller.unmarshal( (Reader) body );
-        } else if ( body instanceof Source ) {
-        	result = (String) this.unmarshaller.unmarshal( (Source) body );
-        } else if ( body instanceof InputSource ) {
-        	result = (String) this.unmarshaller.unmarshal( (InputSource) body );
-        }  else if ( body instanceof Resource ) {
-        	result = (String) this.unmarshaller.unmarshal( (( Resource ) body).getReader() );
-        }  else if ( body instanceof String ) {
-        	result = (String) this.unmarshaller.unmarshal( new StringReader( ( String ) body ) );
-        } else {
-            throw new IllegalArgumentException( "exchange input body object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
-        }
+		Object body = exchange.getIn().getBody();
 
-        byte[] bytes;
-        if (charset != null) {
-            bytes = result.getBytes(charset);
-        } else {
-            bytes = result.getBytes();
-        }
+		this.marshaller.marshal(body, stream);
 
-        stream.write(bytes);
+		stream.flush();
 
-    }
+	}
 
-//    private Unmarshaller getUnmarshaller(JAXBContext jaxbCtx) throws JAXBException {
-//    	if (this.unmarshaller==null) {
-//    		this.unmarshaller = jaxbCtx.createUnmarshaller();
-//    	}
-//		return this.unmarshaller;
-//	}
-
 	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");
+		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);
-        ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
-        ServiceManager sm = vsmContext.getServiceManager();
-        CommandExecutor executor = sm.lookup(name);
-        if (executor == null) {
-            throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
-        }
-        vsmContext.setCommandExecutor(executor);
-        ClassLoader cl = null;
-        if (executor instanceof StatefulKnowledgeSessionImpl) {
-            cl = ((ReteooRuleBase) ((StatefulKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
-        } else if (executor instanceof StatelessKnowledgeSessionImpl) {
-            cl = ((ReteooRuleBase) ((StatelessKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
-        } else {
-            throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
-        }
-        vsmContext.setClassLoader(cl);
-        Object payload = null;
-        if ( body instanceof File ) {
-        	payload = (String) this.unmarshaller.unmarshal( (File) body );
-        } else if ( body instanceof InputStream ) {
-        	payload = (String) this.unmarshaller.unmarshal( (InputStream) body );
-        } else if ( body instanceof Reader ) {
-        	payload = (String) this.unmarshaller.unmarshal( (Reader) body );
-        } else if ( body instanceof Source ) {
-        	payload = (String) this.unmarshaller.unmarshal( (Source) body );
-        } else if ( body instanceof InputSource ) {
-        	payload = (String) this.unmarshaller.unmarshal( (InputSource) body );
-        }  else if ( body instanceof Resource ) {
-        	payload = (String) this.unmarshaller.unmarshal( (( Resource ) body).getReader() );
-        }  else if ( body instanceof String ) {
-        	System.out.println("body instanceof String == true");
-        	try {
-				payload = (String) this.unmarshaller.unmarshal( new StringReader( ( String ) body ) );
-			} catch (JAXBException e) {
-				// TODO Auto-generated catch block
+		ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
+		ServiceManager sm = vsmContext.getServiceManager();
+		CommandExecutor executor = sm.lookup(name);
+		if (executor == null) {
+			throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
+		}
+		vsmContext.setCommandExecutor(executor);
+		ClassLoader cl = null;
+		if (executor instanceof StatefulKnowledgeSessionImpl) {
+			cl = ((ReteooRuleBase) ((StatefulKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
+		} else if (executor instanceof StatelessKnowledgeSessionImpl) {
+			cl = ((ReteooRuleBase) ((StatelessKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
+		} else {
+			throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
+		}
+		vsmContext.setClassLoader(cl);
+		Object payload = null;
+		if ( body instanceof File ) {
+			payload = (String) this.unmarshaller.unmarshal( (File) body );
+		} else if ( body instanceof InputStream ) {
+			payload = (String) this.unmarshaller.unmarshal( (InputStream) body );
+		} else if ( body instanceof Reader ) {
+			payload = (String) this.unmarshaller.unmarshal( (Reader) body );
+		} else if ( body instanceof Source ) {
+			payload = (String) this.unmarshaller.unmarshal( (Source) body );
+		} else if ( body instanceof InputSource ) {
+			payload = (String) this.unmarshaller.unmarshal( (InputSource) body );
+		}  else if ( body instanceof Resource ) {
+			payload = (String) this.unmarshaller.unmarshal( (( Resource ) body).getReader() );
+		}  else if ( body instanceof String ) {
+			try {
+				payload = this.unmarshaller.unmarshal( new StringReader( ( String ) body ) );
+			} catch (Exception e) {
 				e.printStackTrace();
 			}
-        	System.out.println("body unmarshaled");
-        } else {
-            throw new IllegalArgumentException( "exchange input body object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
-        }
+			System.out.println("body unmarshaled");
+		} 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);
-        exchange.setProperty("drools-context", context);
-        System.out.println("body txt: " + body.getClass().getCanonicalName());
-        System.out.println("return payload: " + payload);
+		exchange.setProperty("drools-context", context);
 		return payload;
-    }
-	
+	}
+
 	/**
-	 * Only to share temporaly the model definition
+	 * Only to share temporarily the model definition, this must be replaced with the JaxbContext inside the Exchange as a property
 	 * @return jaxb context
 	 */
 	private JAXBContext createJaxbContext() {
 		Options xjcOpts = new Options();
-        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+		xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
 		ServiceManagerLocalClient serviceManager = new ServiceManagerLocalClient();
 		KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactory().newKnowledgeBuilder();
 		String[] classNames = null;
-        try {
+		try {
 			classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource("person.xsd", getClass()),
-			                                                          kbuilder,
-			                                                          xjcOpts,
-			                                                          "xsd" );
+					kbuilder,
+					xjcOpts,
+			"xsd" );
 		} catch (IOException e) {
 			System.out.println("Errors while adding xsd model. " + kbuilder.getErrors());
 		}
 
-    	KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactory().newKnowledgeBase();
+		KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactory().newKnowledgeBase();
 		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-		
+
 		JAXBContext jaxbContext = null;
 		try {
 			jaxbContext = KnowledgeBuilderHelper.newJAXBContext( classNames, kbase );

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-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -2,21 +2,16 @@
 
 import java.io.IOException;
 
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.drools.KnowledgeBase;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.ResourceType;
 import org.drools.builder.help.KnowledgeBuilderHelper;
 import org.drools.command.runtime.rule.InsertObjectCommand;
-import org.drools.common.InternalFactHandle;
 import org.drools.io.ResourceFactory;
 import org.drools.pipeline.camel.Person;
 import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.help.BatchExecutionHelper;
 import org.drools.runtime.rule.FactHandle;
 
 import com.sun.tools.xjc.Language;
@@ -32,11 +27,19 @@
 
     public void testSessionInsert() throws Exception {
 
-        String cmd = "<BatchExecutionCommand lookup=\"ksession1\">\n" +
-            		 "</BatchExecutionCommand>\n";
+        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" +
+	                      "</object>\n" +
+        				"</insert>" +
+            		 "</batch-execution>\n";
 
         Object requestBody = template.requestBody("direct:test-with-session", cmd);
-        System.out.println("output: " + requestBody);
+        System.out.println("output: " + new String((byte[])requestBody));
         
 //        String outXml = new String((byte[])template.requestBody("direct:test-with-session", cmd));
         
@@ -113,13 +116,13 @@
     	KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactory().newKnowledgeBase();
 		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
 		
-		JAXBContext jaxbContext = null;
-		try {
-			jaxbContext = KnowledgeBuilderHelper.newJAXBContext( classNames, kbase );
-		} catch (JAXBException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
+//		JAXBContext jaxbContext = null;
+//		try {
+//			jaxbContext = KnowledgeBuilderHelper.newJAXBContext( classNames, kbase );
+//		} catch (JAXBException e) {
+//			// TODO Auto-generated catch block
+//			e.printStackTrace();
+//		}
 		// put this jaxbContext into the camel-context
     	
     	StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();

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-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -89,7 +89,8 @@
 class BatchExecutionTransformer extends CommandTransformer {
     public GenericCommand<?> transform( CommandTranslator cmdTrans, Object o ){
         BatchExecutionCommand be = (BatchExecutionCommand)o;
-        List<GenericCommand<?>> xmlCmds = be.getCommands();
+//        List<GenericCommand<?>> xmlCmds = be.getCommands();
+        List<GenericCommand<?>> xmlCmds = null;
         for( int i = 0; i < xmlCmds.size(); i++ ){
             GenericCommand<?> cmd = xmlCmds.get( i );
             CommandTransformer ct = cmdTrans.getCommandTransformer( cmd.getClass() );

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java	2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -35,7 +35,6 @@
 import javax.xml.bind.JAXBException;
 
 import org.drools.KnowledgeBase;
-import org.drools.RuleBase;
 import org.drools.builder.KnowledgeBuilder;
 import org.drools.builder.help.DroolsJaxbHelperProvider;
 import org.drools.builder.impl.KnowledgeBuilderImpl;
@@ -62,6 +61,14 @@
 public class DroolsJaxbHelperProviderImpl
     implements
     DroolsJaxbHelperProvider {
+	
+	private static final String[] JAXB_ANNOTATED_CMD = {"org.drools.command.runtime.BatchExecutionCommand",
+														"org.drools.command.runtime.rule.InsertObjectCommand",
+														"org.drools.runtime.impl.BatchExecutionImpl",
+														"org.drools.runtime.impl.ExecutionResultImpl",
+														"org.drools.common.DefaultFactHandle"
+														};
+	
     public String[] addXsdModel(Resource resource,
                              KnowledgeBuilder kbuilder,
                              Options xjcOpts,
@@ -141,8 +148,10 @@
                                       Map<String, ? > properties,
                                       KnowledgeBase kbase) throws JAXBException {
         ClassLoader classLoader = ((InternalRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader();
+        
+        
 
-        Class[] classes = new Class[classNames.length];
+        Class[] classes = new Class[classNames.length + JAXB_ANNOTATED_CMD.length];
         int i = 0;
         try {
             for ( i = 0; i < classNames.length; i++ ) {
@@ -152,7 +161,16 @@
             throw new JAXBException( "Unable to resolve class '" + classNames[i] + "'",
                                      e );
         }
-
+        int j = 0;
+        try {
+        	for (i = classNames.length; i < classes.length; i++, j++) {
+            	classes[i] = classLoader.loadClass( JAXB_ANNOTATED_CMD[j] );
+            }
+        } catch ( ClassNotFoundException e ) {
+            throw new JAXBException( "Unable to resolve class '" + JAXB_ANNOTATED_CMD[j] + "'",
+                                     e );
+        }
+        
         return JAXBContext.newInstance( classes,
                                         properties );
     }

Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java	2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -1,113 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.StringReader;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.Source;
-
-import org.drools.command.runtime.BatchExecutionCommand;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.impl.StatelessKnowledgeSessionImpl;
-import org.drools.io.Resource;
-import org.drools.reteoo.ReteooRuleBase;
-import org.drools.runtime.CommandExecutor;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.vsm.ServiceManager;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-
-/**
- * 
- * @author Lucas Amador
- *
- */
-public class JaxbFromXmlVsmTransformer extends JaxbTransformer implements Transformer {
-	
-	private CommandTranslator cmdTranslator;
-    private Unmarshaller unmarshaller;
-    private Object payload;
-
-    public JaxbFromXmlVsmTransformer(JAXBContext jaxbCtx) {
-    	super(jaxbCtx);
-    }
-
-    public void receive(Object object, PipelineContext context) {
-    	this.payload = processPayload(object, context);
-        emit( this.payload, context );
-    }
-    
-    public Object processPayload(Object object, PipelineContext context) {
-        
-        try {
-            Document d = (Document) object;
-            String name = d.getDocumentElement().getAttribute("lookup");
-            ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) context;
-            ServiceManager sm = vsmContext.getServiceManager();
-            CommandExecutor executor = sm.lookup(name);
-            if (executor == null) {
-                throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
-            }
-            vsmContext.setCommandExecutor(executor);
-            ClassLoader cl = null;
-            if (executor instanceof StatefulKnowledgeSessionImpl) {
-                cl = ((ReteooRuleBase) (( StatefulKnowledgeSessionImpl ) executor).getRuleBase()).getRootClassLoader();
-            } else if (executor instanceof StatelessKnowledgeSessionImpl) {
-                cl = ((ReteooRuleBase) (( StatelessKnowledgeSessionImpl ) executor).getRuleBase()).getRootClassLoader();
-            } else {
-                throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
-            }
-            vsmContext.setClassLoader(cl);
-            if ( object instanceof File ) {
-            	payload = this.unmarshaller.unmarshal( (File) object );
-            } else if ( object instanceof InputStream ) {
-            	payload = this.unmarshaller.unmarshal( (InputStream) object );
-            } else if ( object instanceof Reader ) {
-            	payload = this.unmarshaller.unmarshal( (Reader) object );
-            } else if ( object instanceof Source ) {
-            	payload = this.unmarshaller.unmarshal( (Source) object );
-            } else if ( object instanceof InputSource ) {
-            	payload = this.unmarshaller.unmarshal( (InputSource) object );
-            }  else if ( object instanceof Resource ) {
-            	payload = this.unmarshaller.unmarshal( (( Resource ) object).getReader() );
-            }  else if ( object instanceof String ) {
-            	payload = this.unmarshaller.unmarshal( new StringReader( ( String ) object ) );
-            } else {
-                throw new IllegalArgumentException( "signal object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
-            }
-        } catch (Exception e) {
-            handleException(this, object, e);
-        }
-        
-        if ( payload instanceof JAXBElement<?> ) {
-        	payload = ((JAXBElement<?>) payload).getValue();
-    	}
-
-    	if( payload instanceof BatchExecutionCommand ){
-    		if ( cmdTranslator == null ) {
-    			cmdTranslator = new CommandTranslator( this );
-    		}
-    		cmdTranslator.transform( (BatchExecutionCommand)payload );
-    	}
-        
-        return payload;
-    }
-
-	public Unmarshaller getUnmarshaller() {
-		if (this.unmarshaller==null) {
-			try {
-				this.unmarshaller = jaxbPrimaryContext.createUnmarshaller();
-			} catch (JAXBException e) {
-				handleException( this, null, e );
-			}
-		}
-		return unmarshaller;
-	}
-
-}

Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java	2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java	2010-01-21 20:59:42 UTC (rev 31186)
@@ -16,7 +16,8 @@
 
     public final static String COMMAND_PACKAGES = "org.drools.command.runtime:" +
 											      "org.drools.command.runtime.process:" +
-											      "org.drools.command.runtime.rule";
+											      "org.drools.command.runtime.rule:" +
+											      "org.drools.runtime.impl";
 
     public final static String RESULT_PACKAGE = "org.drools.process.result";
 



More information about the jboss-svn-commits mailing list