[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