[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