[jboss-svn-commits] JBL Code SVN: r33996 - in labs/jbossrules/trunk: drools-camel/src/test/java/org/drools/camel/component and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jul 18 02:55:03 EDT 2010


Author: mark.proctor at jboss.com
Date: 2010-07-18 02:55:02 -0400 (Sun, 18 Jul 2010)
New Revision: 33996

Modified:
   labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java
   labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
   labs/jbossrules/trunk/drools-camel/src/test/resources/org/drools/camel/component/CxfRsSpring.xml
   labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListAdapter.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java
Log:
JBRULES-2347 Camel
-Moving to latest JAXB
-List handling for InsertElementsCommand is now mow robust for JAXB

Modified: labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/DroolsProducer.java	2010-07-18 06:55:02 UTC (rev 33996)
@@ -74,42 +74,20 @@
 
     public void process(Exchange exchange) throws Exception {
 
-        // Lookup the original ClassLoaders, so we can restore after execution
-        //        ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
         try {
-
-            //            String lookup = null;
-            //            if ( executor == null ) {
-            //                lookup = getLookup(str);
-            //                exchange.setProperty( DroolsComponent.DROOLS_LOOKUP, 
-            //                                      lookup );
-            //            }
-            //            
-            //            
-            //            CommandExecutor exec = getCommandExecutor( lookup );
-            //            if ( exec == null ) {
-            //                throw new RuntimeException( "CommandExecutor cannot be found for uri " + this.getEndpoint().getEndpointUri() );
-            //            }
-            //            
-            //            ClassLoader localClassLoader = getClassLoader( exec );
-            //            if ( exec == null ) {
-            //                throw new RuntimeException( "CommandExecutor Classloader cannot be null for uri " + this.getEndpoint().getEndpointUri() );
-            //            }            
-            //            
-            //            // Set the classloader to the one used by the CommandExecutor
-            //            Thread.currentThread().setContextClassLoader( localClassLoader );
-
             Command cmd = null;
-            if ( de.dataFormat != null ) {
-                String str = exchange.getIn().getBody( String.class );
-                ByteArrayInputStream bais = new ByteArrayInputStream( str.getBytes() );
-                cmd = (Command) de.dataFormat.unmarshal( exchange,
-                                                         bais );
-            } else {
-                // no data format set, so we assume it's already concrete
-                cmd = exchange.getIn().getBody( Command.class );
-            }
+//            if ( de.dataFormat != null ) {
+//                String str = exchange.getIn().getBody( String.class );
+//                ByteArrayInputStream bais = new ByteArrayInputStream( str.getBytes() );
+//                cmd = (Command) de.dataFormat.unmarshal( exchange,
+//                                                         bais );
+//            } else {
+//                // no data format set, so we assume it's already concrete
+//                cmd = exchange.getIn().getBody( Command.class );
+//            }
 
+            cmd = exchange.getIn().getBody( Command.class );
+            
             if ( cmd == null ) {
                 throw new RuntimeCamelException( "Body of in message not of the expected type 'org.drools.command.Command' for uri" + de.getEndpointUri()  );
             }
@@ -149,15 +127,16 @@
 
             ExecutionResults results = exec.execute( (BatchExecutionCommand) cmd );;
 
-            if ( de.dataFormat != null ) {
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                de.dataFormat.marshal( exchange,
-                                       results,
-                                       baos );
-                exchange.getOut().setBody( baos.toByteArray() );
-            } else {
-                exchange.getOut().setBody( results );
-            }
+//            if ( de.dataFormat != null ) {
+//                ByteArrayOutputStream baos = new ByteArrayOutputStream();
+//                de.dataFormat.marshal( exchange,
+//                                       results,
+//                                       baos );
+//                exchange.getOut().setBody( baos.toByteArray() );
+//            } else {
+//                exchange.getOut().setBody( results );
+//            }
+            exchange.getOut().setBody( results );
         } finally {
             // we must restore the ClassLoader
             //            Thread.currentThread().setContextClassLoader( originalClassLoader );

Modified: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java	2010-07-18 06:55:02 UTC (rev 33996)
@@ -17,6 +17,7 @@
 package org.drools.camel.component;
 
 import java.io.ByteArrayInputStream;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -29,6 +30,7 @@
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.model.OnCompletionDefinition;
@@ -238,14 +240,9 @@
         marshaller.marshal( cmd,
                             xmlReq );
 
-        System.out.println( xmlReq.toString() );
-
-        BatchExecutionCommand cmd2 = (BatchExecutionCommand) getJaxbContext().createUnmarshaller().unmarshal( new ByteArrayInputStream( xmlReq.toString().getBytes() ) );
-
         byte[] xmlResp = (byte[]) template.requestBody( "direct:test-with-session",
                                                         xmlReq.toString() );
         assertNotNull( xmlResp );
-        System.out.println( new String( xmlResp ) );
 
         ExecutionResults resp = (ExecutionResults) getJaxbContext().createUnmarshaller().unmarshal( new ByteArrayInputStream( xmlResp ) );
         assertNotNull( resp );

Modified: labs/jbossrules/trunk/drools-camel/src/test/resources/org/drools/camel/component/CxfRsSpring.xml
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/resources/org/drools/camel/component/CxfRsSpring.xml	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-camel/src/test/resources/org/drools/camel/component/CxfRsSpring.xml	2010-07-18 06:55:02 UTC (rev 33996)
@@ -73,7 +73,7 @@
        <from uri="direct://http"/>
        <policy ref="droolsPolicy">
 	       <to uri="cxfrs://http://localhost:9002/rest"/> 
-       </policy>
+       </policy> 
     </route> 
         
   </camelContext>

Modified: labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF	2010-07-18 06:55:02 UTC (rev 33996)
@@ -17,7 +17,7 @@
  g.mvel2.optimizers;version="2.0",org.mvel2.templates;version="2.0",or
  g.mvel2.util;version="2.0",org.osgi.framework;version="1.5",org.w3c.d
  om,org.xml.sax,org.xml.sax.helpers
-Bnd-LastModified: 1279343048391
+Bnd-LastModified: 1279435342183
 Export-Package: org.drools.process.core.timer;version="5.1.0.SNAPSHOT"
  ,org.drools.ruleflow.instance;uses:="org.drools.workflow.instance.imp
  l,org.drools.workflow.instance,org.drools.ruleflow.core,org.drools.wo

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java	2010-07-18 06:55:02 UTC (rev 33996)
@@ -60,9 +60,7 @@
  */
 @XmlRootElement(name="batch-execution")
 @XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "batch-execution", propOrder = {
-    "lookup", "commands"
-})
+ at XmlType(name = "batch-execution", propOrder = {"lookup", "commands"})
 public class BatchExecutionCommand implements GenericCommand<ExecutionResults> {
 	
 	private static final long serialVersionUID = 1L;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListAdapter.java	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListAdapter.java	2010-07-18 06:55:02 UTC (rev 33996)
@@ -1,5 +1,6 @@
 package org.drools.xml.jaxb.util;
 
+import java.util.Arrays;
 import java.util.List;
 
 import javax.xml.bind.annotation.adapters.XmlAdapter;
@@ -8,19 +9,12 @@
 
     @Override
     public JaxbListWrapper marshal(List v) throws Exception {
-        if ( !(v instanceof JaxbListWrapper) ) {
-            JaxbListWrapper<Object> wrapper = new JaxbListWrapper<Object>( ((List< ? >) v).size() );
-            for ( Object item : ((List< ? >) v) ) {
-                wrapper.add( item );
-            }
-            return wrapper;
-        }
-        return (JaxbListWrapper) v;
+        return new JaxbListWrapper( v.toArray( new Object[v.size()]) );
     }
 
     @Override
     public List unmarshal(JaxbListWrapper v) throws Exception {
-        return v;
+        return Arrays.asList( v.getElements() );
     }
 
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java	2010-07-18 06:55:02 UTC (rev 33996)
@@ -1,6 +1,7 @@
 package org.drools.xml.jaxb.util;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 
@@ -10,31 +11,26 @@
 import javax.xml.bind.annotation.XmlRootElement;
 
 
- at XmlAccessorType(XmlAccessType.PROPERTY)
+ at XmlAccessorType(XmlAccessType.NONE)
 @XmlRootElement(name="list")
-public class JaxbListWrapper<T> extends ArrayList<T> {
-
-	public JaxbListWrapper() {
-		super();
-	}
-
-	public JaxbListWrapper(Collection<? extends T> c) {
-		super(c);
-	}
-
-	public JaxbListWrapper(int initialCapacity) {
-		super(initialCapacity);
-	}
-
+public class JaxbListWrapper<T>  {
+    
+    Object[] elements;
+    
+    public JaxbListWrapper() {
+        
+    }
+    
+    public JaxbListWrapper(Object[] elements) {
+        this.elements = elements;
+    }
+    
 	@XmlElement(name="element")
-	public List<T> getElements() {
-		return this;
+	public Object[] getElements() {
+		return elements;
 	}
 	
-	public void setElements(List<T> elems) {
-		clear();
-		if (elems != null) {
-			addAll(elems);
-		}
+	public void setElements(Object[] elements) {
+	    this.elements = elements;
 	}
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java	2010-07-18 06:47:29 UTC (rev 33995)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java	2010-07-18 06:55:02 UTC (rev 33996)
@@ -1,6 +1,7 @@
 package org.drools.xml.jaxb.util;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -30,12 +31,8 @@
 		        obj = new FlatQueryResults( ((NativeQueryResults )obj).getResults() );
 		    } else if (obj instanceof FactHandle && !(obj instanceof DisconnectedFactHandle)) {
 		        obj = new DisconnectedFactHandle(((FactHandle) obj).toExternalForm());
-	        } else if (List.class.isAssignableFrom(vClass) && !JaxbListWrapper.class.equals(vClass)) {
-	                JaxbListWrapper<Object> wrapper = new JaxbListWrapper<Object>(((List<?>) obj).size());
-	                for (Object item : ((List<?>) obj)) {
-	                    wrapper.add(item);
-	                }	     
-	                obj = wrapper;
+	        } else if (List.class.isAssignableFrom(vClass) && !JaxbListWrapper.class.equals(vClass)) {    
+	                obj = new JaxbListWrapper( ((List<?>) obj).toArray( new Object[((List<?>) obj).size()]) );;
 	        }
 			ret.add(new JaxbPair(entry.getKey(), obj));
 		}
@@ -47,7 +44,11 @@
 	public Map<String, Object> unmarshal(JaxbPair[] value) throws Exception {
 		Map<String, Object> r = new HashMap<String, Object>();
 		for( JaxbPair p : value ) {
-			r.put(p.getKey(), p.getValue());
+		    if ( p.getValue() instanceof JaxbListWrapper) {
+		        r.put(p.getKey(), Arrays.asList( ((JaxbListWrapper)p.getValue()).getElements() ) );
+		    } else {
+		        r.put(p.getKey(), p.getValue());
+		    }
 		}
 		return r;
 	}



More information about the jboss-svn-commits mailing list