[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