[jboss-svn-commits] JBL Code SVN: r31611 - in labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz: drools-core/src/main/java/org/drools/runtime/rule/impl and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 12 09:48:41 EST 2010
Author: lucazamador
Date: 2010-02-12 09:48:41 -0500 (Fri, 12 Feb 2010)
New Revision: 31611
Added:
labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java
Modified:
labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java
labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
Log:
FlatQueryResultsAdapter and jaxb mapping
Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java 2010-02-12 14:07:14 UTC (rev 31610)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java 2010-02-12 14:48:41 UTC (rev 31611)
@@ -2,7 +2,7 @@
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.RightTuple;
@@ -13,15 +13,10 @@
implements
InternalFactHandle {
- @XmlElement
private int id;
- @XmlElement
private int identityHashCode;
- @XmlElement
private int objectHashCode;
- @XmlElement
private long recency;
- @XmlElement
private Object object;
protected DisconnectedFactHandle() {}
@@ -139,5 +134,10 @@
public String toExternalForm() {
return "0:" + this.id + ":" + this.identityHashCode + ":" + this.objectHashCode + ":" + this.recency;
}
+
+ @XmlAttribute(name="external-form")
+ public String getExternalForm() {
+ return toExternalForm();
+ }
}
Modified: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java 2010-02-12 14:07:14 UTC (rev 31610)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java 2010-02-12 14:48:41 UTC (rev 31611)
@@ -3,23 +3,28 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
-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.XmlElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.drools.rule.Declaration;
import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.QueryResults;
import org.drools.runtime.rule.QueryResultsRow;
-import org.drools.runtime.rule.QueryResults;
+import org.drools.xml.jaxb.util.JaxbFlatQueryResultsAdapter;
@XmlAccessorType( XmlAccessType.FIELD )
public class FlatQueryResults
implements
QueryResults {
private HashMap<String, Integer> identifiers;
+ @XmlJavaTypeAdapter(JaxbFlatQueryResultsAdapter.class)
+ @XmlElement(name="results")
private ArrayList<ArrayList<Object>> results;
+ @XmlJavaTypeAdapter(JaxbFlatQueryResultsAdapter.class)
+ @XmlElement(name="fact-handles")
private ArrayList<ArrayList<FactHandle>> factHandles;
public FlatQueryResults() {
Added: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java (rev 0)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java 2010-02-12 14:48:41 UTC (rev 31611)
@@ -0,0 +1,36 @@
+package org.drools.xml.jaxb.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+
+public class JaxbFlatQueryResultsAdapter extends XmlAdapter<Object[], ArrayList<ArrayList<Object>>> {
+
+ @Override
+ public Object[] marshal(ArrayList<ArrayList<Object>> value) throws Exception {
+ if (value == null || value.isEmpty()) {
+ return new JaxbPair[0];
+ }
+ List<Object> ret = new ArrayList<Object>();
+ for (ArrayList<Object> arrayList : value) {
+ for (Object object : arrayList) {
+ ret.add(object);
+ }
+ }
+ return ret.toArray(new Object[ret.size()]);
+ }
+
+ @Override
+ public ArrayList<ArrayList<Object>> unmarshal(Object[] value) throws Exception {
+ ArrayList<Object> objects = new ArrayList<Object>();
+ for( Object o : value ) {
+ objects.add(o);
+ }
+ ArrayList<ArrayList<Object>> list = new ArrayList<ArrayList<Object>>();
+ list.add(objects);
+ return list;
+ }
+
+}
Property changes on: labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.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-12 14:07:14 UTC (rev 31610)
+++ labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java 2010-02-12 14:48:41 UTC (rev 31611)
@@ -5,6 +5,7 @@
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Iterator;
import java.util.List;
import javax.xml.bind.JAXBContext;
@@ -28,6 +29,8 @@
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.QueryResultsRow;
+import org.drools.runtime.rule.impl.FlatQueryResults;
import com.sun.tools.xjc.Language;
import com.sun.tools.xjc.Options;
@@ -118,52 +121,20 @@
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\" standalone=\"yes\"?>\n";
- expectedXml += "<execution-results xmlns:ns2=\"http://drools.org/model\">\n";
- expectedXml += " <results>\n";
- expectedXml += " <item key=\"rider\">\n";
- expectedXml += " <value xsi:type=\"person\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
- expectedXml += " <age>0</age>\n";
- expectedXml += " <name>salaboy</name>\n";
- expectedXml += " </value>\n";
- expectedXml += " </item>\n";
- expectedXml += " </results>\n";
- expectedXml += " <facts/>\n";
- expectedXml += "</execution-results>\n";
+ byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", cmd.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(xmlResp);
+ System.out.println(new String(xmlResp));
- assertEquals(expectedXml, outXml);
+ ExecutionResults resp = (ExecutionResults) jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
+ Person person = (Person) resp.getValue("rider");
+ System.out.println(person.getName());
+
+ assertEquals("salaboy", person.getName());
+
}
- public void testWorkingSetGlobalTestSessionSetAndGetGlobal() 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 = "";
@@ -233,6 +204,19 @@
assertNotNull(xmlResp);
System.out.println(new String(xmlResp));
+ ExecutionResults resp = (ExecutionResults) jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
+
+ FlatQueryResults personQuery = (FlatQueryResults) resp.getValue("person");
+ assertEquals(1, personQuery.size());
+ FlatQueryResults personsQuery = (FlatQueryResults) resp.getValue("persons");
+ assertEquals(1, personsQuery.size());
+
+ Iterator<QueryResultsRow> iterator = personQuery.iterator();
+ QueryResultsRow row = iterator.next();
+ Person person = (Person) row.get("param");
+
+ assertEquals("baunax", person.getName());
}
public void testProcess() throws Exception {
More information about the jboss-svn-commits
mailing list