[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<?></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<?></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<?></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<?></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