[jboss-svn-commits] JBL Code SVN: r31567 - in labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz: drools-pipeline/drools-camel/src/test/java/org/drools/camel/component and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 11 11:10:44 EST 2010
Author: baunax
Date: 2010-02-11 11:10:44 -0500 (Thu, 11 Feb 2010)
New Revision: 31567
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-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
Log:
- fixed testProcess
- updated StartProcessComannd to use JaxbMapAdapter for parameters
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-11 16:09:11 UTC (rev 31566)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java 2010-02-11 16:10:44 UTC (rev 31567)
@@ -9,22 +9,25 @@
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
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.runtime.StatefulKnowledgeSession;
-import org.w3c.dom.Element;
+import org.drools.xml.jaxb.util.JaxbMapAdapter;
@XmlAccessorType(XmlAccessType.NONE)
public class StartProcessCommand implements GenericCommand<ProcessInstance> {
@XmlAttribute(required = true)
private String processId;
-// @XmlElement(name="parameter")
-// @XmlJavaTypeAdapter(ParameterMapAdapter.class)
- private HashMap<String, Object> parameters = new HashMap<String, Object>();
+
+ @XmlJavaTypeAdapter(JaxbMapAdapter.class)
+ @XmlElement(name="parameter")
+ private Map<String, Object> parameters = new HashMap<String, Object>();
+
@XmlElementWrapper(name="data")
private List<Object> data = null;
@@ -43,14 +46,18 @@
this.processId = processId;
}
- public HashMap<String, Object> getParameters() {
+ public Map<String, Object> getParameters() {
return parameters;
}
- public void setParameters(HashMap<String, Object> parameters) {
+ public void setParameters(Map<String, Object> parameters) {
this.parameters = parameters;
}
+ public void putParameter(String key, Object value) {
+ getParameters().put(key, value);
+ }
+
public List<Object> getData() {
return data;
}
@@ -85,24 +92,4 @@
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-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-11 16:09:11 UTC (rev 31566)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java 2010-02-11 16:10:44 UTC (rev 31567)
@@ -1,18 +1,22 @@
package org.drools.camel.component;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
import org.apache.camel.builder.RouteBuilder;
import org.drools.KnowledgeBase;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.ResourceType;
import org.drools.builder.help.KnowledgeBuilderHelper;
+import org.drools.command.runtime.BatchExecutionCommand;
+import org.drools.command.runtime.process.StartProcessCommand;
import org.drools.command.runtime.rule.InsertObjectCommand;
import org.drools.io.ResourceFactory;
import org.drools.pipeline.camel.Person;
@@ -224,32 +228,27 @@
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";
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
- System.out.println(cmd);
+ StartProcessCommand start = new StartProcessCommand("org.drools.actions");
+ start.putParameter("person", new Person("lucaz", 25));
+ start.putParameter("person2", new Person("hadrian", 15));
+
+ cmd.getCommands().add(start);
+
+ StringWriter xmlReq = new StringWriter();
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ marshaller.marshal(cmd, xmlReq);
+
+ System.out.println(xmlReq.toString());
- String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
-
- System.out.println(outXml);
-
- assertNotNull(outXml);
-
+ byte[] xmlResp = (byte[])template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(xmlResp);
+ System.out.println(new String(xmlResp));
+ Object resp = jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
}
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-11 16:09:11 UTC (rev 31566)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java 2010-02-11 16:10:44 UTC (rev 31567)
@@ -215,19 +215,11 @@
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 element = (Element)entry.getValue();
- Object obj = ct.makeObject(element, unmarshaller);
- entry.setValue(obj);
+ for (Map.Entry<String, Object> entry: sp.getParameters().entrySet()) {
+ Object obj = entry.getValue();
+ if (obj instanceof Element) {
+ entry.setValue(ct.makeObject((Element) obj, unmarshaller));
+ }
}
return sp;
}
More information about the jboss-svn-commits
mailing list