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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Feb 5 14:05:21 EST 2010


Author: lucazamador
Date: 2010-02-05 14:05:19 -0500 (Fri, 05 Feb 2010)
New Revision: 31461

Added:
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/Parameter.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMap.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMapAdapter.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/Brochure.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java
Removed:
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
Modified:
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
   labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
Log:
jaxb camel integration. Process Task commands impl

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,6 +1,7 @@
 package org.drools.command.impl;
 
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Map;
 
 import org.drools.KnowledgeBase;
@@ -162,7 +163,7 @@
                                         Map<String, Object> parameters) {
         StartProcessCommand command = new StartProcessCommand();
         command.setProcessId( processId );
-        command.setParameters( parameters );
+        command.setParameters( (HashMap<String, Object>) parameters );
         return commandService.execute( command );
     }
 

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,5 +1,6 @@
 package org.drools.command.impl;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -114,7 +115,7 @@
 			Map<String, Object> parameters) {
 		StartProcessCommand startProcess = new StartProcessCommand();
 		startProcess.setProcessId(processId);
-		startProcess.setParameters(parameters);
+		startProcess.setParameters((HashMap<String, Object>) parameters);
 		return startProcess;
 	}
 

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -21,7 +21,9 @@
 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.ModifyCommand;
 import org.drools.command.runtime.rule.QueryCommand;
+import org.drools.command.runtime.rule.RetractCommand;
 
 
 /**
@@ -77,17 +79,19 @@
 	}
 	
     @XmlElements({
+//        @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 = "start-process", type = StartProcessCommand.class),
+    	@XmlElement(name = "retract", type = RetractCommand.class),
+        @XmlElement(name = "get-global", type = GetGlobalCommand.class),
         @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 = "insert-elements", type = InsertElementsCommand.class),
+        @XmlElement(name = "query", type = QueryCommand.class),
         @XmlElement(name = "insert", type = InsertObjectCommand.class),
-        @XmlElement(name = "get-object", type = GetObjectCommand.class)
+        @XmlElement(name = "modify", type = ModifyCommand.class),
+        @XmlElement(name = "get-object", type = GetObjectCommand.class),
+        @XmlElement(name = "fire-all-rules", type = FireAllRulesCommand.class)
     })
     protected List<GenericCommand<?>> commands;
 

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,5 +1,9 @@
 package org.drools.command.runtime;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
@@ -7,13 +11,16 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.impl.ExecutionResultImpl;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class GetGlobalCommand
     implements
     GenericCommand<Object> {
 
 	private static final long serialVersionUID = 1L;
 	
+	@XmlAttribute
 	private String identifier;
+	@XmlAttribute(name="out-identifier")
     private String outIdentifier;
     
     public GetGlobalCommand() {

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,20 +1,31 @@
 package org.drools.command.runtime;
 
+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 org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
 import org.drools.runtime.StatefulKnowledgeSession;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class SetGlobalCommand
     implements
     GenericCommand<Void> {
 
+	@XmlAttribute(required=true)
     private String  identifier;
+	
+	@XmlElement
     private Object  object;
 
+    @XmlAttribute
     private String  outIdentifier;
 
+    @XmlAttribute
     private boolean out;
     
     public SetGlobalCommand() {

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,15 +1,20 @@
 package org.drools.command.runtime.process;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+
 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;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class AbortWorkItemCommand
     implements
     GenericCommand<Object> {
 
+	@XmlAttribute(name="id", required=true)
     private long workItemId;
     
     public AbortWorkItemCommand() {

Added: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/Parameter.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/Parameter.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/Parameter.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -0,0 +1,73 @@
+package org.drools.command.runtime.process;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "Parameter", propOrder = {
+    "value"
+})
+public class Parameter {
+    protected Object value;
+    @XmlAttribute(required = true)
+    protected String key;
+
+    Parameter(){
+    }
+    
+    Parameter(String key, Object value){
+    	this.key = key;
+    	this.value = value;
+    }
+    
+    /**
+     * Gets the value of the value property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link Object }
+     *     
+     */
+    public Object getValue() {
+        return value;
+    }
+
+    /**
+     * Sets the value of the value property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link Object }
+     *     
+     */
+    public void setValue(Object value) {
+        this.value = value;
+    }
+
+    /**
+     * Gets the value of the key property.
+     * 
+     * @return
+     *     possible object is
+     *     {@link String }
+     *     
+     */
+    public String getKey() {
+        return key;
+    }
+
+    /**
+     * Sets the value of the key property.
+     * 
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *     
+     */
+    public void setKey(String value) {
+        this.key = value;
+    }
+
+}


Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/Parameter.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMap.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMap.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMap.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -0,0 +1,15 @@
+package org.drools.command.runtime.process;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ParameterMap {
+
+	private List<Parameter> parameter;
+	public List<Parameter> getParameter(){
+		if (parameter == null) {
+			parameter = new ArrayList<Parameter>();
+		}
+		return parameter;
+	}
+}


Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMap.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMapAdapter.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMapAdapter.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMapAdapter.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -0,0 +1,29 @@
+package org.drools.command.runtime.process;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+public class ParameterMapAdapter extends XmlAdapter<HashMap<String, Object>, ParameterMap> {
+	@Override
+	public HashMap<String,Object> marshal( ParameterMap paramList ){
+		HashMap<String,Object> paramMap = new HashMap<String,Object>();
+		for( Parameter param: paramList.getParameter() ){
+			paramMap.put( param.getKey(), param.getValue() );
+		}
+		return paramMap;
+	}
+	
+	@Override
+	public ParameterMap unmarshal( HashMap<String,Object> paramMap ){
+		ParameterMap parameterMap = new ParameterMap();
+		List<Parameter> paramList = parameterMap.getParameter(); 
+		for( Map.Entry<String,Object> entry: paramMap.entrySet() ){
+			paramList.add( new Parameter( entry.getKey(), entry.getValue() ) );
+		}
+		return parameterMap;
+	}
+
+}


Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/ParameterMapAdapter.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,15 +1,24 @@
 package org.drools.command.runtime.process;
 
+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 org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.process.ProcessInstance;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class SignalEventCommand implements GenericCommand<Object> {
 	
+	@XmlAttribute(name="process-instance-id")
 	private long processInstanceId = -1;
+	@XmlAttribute(name="event-type", required=true)
 	private String eventType;
+	@XmlElement(name="event")
 	private Object event;	
 	
     public SignalEventCommand() {

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -4,53 +4,64 @@
 import java.util.List;
 import java.util.Map;
 
+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.XmlElementWrapper;
+
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
 import org.drools.process.instance.ProcessInstance;
-import org.drools.reteoo.ReteooWorkingMemory;
 import org.drools.runtime.StatefulKnowledgeSession;
+import org.w3c.dom.Element;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class StartProcessCommand implements GenericCommand<ProcessInstance> {
-	
+
+	@XmlAttribute(required = true)
 	private String processId;
-	private Map<String, Object> parameters = new HashMap<String, Object>();
+//	@XmlElement(name="parameter")
+//	@XmlJavaTypeAdapter(ParameterMapAdapter.class)
+	private HashMap<String, Object> parameters = new HashMap<String, Object>();
+	@XmlElementWrapper(name="data")
 	private List<Object> data = null;
 
-        public StartProcessCommand() {
-        }
+	public StartProcessCommand() {
+	}
 
-        public StartProcessCommand(String processId) {
-            this.processId = processId;
-        }
-	
+	public StartProcessCommand(String processId) {
+		this.processId = processId;
+	}
+
 	public String getProcessId() {
 		return processId;
 	}
-	
+
 	public void setProcessId(String processId) {
 		this.processId = processId;
 	}
-	
-	public Map<String, Object> getParameters() {
+
+	public HashMap<String, Object> getParameters() {
 		return parameters;
 	}
-	
-	public void setParameters(Map<String, Object> parameters) {
+
+	public void setParameters(HashMap<String, Object> parameters) {
 		this.parameters = parameters;
 	}
-	
+
 	public List<Object> getData() {
 		return data;
 	}
-	
+
 	public void setData(List<Object> data) {
 		this.data = data;
 	}
 
-    public ProcessInstance execute(Context context) {
-        StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
-        
+	public ProcessInstance execute(Context context) {
+		StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+
 		if (data != null) {
 			for (Object o: data) {
 				ksession.insert(o);
@@ -74,5 +85,24 @@
 		result += "]);";
 		return result;
 	}
+	
+	@XmlElement(name="parameter")
+	protected Object[] getXmlCourses() {
+		Object[] result = new Object[parameters.size()];
+		int e=0;
+		for (String id : parameters.keySet()) {
+			result[e++] = parameters.get(id);
+		}
+		return result;
+	}
 
+	//Used only for JAXB.  Helps deal w/ the underlying map.
+	protected void setXmlCourses(Object[] replacements){
+		parameters.clear();
+		for (Object c : replacements) {
+			Element element = (Element)c;
+			parameters.put(element.getAttribute("identifier"), element.getFirstChild());
+		}
+	}
+
 }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,19 +1,23 @@
 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 org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
 import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
-import org.drools.runtime.ExecutionResults;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.impl.ExecutionResultImpl;
 import org.drools.runtime.rule.AgendaFilter;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class FireAllRulesCommand
     implements
     GenericCommand<Integer> {
 
+	@XmlAttribute
     private int          max          = -1;
     private AgendaFilter agendaFilter = null;
     private String       outIdentifier;

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -3,7 +3,6 @@
 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;
@@ -13,7 +12,6 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
- at XmlRootElement(name="get-object")
 @XmlAccessorType(XmlAccessType.NONE)
 public class GetObjectCommand
     implements
@@ -38,8 +36,8 @@
     }
 
     @XmlAttribute(name="factHandle", required=true)
-    public void setFactHandleString(String factHandleString) {
-    	factHandle = new DisconnectedFactHandle(factHandleString);
+    public void setFactHandleFromString(String factHandleId) {
+    	factHandle = new DisconnectedFactHandle(factHandleId);
 	}
 
 	public Object execute(Context context) {

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -4,6 +4,11 @@
 import java.util.Collection;
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
@@ -11,31 +16,35 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
+ at XmlAccessorType( XmlAccessType.NONE )
 public class InsertElementsCommand
     implements
     GenericCommand<Collection<FactHandle>> {
 
 	private static final long serialVersionUID = 1L;
 
-	public Collection<?> objects;
+    @XmlAnyElement
+	public List<Object> objects;
 
+    @XmlAttribute
     private String  outIdentifier;
 
+    @XmlAttribute
     private boolean returnObject = true;
 
     public InsertElementsCommand() {
-        this.objects = new ArrayList();
+        this.objects = new ArrayList<Object>();
     }
 
-    public InsertElementsCommand(Collection<?> objects) {
+    public InsertElementsCommand(List<Object> objects) {
         this.objects = objects;
     }
 
-    public Collection<?> getObjects() {
+    public List<Object> getObjects() {
         return this.objects;
     }
 
-    public void setObjects(List<?> objects) {
+    public void setObjects(List<Object> objects) {
         this.objects = objects;
     }
 

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -2,9 +2,8 @@
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
 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;
@@ -14,7 +13,6 @@
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
- at XmlRootElement(name="insert")
 @XmlAccessorType(XmlAccessType.NONE)
 public class InsertObjectCommand
     implements
@@ -22,7 +20,7 @@
 
 	private static final long serialVersionUID = 1L;
 
-	@XmlElement
+	@XmlAnyElement
 	private Object  object;
 
 	@XmlAttribute(name="out-identifier", required=true)

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,17 +1,24 @@
 package org.drools.command.runtime.rule;
 
-import java.util.Collection;
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+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.Setter;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.common.DisconnectedFactHandle;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 import org.mvel2.MVEL;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class ModifyCommand
     implements
     GenericCommand<Object> {
@@ -24,9 +31,12 @@
 
 
     private FactHandle       handle;
+    @XmlAnyElement
     private List<Setter> setters;
 
-
+    public ModifyCommand() {
+    }
+    
     public ModifyCommand(FactHandle handle,
                          List<Setter> setters) {
         this.handle = handle;
@@ -47,10 +57,19 @@
     public FactHandle getFactHandle() {
         return this.handle;
     }
+    
+    @XmlAttribute(name="factHandle", required=true)
+	public void setFactHandleFromString(String factHandleId) {
+		handle = new DisconnectedFactHandle(factHandleId);
+	}
 
     public List<Setter> getSetters() {
         return this.setters;
     }
+    
+    public void setSetters(List<Setter> setters) {
+    	this.setters = setters;
+    }
 
     private String getMvelExpr() {
         StringBuilder sbuilder = new StringBuilder();
@@ -74,11 +93,17 @@
         return "modify() " + getMvelExpr();
     }
 
+    @XmlRootElement(name="set")
     public static class SetterImpl
         implements
         Setter {
+    	@XmlAttribute
         private String accessor;
+    	@XmlAttribute
         private String value;
+    	
+    	public SetterImpl() {
+		}
 
         public SetterImpl(String accessor,
                           String value) {

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -6,8 +6,8 @@
 
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
 import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
 
 import org.drools.command.Context;
 import org.drools.command.impl.GenericCommand;
@@ -25,7 +25,7 @@
     private String outIdentifier;
     @XmlAttribute(required = true)
     private String name;
-    @XmlElement(name="argument")
+    @XmlAnyElement
     private List<Object> arguments;
 
     public QueryCommand() {

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,35 +1,46 @@
 package org.drools.command.runtime.rule;
 
-import java.util.Collection;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
 
 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.common.DisconnectedFactHandle;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
+ at XmlAccessorType(XmlAccessType.NONE)
 public class RetractCommand
-    implements
-    GenericCommand<Object> {
+implements
+GenericCommand<Object> {
 
-    private FactHandle handle;
+	private FactHandle handle;
 
-    public RetractCommand(FactHandle handle) {
-        this.handle = handle;
-    }
+	public RetractCommand() {
+	}
 
-    public Object execute(Context context) {
-        StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
-        ksession.retract( handle );
-        return null;
-    }
-    
-    public FactHandle getFactHandle() {
-        return this.handle;
-    }
+	public RetractCommand(FactHandle handle) {
+		this.handle = handle;
+	}
 
-    public String toString() {
-        return "session.retract( " + handle + " );";
-    }
+	public Object execute(Context context) {
+		StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+		ksession.retract( handle );
+		return null;
+	}
+
+	public FactHandle getFactHandle() {
+		return this.handle;
+	}
+
+	@XmlAttribute(name="factHandle", required=true)
+	public void setFactHandleFromString(String factHandleId) {
+		handle = new DisconnectedFactHandle(factHandleId);
+	}
+
+	public String toString() {
+		return "session.retract( " + handle + " );";
+	}
 }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -16,9 +16,10 @@
  * limitations under the License.
  */
 
-import javax.xml.bind.annotation.XmlElement;
+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 javax.xml.bind.annotation.XmlTransient;
 
 import org.drools.FactHandle;
 import org.drools.reteoo.LeftTuple;
@@ -30,7 +31,8 @@
  * @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
+ at XmlRootElement(name="fact-handle")
+ at XmlAccessorType(XmlAccessType.NONE)
 public class DefaultFactHandle
     implements
     InternalFactHandle {
@@ -139,7 +141,7 @@
         return "0:" + this.id + ":" + getIdentityHashCode() + ":" + getObjectHashCode() + ":" + getRecency();
     }
 
-    @XmlElement(name="external-form")
+    @XmlAttribute(name="external-form")
     public String getExternalForm() {
     	return toExternalForm();
     }
@@ -151,7 +153,6 @@
         return "[fact " + toExternalForm() + ":" + this.object + "]";
     }
 
-    @XmlTransient
     public long getRecency() {
         return this.recency;
     }
@@ -174,7 +175,6 @@
         return ( this.id != -1 );
     }
     
-    @XmlTransient
     public Object getObject() {
         return this.object;
     }
@@ -186,7 +186,6 @@
     /**
      * @return the key
      */
-    @XmlTransient
     public EqualityKey getEqualityKey() {
         return this.key;
     }
@@ -206,7 +205,6 @@
         return false;
     }
 
-    @XmlTransient
     public RightTuple getRightTuple() {
         return rightTuple;
     }
@@ -219,12 +217,10 @@
         this.leftTuple = leftTuple;
     }
 
-    @XmlTransient
     public LeftTuple getLeftTuple() {
         return this.leftTuple;
     }
 
-    @XmlTransient
     public WorkingMemoryEntryPoint getEntryPoint() {
         return entryPoint;
     }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -679,7 +679,7 @@
                                 UnmarshallingContext context) {
             String processId = reader.getAttribute( "processId" );
 
-            Map<String, Object> params = new HashMap<String, Object>();
+            HashMap<String, Object> params = new HashMap<String, Object>();
             while ( reader.hasMoreChildren() ) {
                 reader.moveDown();
                 String identifier = reader.getAttribute( "identifier" );

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -7,10 +7,7 @@
 
 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;
 
@@ -20,11 +17,11 @@
 	
 	private static final long serialVersionUID = 1L;
 	
-	@XmlJavaTypeAdapter(ExecutionResultAdapter.class)
-	@XmlElement(name="results")
+//	@XmlJavaTypeAdapter(ExecutionResultAdapter.class)
+//	@XmlElement(name="results")
     HashMap<String, Object> results = new HashMap<String, Object>();
 //	@XmlJavaTypeAdapter(ExecutionResultAdapter.class)
-	@XmlElement(name="facts")
+//	@XmlElement(name="facts")
 	HashMap<String, Object> facts = new HashMap<String, Object>();
     
     /* (non-Javadoc)

Added: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -0,0 +1,31 @@
+package org.drools.runtime.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+ at XmlJavaTypeAdapter(ExecutionResultAdapter.class)
+public class ExecutionResultsMap {
+
+	Map<String, Object> results = new HashMap<String, Object>();
+
+	public Collection<String> keySet() {
+		return results.keySet();
+	}
+
+	public Object get(String identifier) {
+		return results.get(identifier);
+	}
+
+	public Map<String, Object> getResults() {
+		return this.results;
+	}
+
+	public void setResults(Map<String, Object> results) {
+		this.results = results;
+
+	}
+
+}


Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -4,6 +4,7 @@
 package org.drools.runtime.pipeline.impl;
 
 import java.util.Collection;
+import java.util.List;
 
 import org.drools.command.runtime.rule.InsertElementsCommand;
 import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
@@ -15,7 +16,7 @@
 
     public void receive(Object object,
                         PipelineContext context) {
-        InsertElementsCommand cmd = new InsertElementsCommand( (Collection) object );
+        InsertElementsCommand cmd = new InsertElementsCommand( (List<Object>) object );
 
         emit( cmd,
               context );

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -8,7 +8,6 @@
 
 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;
 import javax.xml.transform.Source;
@@ -21,8 +20,11 @@
 import org.drools.io.Resource;
 import org.drools.reteoo.ReteooRuleBase;
 import org.drools.runtime.CommandExecutor;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.impl.ExecutionResultImpl;
 import org.drools.runtime.pipeline.PipelineContext;
 import org.drools.runtime.pipeline.impl.CommandTranslator;
+import org.drools.runtime.pipeline.impl.ResultTranslator;
 import org.drools.runtime.pipeline.impl.ServiceManagerPipelineContextImpl;
 import org.drools.vsm.ServiceManager;
 import org.w3c.dom.Document;
@@ -36,9 +38,12 @@
 public class DroolsJaxbDataFormat implements DataFormat {
 
 	private CommandTranslator cmdTranslator;
-
-	public DroolsJaxbDataFormat() throws JAXBException {
+	private ResultTranslator resTranslator;
+	private String charset;
+	
+	public DroolsJaxbDataFormat() {
 		this.cmdTranslator = new CommandTranslator();
+		this.resTranslator = new ResultTranslator();
 	}
 
 	public void marshal(Exchange exchange, Object graph, OutputStream stream)
@@ -48,14 +53,22 @@
 		
 		JAXBContext jaxbContext = (JAXBContext) exchange.getProperty("jaxb-context");
 		Marshaller marshaller = jaxbContext.createMarshaller();
+		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+		
+		String result = null;
+		
+		if (body instanceof ExecutionResults) {
+			result = resTranslator.transform((ExecutionResultImpl) body, marshaller);
+		}
 
-		try {
-			marshaller.marshal(body, stream);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
+		byte[] bytes;
+        if (charset != null) {
+            bytes = result.getBytes(charset);
+        } else {
+            bytes = result.getBytes();
+        }
 		
-		stream.flush();
+		stream.write(bytes);
 
 	}
 
@@ -64,7 +77,12 @@
 		JAXBContext jaxbContext = (JAXBContext) exchange.getIn().getHeader("jaxb-context");
 
 		PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
-		Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+		Unmarshaller unmarshaller = null;
+		try {
+			unmarshaller  = jaxbContext.createUnmarshaller();
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
 		Document d = exchange.getIn().getBody(Document.class);
 		Object body = exchange.getIn().getBody();
 		String name = d.getDocumentElement().getAttribute("lookup");
@@ -100,10 +118,10 @@
 		}  else if ( body instanceof String ) {
 			try {
 				payload = unmarshaller.unmarshal( new StringReader( ( String ) body ) );
-			} catch (Exception e) {
+			}
+			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" );
 		}

Added: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/Brochure.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/Brochure.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/Brochure.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -0,0 +1,91 @@
+package org.drools.camel.component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+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.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+ at XmlRootElement(name="brochure")
+ at XmlAccessorType(XmlAccessType.NONE)
+public class Brochure
+{
+	@XmlJavaTypeAdapter(CourseListAdapter.class)
+	private HashMap<String, Object> courses = new HashMap<String, Object>();
+
+	public HashMap<String, Object> getCourses()  { return courses; }
+
+	public static void main(String... args) throws Exception
+	{
+		Brochure brochure = new Brochure();
+
+		brochure.courses.put("5.42", new Course("5.42", "Organic Chemistry"));
+		brochure.courses.put("8.02", new Course("8.02", "Physics"));
+		brochure.courses.put("18.02", new Course("18.02", "Calculus"));
+
+		Class<?>[] asd = {Brochure.class, Course.class};
+
+		JAXBContext jaxb = JAXBContext.newInstance(asd);
+
+		Marshaller xmlConverter = jaxb.createMarshaller();
+		xmlConverter.setProperty("jaxb.formatted.output", true);
+		xmlConverter.marshal(brochure, System.out);
+	}
+
+	//Used only for JAXB.  Helps deal w/ the underlying map.
+	//@XmlElementWrapper(name = "courses")  //Activate if you want "courses" wrapper
+	//	@XmlElement(name="course")
+	//	private Object[] getXmlCourses()
+	//	{
+	//		Object[] result = new Object[courses.size()];
+	//
+	//		int e=0;
+	//		for (String id : courses.keySet())
+	//			result[e++] = courses.get(id);
+	//
+	//		return result;
+	//	}
+	//
+	//	//Used only for JAXB.  Helps deal w/ the underlying map.
+	//	private void setXmlCourses(Course[] replacements)
+	//	{
+	//		courses.clear();
+	//		for (Course c : replacements)
+	//			courses.put(c.id, c);
+	//	}
+}
+
+ at XmlRootElement
+class Course
+{
+	@XmlElement String id;
+	@XmlElement   String name;
+
+	Course()                        { this("dummy", "dummy"); }
+	Course(String id, String name)  {this.id=id; this.name=name; }
+}
+
+class CourseListAdapter extends XmlAdapter<Object[],Map<String,Object>> {
+	
+	public Map<String,Object> unmarshal( Object[] value ) {
+		Map<String,Object> r = new HashMap<String,Object>();
+		for( Object c : value ) {
+			r.put(c.toString(),c);
+		}
+		return r;
+	}
+
+	public Object[] marshal( Map<String,Object> v ) {
+		return v.values().toArray(new Object[v.size()]);
+	}
+}
+


Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/Brochure.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,6 +1,8 @@
 package org.drools.camel.component;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
@@ -19,148 +21,438 @@
 
 import com.sun.tools.xjc.Language;
 import com.sun.tools.xjc.Options;
+
 /**
  * 
  * @author Lucas Amador
  *
  */
 public class CamelEndpointWithJaxbTest extends DroolsCamelTestSupport {
-	
-    private String handle;
+
+	private String handle;
 	private JAXBContext jaxbContext;
-    
-    public void testSessionInsert() throws Exception {
 
-        String cmd = "<batch-execution lookup=\"ksession1\">\n" +
-        				"<insert out-identifier=\"lucaz\">\n" +
-        				  "<object>\n" +
-        				  	"<Person xmlns=\"http://drools.org/model\" >\n" +
-        				  	  "<name>lucaz</name>\n" +
-        				  	  "<age>25</age>\n" +
-        		    		"</Person>\n" +
-	                      "</object>\n" +
-        				"</insert>\n" +
-            		 "</batch-execution>\n";
+	public void testSessionInsert() throws Exception {
 
-        Object requestBody = template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext);
-        System.out.println(new String((byte[])requestBody));
-        
-//        String outXml = new String((byte[])template.requestBody("direct:test-with-session", cmd));
-        
-//        ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML(outXml);
-//        Person person = (Person) result.getValue("salaboy");
-//        assertEquals("salaboy", person.getName());
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <insert out-identifier='lucaz'>\n";
+		cmd += "      <Person xmlns='http://drools.org/model' >\n";
+		cmd += "         <name>lucaz</name>\n";
+		cmd += "         <age>25</age>\n";
+		cmd += "      </Person>\n";
+		cmd += "   </insert>\n";
+		cmd += "   <insert out-identifier='jose'>\n";
+		cmd += "      <Person xmlns='http://drools.org/model' >\n";
+		cmd += "         <name>unknow</name>\n";
+		cmd += "         <age>29</age>\n";
+		cmd += "      </Person>\n";
+		cmd += "   </insert>\n";
+		cmd += "   <fire-all-rules />";
+		cmd += "</batch-execution>\n";
 
-//        String expectedXml = "<execution-results>\n";
-//        expectedXml += "  <result identifier=\"salaboy\">\n";
-//        expectedXml += "    <org.drools.pipeline.camel.Person>\n";
-//        expectedXml += "      <name>salaboy</name>\n";
-//        expectedXml += "    </org.drools.pipeline.camel.Person>\n";
-//        expectedXml += "  </result>\n";
-//        expectedXml += "  <fact-handle identifier=\"salaboy\" externalForm=\"" + ((InternalFactHandle) result.getFactHandle("salaboy")).toExternalForm() + "\"/>\n";
-//        expectedXml += "</execution-results>";
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
 
-//        assertEquals(expectedXml, outXml);
+		System.out.println(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);
+		assertNotNull(outXml);
 
-//    	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);
+	}
+	
+	public void testSessionGetObject() throws Exception {
 
-    }
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <get-object out-identifier='rider' factHandle='" + handle + "'/>\n";
+		cmd += "</batch-execution>\n";
 
-    @Override
-    protected RouteBuilder createRouteBuilder() throws Exception {
-        return new RouteBuilder() {
-            public void configure() throws Exception {
-                from("direct:test-with-session").to("drools:sm/ksession1?dataFormat=drools-jaxb");
-                from("direct:test-no-session").to("drools:sm?dataFormat=drools-jaxb");
-            }
-        };
-    }
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
 
-    @Override
-    protected void configureDroolsContext() {
-        Person me = new Person();
-        me.setName("Hadrian");
+		String expectedXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; 
+		expectedXml += "<execution-results xmlns:ns2=\"http://drools.org/model\">\n";
+		expectedXml += "<result identifier=\"rider\">\n";
+		expectedXml += "<person>\n";
+		expectedXml += "<name>Hadrian</name>\n";
+		expectedXml += "</person>\n";
+		expectedXml += "</result>\n";
+		expectedXml += "</execution-results>\n";
 
-        StatefulKnowledgeSession ksession = registerKnowledgeRuntime("ksession1", null);
-        InsertObjectCommand cmd = new InsertObjectCommand(me);
-        cmd.setOutIdentifier("camel-rider");
-        cmd.setReturnObject(false);
-        ExecutionResults results = ksession.execute(cmd);
-        handle = ((FactHandle)results.getFactHandle("camel-rider")).toExternalForm();
-    }
-    
-    @Override
-    protected StatefulKnowledgeSession registerKnowledgeRuntime(String identifier, String rule) {
-    	KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
-    	
-    	Options xjcOpts = new Options();
-        xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+		assertEquals(expectedXml, outXml);
 
-        String classNames[] = null;
-        
-        try {
+	}
+	
+	public void testSessionModify() throws Exception {
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <modify factHandle='" + handle + "'>\n";
+		cmd += "      <set accessor='name' value='\"salaboy\"' />\n";
+		cmd += "   </modify>\n";
+		cmd += "</batch-execution>\n";
+		
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+		
+		String expectedXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+		expectedXml += "<execution-results xmlns:ns2=\"http://drools.org/model\"/>\n";
+		
+		assertEquals(expectedXml, outXml);
+		
+		cmd = "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <get-object out-identifier='rider' factHandle='" + handle + "'/>\n";
+		cmd += "</batch-execution>\n";
+
+		outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+		
+		expectedXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+		expectedXml += "<execution-results xmlns:ns2=\"http://drools.org/model\">\n";
+		expectedXml += "<result identifier=\"rider\">\n";
+		expectedXml += "<person>\n";
+		expectedXml += "<name>salaboy</name>\n";
+		expectedXml += "</person>\n";
+		expectedXml += "</result>\n";
+		expectedXml += "</execution-results>\n";
+
+		assertEquals(expectedXml, outXml);
+		
+	}
+
+	public void notWorkingSetGlobalTestSessionSetAndGetGlobal() throws Exception {
+
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <set-global identifier='list'>\n";
+		cmd += "      <object>\n";
+		cmd += "         <list/>\n";
+		cmd += "      </object>\n";
+		cmd += "   </set-global>\n";
+		cmd += "   <insert out-identifier='lucaz'>\n";
+		cmd += "      <Person xmlns='http://drools.org/model' >\n";
+		cmd += "         <name>lucaz</name>\n";
+		cmd += "         <age>25</age>\n";
+		cmd += "      </Person>\n";
+		cmd += "   </insert>\n";
+		cmd += "   <fire-all-rules />\n";
+		cmd += "   <get-global identifier='list' out-identifier='out-list'/>";
+		cmd += "</batch-execution>\n";
+
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+		System.out.println(outXml);
+
+		assertNotNull(outXml);
+
+	}
+
+	public void testSessionRetractObject() throws Exception {
+
+		String cmd =  "";
+		cmd += "<batch-execution lookup='ksession1'>\n"; 
+		cmd += "   <retract factHandle='" + handle + "' />\n"; 
+		cmd += "</batch-execution>";
+
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+		System.out.println(outXml);
+
+		assertNotNull(outXml);
+
+	}
+
+	public void testInsertElements() throws Exception {
+		
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <insert-elements outIdentifier='elements'>\n";
+		cmd += "      <Person xmlns='http://drools.org/model' >\n";
+		cmd += "         <name>lucaz</name>\n";
+		cmd += "         <age>25</age>\n";
+		cmd += "      </Person>\n";
+		cmd += "      <Person xmlns='http://drools.org/model' >\n";
+		cmd += "         <name>unknow</name>\n";
+		cmd += "         <age>30</age>\n";
+		cmd += "      </Person>\n";
+		cmd += "   </insert-elements>\n";
+		cmd += "   <fire-all-rules />\n";
+		cmd += "</batch-execution>\n";
+
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+		System.out.println(outXml);
+
+		assertNotNull(outXml);
+		
+		String expectedXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+		expectedXML += "<execution-results xmlns:ns2=\"http://drools.org/model\">\n";
+		expectedXML += "<result identifier=\"elements\">\n";
+		expectedXML += "<ns2:Person>\n";
+		expectedXML += "<ns2:name>lucaz</ns2:name>\n";
+		expectedXML += "<ns2:age>25</ns2:age>\n";
+		expectedXML += "</ns2:Person>\n";
+		expectedXML += "<ns2:Person>\n";
+		expectedXML += "<ns2:name>unknow</ns2:name>\n";
+		expectedXML += "<ns2:age>30</ns2:age>\n";
+		expectedXML += "</ns2:Person>\n";
+		expectedXML += "</result>\n";
+		expectedXML += "<result identifier=\"elements\">\n";
+		expectedXML += "<fact-handle external-form=\"0:2:2857023:2857023:2\"/>\n";
+		expectedXML += "<fact-handle external-form=\"0:3:11255694:11255694:3\"/>\n";
+		expectedXML += "</result>\n";
+		expectedXML += "</execution-results>\n";
+		
+//		assertEquals(expectedXML, outXml);
+
+	}
+	
+	public void testQuery() throws Exception {
+
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <query out-identifier='cheeses' name='cheeses'/>\n";
+		cmd += "   <query out-identifier='cheeses2' name='cheesesWithParams'>\n";
+		cmd += "      <java.lang.String>stilton</java.lang.String>\n";
+		cmd += "      <java.lang.String>cheddar</java.lang.String>\n";
+		cmd += "   </query>\n";
+		cmd += "</batch-execution>\n";
+
+		System.out.println(cmd);
+
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+		System.out.println(outXml);
+		
+	}
+
+	public void testProcess() throws Exception {
+
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "  <start-process processId='org.drools.actions'>\n";
+		cmd += "    <parameter identifier='person'>\n";
+		cmd += "         <Person xmlns='http://drools.org/model' >\n";
+		cmd += "            <name>lucaz</name>\n";
+		cmd += "            <age>25</age>\n";
+		cmd += "         </Person>\n";
+		cmd += "    </parameter>\n";
+		cmd += "    <parameter identifier='person2'>\n";
+		cmd += "         <Person xmlns='http://drools.org/model' >\n";
+		cmd += "            <name>hadrian</name>\n";
+		cmd += "            <age>15</age>\n";
+		cmd += "         </Person>\n";
+		cmd += "    </parameter>\n";
+		cmd += "  </start-process>\n";
+		cmd += "</batch-execution>\n";
+		
+		System.out.println(cmd);
+
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+		System.out.println(outXml);
+
+		assertNotNull(outXml);
+
+	}
+	
+	
+	public void testProcessInstanceSignalEvent() throws Exception {
+		
+		String processId = "org.drools.event";
+		
+		String cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "  <start-process processId='" + processId + "'>\n";
+		cmd += "  </start-process>\n";
+		cmd += "</batch-execution>\n";
+		
+		System.out.println(cmd);
+
+		String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+		
+		assertNotNull(outXml);
+		
+		int processInstanceId = 1;
+		
+		cmd = "";
+		cmd += "<batch-execution lookup='ksession1'>\n";
+		cmd += "   <signal-event process-instance-id= '" + processInstanceId + "' event-type='MyEvent'>";
+        cmd += "      <string>MyValue</string>";
+        cmd += "   </signal-event>";
+        cmd += "</batch-execution>\n";
+		
+		outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+		
+		System.out.println(outXml);
+	}
+
+	@Override
+	protected RouteBuilder createRouteBuilder() throws Exception {
+		return new RouteBuilder() {
+			public void configure() throws Exception {
+				from("direct:test-with-session").to("drools:sm/ksession1?dataFormat=drools-jaxb");
+				from("direct:test-no-session").to("drools:sm?dataFormat=drools-jaxb");
+			}
+		};
+	}
+
+	@Override
+	protected void configureDroolsContext() {
+		Person me = new Person();
+		me.setName("Hadrian");
+
+		String rule = "";
+		rule += "package org.drools \n";
+		rule += "import org.drools.model.Person \n";
+		rule += "global java.util.List list \n";
+		rule += "rule rule1 \n";
+		rule += "  when \n";
+		rule += "    $p : Person() \n";
+		rule += " \n";
+		rule += "  then \n";
+		rule += "    System.out.println(\"executed\"); \n";
+		rule += "end\n";
+
+		StatefulKnowledgeSession ksession = registerKnowledgeRuntime("ksession1", rule);
+		InsertObjectCommand cmd = new InsertObjectCommand(me);
+		cmd.setOutIdentifier("camel-rider");
+		cmd.setReturnObject(false);
+		ExecutionResults results = ksession.execute(cmd);
+		handle = ((FactHandle)results.getFactHandle("camel-rider")).toExternalForm();
+	}
+
+	@Override
+	protected StatefulKnowledgeSession registerKnowledgeRuntime(String identifier, String rule) {
+		KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
+
+		Options xjcOpts = new Options();
+		xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+
+		String classNames[] = null;
+
+		try {
 			classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource("person.xsd", getClass()),
-			                                                          kbuilder,
-			                                                          xjcOpts,
-			                                                          "xsd" );
+					kbuilder,
+					xjcOpts,
+			"xsd" );
 		} catch (IOException e) {
 			LOG.error("Errors while adding xsd model. ", kbuilder.getErrors());
 		}
 
-        assertFalse( kbuilder.hasErrors() );
+		assertFalse( kbuilder.hasErrors() );
+
+		if (rule != null && rule.length() > 0) {
+			kbuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL);
+
+			if (kbuilder.hasErrors()) {
+				LOG.info("Errors while adding rule. ", kbuilder.getErrors());
+			}
+		}
+		
+		String process1 = "";
+        process1 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+        process1 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+        process1 += "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+        process1 += "         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+        process1 += "         type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+        process1 += "\n";
+        process1 += "  <header>\n";
+        process1 += "    <imports>\n";
+        process1 += "      <import name=\"org.drools.model.Person\" />\n";
+        process1 += "    </imports>\n";
+        process1 += "    <globals>\n";
+        process1 += "      <global identifier=\"list\" type=\"java.util.List\" />\n";
+        process1 += "    </globals>\n";
+        process1 += "    <variables>\n";
+        process1 += "      <variable name=\"person\" >\n";
+        process1 += "        <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"Person\" />\n";
+        process1 += "      </variable>\n";
+        process1 += "    </variables>\n";
+        process1 += "  </header>\n";
+        process1 += "\n";
+        process1 += "  <nodes>\n";
+        process1 += "    <start id=\"1\" name=\"Start\" />\n";
+        process1 += "    <actionNode id=\"2\" name=\"MyActionNode\" >\n";
+        process1 += "      <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
+//        process1 += "list.add(person.name);\n";
+        process1 += "</action>\n";
+        process1 += "    </actionNode>\n";
+        process1 += "    <end id=\"3\" name=\"End\" />\n";
+        process1 += "  </nodes>\n";
+        process1 += "\n";
+        process1 += "  <connections>\n";
+        process1 += "    <connection from=\"1\" to=\"2\" />\n";
+        process1 += "    <connection from=\"2\" to=\"3\" />\n";
+        process1 += "  </connections>\n" + "\n";
+        process1 += "</process>";
         
-        if (rule != null && rule.length() > 0) {
-            kbuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL);
-    
-            if (kbuilder.hasErrors()) {
-                LOG.info("Errors while adding rule. ", kbuilder.getErrors());
-            }
+        kbuilder.add(ResourceFactory.newByteArrayResource(process1.getBytes()), ResourceType.DRF);
+
+        if (kbuilder.hasErrors()) {
+        	LOG.info("Errors while adding process rule 1. ", kbuilder.getErrors());
         }
 
-    	assertFalse(kbuilder.hasErrors());
-    	
-    	
-    	KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
+		assertFalse(kbuilder.hasErrors());
+        
+        String process2 = "";
+        process2 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+        process2 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+        process2 += "         xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+        process2 += "         xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+        process2 += "         type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+        process2 += "\n";
+        process2 += "  <header>\n";
+        process2 += "    <variables>\n";
+        process2 += "      <variable name=\"MyVar\" >\n";
+        process2 += "        <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+        process2 += "        <value>SomeText</value>\n";
+        process2 += "      </variable>\n";
+        process2 += "    </variables>\n";
+        process2 += "  </header>\n";
+        process2 += "\n";
+        process2 += "  <nodes>\n";
+        process2 += "    <start id=\"1\" name=\"Start\" />\n";
+        process2 += "    <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
+        process2 += "      <eventFilters>\n";
+        process2 += "        <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+        process2 += "      </eventFilters>\n";
+        process2 += "    </eventNode>\n";
+        process2 += "    <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+        process2 += "    <end id=\"4\" name=\"End\" />\n";
+        process2 += "  </nodes>\n";
+        process2 += "\n";
+        process2 += "  <connections>\n";
+        process2 += "    <connection from=\"1\" to=\"3\" />\n";
+        process2 += "    <connection from=\"2\" to=\"3\" />\n";
+        process2 += "    <connection from=\"3\" to=\"4\" />\n";
+        process2 += "  </connections>\n";
+        process2 += "\n";
+        process2 += "</process>";
+        
+        kbuilder.add(ResourceFactory.newByteArrayResource(process2.getBytes()), ResourceType.DRF);
+
+        if (kbuilder.hasErrors()) {
+        	LOG.info("Errors while adding process rule 2. ", kbuilder.getErrors());
+        }
+
+		assertFalse(kbuilder.hasErrors());
+
+		KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
 		kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-		
+
+		// Add object model to classes array
+		List<String> allClasses = new ArrayList<String>();
+		for (int i = 0; i < classNames.length; i++) {
+			allClasses.add(classNames[i]);
+		}
+		allClasses.add("org.drools.pipeline.camel.Person");
+
 		try {
-			jaxbContext = KnowledgeBuilderHelper.newJAXBContext( classNames, kbase );
+			jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClasses.toArray(new String[allClasses.size()]), kbase );
 		} catch (JAXBException e) {
-			// TODO Auto-generated catch block
+			LOG.info("Errors while creating JAXB Context. ", e.getMessage());
 			e.printStackTrace();
 		}
-    	
-    	StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
-    	serviceManager.register(identifier, session);
-    	return session;
-    }
-    
+
+		StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+		serviceManager.register(identifier, session);
+		return session;
+	}
+
 }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -5,10 +5,13 @@
 
 package org.drools.pipeline.camel;
 
+import javax.xml.bind.annotation.XmlRootElement;
+
 /**
  *
  * @author salaboy
  */
+ at XmlRootElement
 public class Person {
     private String name;
     //private Address address;

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,8 +1,8 @@
-<xsd:schema xmlns:person="http://drools.org/model" 
-            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-	        targetNamespace="http://drools.org/model"
-	        elementFormDefault="qualified" >
-	        
+<xsd:schema xmlns:person="http://drools.org/model"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+            targetNamespace="http://drools.org/model"
+            elementFormDefault="qualified">
+            
 	<xsd:element name="Person">
 		<xsd:complexType>
 			<xsd:sequence>
@@ -11,5 +11,5 @@
 			</xsd:sequence>	
 		</xsd:complexType>
 	</xsd:element>
-
+	
 </xsd:schema>
\ No newline at end of file

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -8,67 +8,70 @@
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Unmarshaller;
 
+import org.drools.command.Setter;
 import org.drools.command.impl.GenericCommand;
 import org.drools.command.runtime.BatchExecutionCommand;
 import org.drools.command.runtime.SetGlobalCommand;
 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.InsertElementsCommand;
 import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.command.runtime.rule.ModifyCommand;
 import org.drools.command.runtime.rule.QueryCommand;
 import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 /**
  * 
  * @author Wolfgang Laun
  */
 public class CommandTranslator {
-    private Map<Class<?>,CommandTransformer> class2trans;
-    
-    /**
-     * Constructor
-     *  
-     */
-    public CommandTranslator(){
-        class2trans = new HashMap<Class<?>,CommandTransformer>();
-        class2trans.put( BatchExecutionCommand.class,   new BatchExecutionTransformer() );
-        class2trans.put( InsertElementsCommand.class,   new InsertElementsTransformer() );
-        class2trans.put( InsertObjectCommand.class,     new InsertObjectTransformer() );
-        class2trans.put( QueryCommand.class,            new QueryTransformer() );
-        class2trans.put( SetGlobalCommand.class,        new SetGlobalTransformer() );
-        class2trans.put( SignalEventCommand.class,      new SignalEventTransformer() );
-        class2trans.put( StartProcessCommand.class,     new StartProcessTransformer() );
-    }
-    
-    /**
-     * Transforms a list of XML elements representing Drools command objects
-     * to a list of <tt>Command&lt;?&gt;</tt> objects. Application objects
-     * are unmarshalled, using an <tt>Unmarshaller</tt> object derived from
-     * 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 GenericCommand<?> transform( BatchExecutionCommand batchExecution, Unmarshaller unmarshaller ){
-        CommandTransformer ct = class2trans.get( batchExecution.getClass() );
-        return ct.transform( this, batchExecution, unmarshaller);
-    }
+	private Map<Class<?>, CommandTransformer> class2trans;
 
-    CommandTransformer getCommandTransformer( Class<?> clazz ){
-        return class2trans.get( clazz );
-    }
-        
-    protected Object makeObject( Element element, Unmarshaller unmarshaller ){        
-        Object obj = null;
-        try {
-            obj = unmarshaller.unmarshal( element.getFirstChild() );
-        } catch (JAXBException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-        return obj;
-    }
+	public CommandTranslator(){
+		class2trans = new HashMap<Class<?>, CommandTransformer>();
+		class2trans.put(BatchExecutionCommand.class,   new BatchExecutionTransformer());
+		class2trans.put(InsertElementsCommand.class,   new InsertElementsTransformer());
+		class2trans.put(InsertObjectCommand.class,     new InsertObjectTransformer());
+		class2trans.put(ModifyCommand.class,     	   new ModifyObjectTransformer());
+		class2trans.put(QueryCommand.class,            new QueryTransformer());
+		class2trans.put(SetGlobalCommand.class,        new SetGlobalTransformer());
+		class2trans.put(SignalEventCommand.class,      new SignalEventTransformer());
+		class2trans.put(StartProcessCommand.class,     new StartProcessTransformer());
+		class2trans.put(FireAllRulesCommand.class,     new FireAllRulesTransformer());
+	}
+
+	/**
+	 * Transforms a list of XML elements representing Drools command objects
+	 * to a list of <tt>Command&lt;?&gt;</tt> objects. Application objects
+	 * are unmarshalled, using an <tt>Unmarshaller</tt> object derived from
+	 * 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 GenericCommand<?> transform(BatchExecutionCommand batchExecution, Unmarshaller unmarshaller) {
+		CommandTransformer commandTransformer = class2trans.get(batchExecution.getClass());
+		return commandTransformer.transform(this, batchExecution, unmarshaller);
+	}
+
+	protected CommandTransformer getCommandTransformer(Class<?> clazz) {
+		return class2trans.get(clazz);
+	}
+
+	protected Object makeObject(Node node, Unmarshaller unmarshaller) {        
+		Object obj = null;
+		try {
+			obj = unmarshaller.unmarshal(node);
+		} catch (JAXBException e) {
+			// TODO: remove this
+			e.printStackTrace();
+			throw new RuntimeException(e);
+		}
+		return obj;
+	}
 }
 
 
@@ -76,122 +79,149 @@
  * Abstract base class for all command transformers.
  */
 abstract class CommandTransformer {
-    abstract GenericCommand<?> transform( CommandTranslator ct, Object o , Unmarshaller unmarshaller);
+	abstract GenericCommand<?> transform(CommandTranslator ct, Object o , Unmarshaller unmarshaller);
 }
 
 /**
  * Class for transforming a BatchExecution command.
  */
 class BatchExecutionTransformer extends CommandTransformer {
-    public GenericCommand<?> transform( CommandTranslator cmdTrans, Object o , Unmarshaller unmarshaller){
-        BatchExecutionCommand be = (BatchExecutionCommand)o;
-        List<GenericCommand<?>> xmlCmds = be.getCommands();
-        for( int i = 0; i < xmlCmds.size(); i++ ){
-            GenericCommand<?> cmd = xmlCmds.get( i );
-            CommandTransformer ct = cmdTrans.getCommandTransformer( cmd.getClass() );
-            if( ct != null ){
-                xmlCmds.set( i, ct.transform( cmdTrans, cmd, unmarshaller ) );
-            }
-        }
-        return be;
-    }
+	public GenericCommand<?> transform(CommandTranslator cmdTrans, Object o , Unmarshaller unmarshaller) {
+		BatchExecutionCommand be = (BatchExecutionCommand)o;
+		List<GenericCommand<?>> xmlCmds = be.getCommands();
+		for (int i = 0; i < xmlCmds.size(); i++) {
+			GenericCommand<?> cmd = xmlCmds.get(i);
+			CommandTransformer ct = cmdTrans.getCommandTransformer(cmd.getClass());
+			if (ct != null) {
+				xmlCmds.set(i, ct.transform(cmdTrans, cmd, unmarshaller));
+			}
+		}
+		return be;
+	}
 }
 
 /**
  * Class for transforming an InsertElements command.
  */
 class InsertElementsTransformer extends CommandTransformer {
-    public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ){
-        InsertElementsCommand ie = (InsertElementsCommand)o;
-        Iterable<?> ioList = ie.getObjects();        
-        List<Object> coList = new ArrayList<Object>();
-        for( Object io: ioList ){
-            Element el = (Element)io;
-            Object co = ct.makeObject( el , unmarshaller);
-            coList.add( co );
-        }
-        ie.setObjects( coList );
-        return ie;
-    }
+	public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+		InsertElementsCommand insertElementsCmd = (InsertElementsCommand)o;
+		List<Object> objectsList = new ArrayList<Object>();
+		
+		List<Object> objects = insertElementsCmd.getObjects();
+		for (Object node : objects) {
+			Object obj = ct.makeObject((Node) node, unmarshaller);
+			objectsList.add(obj);
+		}
+
+		insertElementsCmd.setObjects(objectsList);
+		return insertElementsCmd;
+	}
 }
 
 /**
  * Class for transforming a InsertObject command.
  */
 class InsertObjectTransformer extends CommandTransformer {
-    public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ){
-        InsertObjectCommand io = (InsertObjectCommand)o;
-        Element el = (Element)io.getObject();
-        Object obj = ct.makeObject( el , unmarshaller);
-        io.setObject( obj );
-        return io;
-    }
+	public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+		InsertObjectCommand io = (InsertObjectCommand)o;
+		Element el = (Element)io.getObject();
+		Object obj = ct.makeObject(el , unmarshaller);
+		io.setObject(obj);
+		return io;
+	}
 }
 
 /**
+ * Class for transforming a ModifyObject command.
+ */
+class ModifyObjectTransformer extends CommandTransformer {
+	public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+		ModifyCommand mo = (ModifyCommand)o;
+		List<Setter> setters = mo.getSetters();
+		List<Setter> convertedSetters = new ArrayList<Setter>();
+		for (Object node : setters) {
+			Setter setter = (Setter) ct.makeObject((Node)node, unmarshaller);
+			convertedSetters.add(setter);
+		}
+		mo.setSetters(convertedSetters);
+		return mo;
+	}
+}
+
+/**
+ * Class for transforming a FireAllRules command.
+ */
+class FireAllRulesTransformer extends CommandTransformer {
+	public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+		return (FireAllRulesCommand)o;
+	}
+}
+
+/**
  * Class for transforming a Query command.
  */
 class QueryTransformer extends CommandTransformer {
-    public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ){
-        QueryCommand q = (QueryCommand)o;
-        List<Object> argList = q.getArguments();
-        for( int i = 0; i < argList.size(); i++ ){
-            Element el = (Element)argList.get( i );
-            Object ao = ct.makeObject( el , unmarshaller);
-            argList.add( i, ao );
-        }
-        return q;
-    }
+	public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+		QueryCommand q = (QueryCommand)o;
+		List<Object> argList = q.getArguments();
+		for (int i = 0; i < argList.size(); i++) {
+			Element el = (Element)argList.get(i);
+			Object ao = ct.makeObject(el , unmarshaller);
+			argList.add(i, ao);
+		}
+		return q;
+	}
 }
 
 /**
  * Class for transforming a SetGlobal command.
  */
 class SetGlobalTransformer extends CommandTransformer {
-    public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ){
-        SetGlobalCommand sg = (SetGlobalCommand)o;
-        Element el = (Element)sg.getObject();
-        Object obj = ct.makeObject( el , unmarshaller);
-        sg.setObject( obj );
-        return sg;
-    }
+	public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+		SetGlobalCommand sg = (SetGlobalCommand)o;
+		Element el = (Element)sg.getObject();
+		Object obj = ct.makeObject(el , unmarshaller);
+		sg.setObject(obj);
+		return sg;
+	}
 }
 
 /**
  * Class for transforming a SignalEvent command.
  */
 class SignalEventTransformer extends CommandTransformer {
-    public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ){
-        SignalEventCommand se = (SignalEventCommand)o;
-        Object ev = se.getEvent();
-        if( ev != null ){
-            Object obj = ct.makeObject( (Element)ev , unmarshaller);
-            se.setEvent( obj );
-        }
-        return se;
-    }
+	public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+		SignalEventCommand se = (SignalEventCommand)o;
+		Object ev = se.getEvent();
+		if (ev != null) {
+			Object obj = ct.makeObject((Element)ev , unmarshaller);
+			se.setEvent(obj);
+		}
+		return se;
+	}
 }
 
 /**
  * Class for transforming a StartProcess command.
  */
 class StartProcessTransformer extends CommandTransformer {
-    public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ){
-        StartProcessCommand sp = (StartProcessCommand)o;
-        // data items
-        List<Object> diList = sp.getData();
-        for( int i = 0; i < diList.size(); i++ ){
-            Element el = (Element)diList.get( i );
-            Object obj = ct.makeObject( el , unmarshaller);
-            diList.add( i, obj );
-        }
-        // parameters
-        Map<String,Object> parMap = sp.getParameters();;
-        for( Map.Entry<String, Object> entry: parMap.entrySet() ){
-            Element el = (Element)entry.getValue();
-            Object obj = ct.makeObject( el, unmarshaller );
-            entry.setValue( obj );
-        }
-        return sp;
-    }
+	public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ) {
+		StartProcessCommand sp = (StartProcessCommand)o;
+		// data items
+//        List<Object> diList = sp.getData();
+//        for (int i = 0; i < diList.size(); i++) {
+//            Element el = (Element)diList.get(i);
+//            Object obj = ct.makeObject(el , unmarshaller);
+//            diList.add(i, obj);
+//        }
+		// parameters
+		Map<String,Object> parMap = sp.getParameters();;
+		for (Map.Entry<String, Object> entry: parMap.entrySet()) {
+			Element element = (Element)entry.getValue();
+			Object obj = ct.makeObject(element, unmarshaller);
+			entry.setValue(obj);
+		}
+		return sp;
+	}
 }

Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -63,7 +63,18 @@
     DroolsJaxbHelperProvider {
 	
 	private static final String[] JAXB_ANNOTATED_CMD = {"org.drools.command.runtime.BatchExecutionCommand",
+														"org.drools.command.runtime.SetGlobalCommand",
+														"org.drools.command.runtime.GetGlobalCommand",
+														"org.drools.command.runtime.rule.FireAllRulesCommand",
+														"org.drools.command.runtime.rule.InsertElementsCommand",
 														"org.drools.command.runtime.rule.InsertObjectCommand",
+														"org.drools.command.runtime.rule.ModifyCommand",
+														"org.drools.command.runtime.rule.ModifyCommand$SetterImpl",
+														"org.drools.command.runtime.rule.QueryCommand",
+														"org.drools.command.runtime.rule.RetractCommand",
+														"org.drools.command.runtime.process.AbortWorkItemCommand",
+														"org.drools.command.runtime.process.SignalEventCommand",
+														"org.drools.command.runtime.process.StartProcessCommand",
 														"org.drools.runtime.impl.BatchExecutionImpl",
 														"org.drools.runtime.impl.ExecutionResultImpl",
 														"org.drools.common.DefaultFactHandle"

Deleted: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java	2010-02-05 18:37:47 UTC (rev 31460)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -1,79 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
-import org.drools.process.result.ExecutionResultsType;
-import org.drools.runtime.pipeline.impl.BaseEmitter;
-
-/**
- * @author: Wolfgang Laun
- */
-public class JaxbTransformer extends BaseEmitter {
-
-    public final static String COMMAND_PACKAGES = "org.drools.command.runtime:" +
-											      "org.drools.command.runtime.process:" +
-											      "org.drools.command.runtime.rule:" +
-											      "org.drools.runtime.impl";
-
-    public final static String RESULT_PACKAGE = "org.drools.process.result";
-
-    private Map<Object,JAXBContext> class2ctxt;
-
-    protected JAXBContext jaxbContext;
-    protected JAXBContext jaxbPrimaryContext;
-    
-    protected JaxbTransformer( JAXBContext jaxbCtx ){
-    	this.jaxbContext = jaxbCtx;
-    	this.jaxbPrimaryContext = jaxbCtx;
-        this.class2ctxt = new HashMap<Object,JAXBContext>();
-    }
-
-    public void addContextForCommands() {
-    	try {
-    		jaxbPrimaryContext = getContext( JaxbTransformer.COMMAND_PACKAGES );
-    	} catch ( Exception e ) {
-    		handleException( this, null, e );
-    		return;
-    	}
-    }
-
-    public void addContextForResults() {
-    	try {
-    		jaxbPrimaryContext = getContext( ExecutionResultsType.class );
-    	} catch ( Exception e ) {
-    		handleException( this, null, e );
-    		return;
-    	}
-    }
-
-    protected JAXBContext getContext(){
-    	return this.jaxbContext;
-    }
-    
-    protected JAXBContext getPrimaryContext(){
-    	return this.jaxbPrimaryContext;
-    }
-    
-    protected JAXBContext getContext( Class<?> clazz ) throws JAXBException{
-    	JAXBContext ctxt = class2ctxt.get( clazz );
-    	if ( ctxt == null ) {
-            ctxt = JAXBContext.newInstance( clazz );
-            class2ctxt.put( clazz, ctxt );
-        }
-        return ctxt;
-    }
-
-    protected JAXBContext getContext( String packagePath ) throws JAXBException{
-    	JAXBContext ctxt = class2ctxt.get( packagePath );
-    	if ( ctxt == null ) {
-            ctxt = JAXBContext.newInstance( packagePath );
-            class2ctxt.put( packagePath, ctxt );
-        }
-        return ctxt;
-    }
-
-}

Added: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java	                        (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -0,0 +1,86 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+public class ListMapping {
+
+	public static void main(String[] args) throws Exception {
+		Object asd = new Person("lucaz");
+		Field fieldName = asd.getClass().getDeclaredField("name");
+		fieldName.setAccessible(true);
+		String fieldValue = (String) fieldName.get(asd);
+		System.out.println("fieldValue = " + fieldValue);
+
+//		Object object = fieldName.get(asd);
+//		System.out.println(object);
+
+//		Course course = new Course();
+//		
+//		course.addPerson(new Person("lucas"));
+//		course.addPerson(new Person("jose"));
+//		
+//		Class<?>[] classes = {Person.class, Course.class};
+//		
+//		JAXBContext jaxb = JAXBContext.newInstance(classes);
+//
+//		Marshaller xmlConverter = jaxb.createMarshaller();
+//		xmlConverter.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+//		xmlConverter.marshal(course, System.out);
+		
+	}
+
+}
+
+ at XmlRootElement
+
+class Course {
+	
+//	@XmlElementWrapper(name="persons")
+	@XmlElement(name="person")
+	private List<Person> persons = new ArrayList<Person>();
+	
+	public Course() {
+	}
+	
+	public void addPerson(Person person) {
+		persons.add(person);
+	}
+	
+	public List<Person> getPersons() {
+		return this.persons;
+	}
+	
+}
+
+ at XmlRootElement(name="person")
+class Person {
+
+	@XmlAttribute
+	private String name;
+	
+	public Person() {
+	}
+	
+	public Person(String name) {
+		this.setName(name);
+	}
+	
+	@Override
+	public String toString() {
+		return getName();
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+}


Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java	2010-02-05 19:05:19 UTC (rev 31461)
@@ -0,0 +1,179 @@
+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.runtime.impl.ExecutionResultImpl;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+public class ResultTranslator {
+
+	private DocumentBuilder documentBuilder;
+	private Transformer transformer;
+
+	public ResultTranslator() {
+		DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
+		documentBuilderFactory.setNamespaceAware(true);
+		documentBuilderFactory.setValidating(true); 
+		documentBuilderFactory.setExpandEntityReferences(true);
+		try {
+			documentBuilder = documentBuilderFactory.newDocumentBuilder();
+		} catch (ParserConfigurationException e) {
+			throw new RuntimeException("Result Transformer Exception");
+		}
+
+		try {
+			transformer = TransformerFactory.newInstance().newTransformer();
+			transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+		} catch (TransformerConfigurationException e) {
+			throw new RuntimeException("Result Transformer Exception");
+		} catch (TransformerFactoryConfigurationError e) {
+			throw new RuntimeException("Result Transformer Exception");
+		}
+	}
+
+	public String transform( ExecutionResultImpl executionResult, Marshaller marshaller ) throws JAXBException, TransformerException{
+
+		Document document = documentBuilder.newDocument();
+		marshaller.marshal(executionResult, document);
+
+		Element results = document.createElement("results");
+		Map<String, Object> executionResults = executionResult.getResults();
+		for (String key : executionResults.keySet()) {
+			Object object = executionResults.get(key);
+			if (object==null) {
+				executionResults.remove(key);
+				continue;
+			}
+			Element result = null;
+			if (object instanceof ArrayList<?>) {
+				result = makeObjects(marshaller, document, (List<Object>) object);
+			}
+			else {
+				result = makeObject(marshaller, document, object);
+			}
+			result.setAttribute("identifier", key);
+			results.appendChild(result);
+		}
+		addElements(results, document, executionResults.size());
+
+		results = document.createElement("fact-handles");
+		Map<String, Object> factHandlesResult = executionResult.getFactHandles();
+		for (String key : factHandlesResult.keySet()) {
+			Object object = factHandlesResult.get(key);
+			Element factHandles = document.createElement("nil");
+			Element result = null;
+			if (object instanceof ArrayList<?>) {
+				result = makeObjects(marshaller, document, (List<Object>) object);
+			}
+			else {
+				result = makeObject(marshaller, document, object);
+			}
+			Node factHandle = factHandles.getFirstChild();
+			results.appendChild(result);
+			Node identifierAttribute = document.createAttribute("identifier");
+			identifierAttribute.setNodeValue(key);
+			result.getAttributes().setNamedItem(identifierAttribute);
+		}
+		addElements(results, document, factHandlesResult.size());
+
+		return convertDocumentToString(document);
+	}
+	
+	public Element makeObjects(Marshaller marshaller, Document document, List<Object> objects) throws JAXBException {
+		Element result = document.createElement("result");
+		for (Object object : objects) {
+			Element element = document.createElement("element");
+			marshaller.marshal(object, element);
+			result.appendChild(element.getFirstChild());
+		}
+		return result;
+	}
+	
+	public Element makeObject(Marshaller marshaller, Document document, Object object) throws JAXBException {
+		Element result = document.createElement("result");
+		marshaller.marshal(object, result);
+		return result;
+	}
+	
+//	public String transform( ExecutionResultImpl executionResult, Marshaller marshaller ) throws JAXBException, TransformerException{
+//
+//		Document document = documentBuilder.newDocument();
+//		marshaller.marshal(executionResult, document);
+//
+//		Element results = document.createElement("results");
+//		Map<String, Object> executionResults = executionResult.getResults();
+//		for (String key : executionResults.keySet()) {
+//			Object object = executionResults.get(key);
+//			if (object==null) {
+//				executionResults.remove(key);
+//				continue;
+//			}
+//			Element result = document.createElement("result");
+//			// TODO: remove try/catch
+//			try {
+//				marshaller.marshal(object, result);
+//			} catch (Exception e) {
+//				e.printStackTrace();
+//			}
+//			result.setAttribute("identifier", key);
+//			results.appendChild(result);
+//		}
+//		addElements(results, document, executionResults.size());
+//
+//		results = document.createElement("fact-handles");
+//		Map<String, Object> factHandlesResult = executionResult.getFactHandles();
+//		for (String key : factHandlesResult.keySet()) {
+//			Object object = factHandlesResult.get(key);
+//			Element factHandles = document.createElement("nil");
+//			marshaller.marshal(object, factHandles);
+//			Node factHandle = factHandles.getFirstChild();
+//			results.appendChild(factHandle);
+//			Node identifierAttribute = document.createAttribute("identifier");
+//			identifierAttribute.setNodeValue(key);
+//			factHandle.getAttributes().setNamedItem(identifierAttribute);
+//		}
+//		addElements(results, document, factHandlesResult.size());
+//
+//		return convertDocumentToString(document);
+//	}
+	
+	private void addElements(Element results, Document document, int size) {
+		switch (size) {
+		case 0:
+			return; 
+		case 1:
+			document.getDocumentElement().appendChild(results.getFirstChild()); 
+			break;
+		default:
+			document.getDocumentElement().appendChild(results); 
+			break;
+		}
+	}
+
+	private String convertDocumentToString(Document document) throws TransformerException {
+		StreamResult streamResult = new StreamResult(new StringWriter());
+		transformer.transform(new DOMSource(document), streamResult);
+		return streamResult.getWriter().toString();
+	}
+
+}


Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the jboss-svn-commits mailing list