[jboss-svn-commits] JBL Code SVN: r31186 - in labs/jbossrules/branches/camel_jaxb_marshaller-lucaz: drools-core/src/main/java/org/drools/command/runtime and 7 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jan 21 15:59:44 EST 2010
Author: lucazamador
Date: 2010-01-21 15:59:42 -0500 (Thu, 21 Jan 2010)
New Revision: 31186
Removed:
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/jaxb.index
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/jaxb.index
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java
Modified:
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
Log:
InserObjectCommand working, added temporarily jaxb dependencies to core
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/pom.xml 2010-01-21 20:59:42 UTC (rev 31186)
@@ -40,6 +40,18 @@
<groupId>org.joda</groupId>
<artifactId>com.springsource.org.joda.time</artifactId>
</dependency-->
+
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>2.0.3</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-xjc</artifactId>
+ <version>2.0.3</version>
+ </dependency>
</dependencies>
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -8,6 +8,7 @@
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import org.drools.command.Context;
@@ -50,9 +51,10 @@
*
*
*/
+ at XmlRootElement(name="batch-execution")
@XmlAccessorType(XmlAccessType.FIELD)
- at XmlType(name = "BatchExecutionCommand", propOrder = {
- "commands"
+ at XmlType(name = "batch-execution", propOrder = {
+ "lookup", "commands"
})
public class BatchExecutionCommand implements GenericCommand<Void> {
@@ -75,14 +77,14 @@
@XmlElements({
@XmlElement(name = "set-global", type = SetGlobalCommand.class),
- @XmlElement(name = "complete-work-item", type = CompleteWorkItemCommand.class),
- @XmlElement(name = "abort-work-item", type = AbortWorkItemCommand.class),
- @XmlElement(name = "signal-event", type = SignalEventCommand.class),
- @XmlElement(name = "fire-all-rules", type = FireAllRulesCommand.class),
- @XmlElement(name = "start-process", type = StartProcessCommand.class),
- @XmlElement(name = "get-global", type = GetGlobalCommand.class),
- @XmlElement(name = "insert-elements", type = InsertElementsCommand.class),
- @XmlElement(name = "query", type = QueryCommand.class),
+// @XmlElement(name = "complete-work-item", type = CompleteWorkItemCommand.class),
+// @XmlElement(name = "abort-work-item", type = AbortWorkItemCommand.class),
+// @XmlElement(name = "signal-event", type = SignalEventCommand.class),
+// @XmlElement(name = "fire-all-rules", type = FireAllRulesCommand.class),
+// @XmlElement(name = "start-process", type = StartProcessCommand.class),
+// @XmlElement(name = "get-global", type = GetGlobalCommand.class),
+// @XmlElement(name = "insert-elements", type = InsertElementsCommand.class),
+// @XmlElement(name = "query", type = QueryCommand.class),
@XmlElement(name = "insert", type = InsertObjectCommand.class)
})
protected List<GenericCommand<?>> commands;
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -4,6 +4,7 @@
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
@@ -13,6 +14,7 @@
import org.drools.result.SetGlobalResult;
import org.drools.runtime.StatefulKnowledgeSession;
+ at XmlRootElement
@XmlAccessorType( XmlAccessType.NONE )
public class SetGlobalCommand
implements
@@ -21,7 +23,7 @@
@XmlAttribute(required = true)
private String identifier;
- @XmlElement
+ @XmlElement(name="")
private Object object;
@XmlAttribute(name = "out-identifier")
Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/jaxb.index 2010-01-21 20:59:42 UTC (rev 31186)
@@ -1 +0,0 @@
-BatchExecutionCommand
\ No newline at end of file
Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/process/jaxb.index
===================================================================
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -1,5 +1,11 @@
package org.drools.command.runtime.rule;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
@@ -8,14 +14,18 @@
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
+ at XmlRootElement
+ at XmlAccessorType( XmlAccessType.NONE )
public class InsertObjectCommand
implements
GenericCommand<FactHandle> {
private static final long serialVersionUID = 1L;
+ @XmlElement
private Object object;
+ @XmlAttribute(name="out-identifier", required=true)
private String outIdentifier;
private boolean returnObject = true;
Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/command/runtime/rule/jaxb.index
===================================================================
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -16,6 +16,9 @@
* limitations under the License.
*/
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
import org.drools.FactHandle;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.reteoo.LeftTuple;
@@ -26,6 +29,7 @@
* @author <a href="mailto:mark.proctor at jboss.com">Mark Proctor</a>
* @author <a href="mailto:bob at werken.com">bob mcwhirter </a>
*/
+ at XmlRootElement
public class DefaultFactHandle
implements
InternalFactHandle {
@@ -193,6 +197,7 @@
return false;
}
+ @XmlTransient
public RightTuple getRightTuple() {
return rightTuple;
}
@@ -205,10 +210,12 @@
this.leftTuple = leftTuple;
}
+ @XmlTransient
public LeftTuple getLeftTuple() {
return this.leftTuple;
}
+ @XmlTransient
public WorkingMemoryEntryPoint getEntryPoint() {
return entryPoint;
}
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -1,21 +1,23 @@
package org.drools.runtime.impl;
-import java.util.Collection;
import java.util.List;
+import javax.xml.bind.annotation.XmlRootElement;
+
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
-import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.reteoo.ReteooWorkingMemory;
-import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.process.ProcessInstance;
-import org.drools.vsm.ServiceManager;
+ at XmlRootElement
+public class BatchExecutionImpl implements GenericCommand<Void> {
-public class BatchExecutionImpl implements GenericCommand<Void> {
+ private static final long serialVersionUID = 1L;
+
private List<GenericCommand> commands;
private String lookup;
+
+ public BatchExecutionImpl() {
+ }
public BatchExecutionImpl(List<GenericCommand> commands) {
this.commands = commands;
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -5,8 +5,11 @@
import java.util.HashMap;
import java.util.Map;
+import javax.xml.bind.annotation.XmlRootElement;
+
import org.drools.runtime.ExecutionResults;
+ at XmlRootElement(name="execution-results")
public class ExecutionResultImpl implements ExecutionResults, Serializable {
Map<String, Object> results = new HashMap<String, Object>();
Map<String, Object> facts = new HashMap<String, Object>();
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -9,6 +9,7 @@
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.Source;
@@ -24,7 +25,6 @@
import org.drools.reteoo.ReteooRuleBase;
import org.drools.runtime.CommandExecutor;
import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.impl.JaxbFromXmlVsmTransformer;
import org.drools.runtime.pipeline.impl.ServiceManagerPipelineContextImpl;
import org.drools.vsm.ServiceManager;
import org.drools.vsm.local.ServiceManagerLocalClient;
@@ -41,145 +41,105 @@
*/
public class DroolsJaxbDataFormat implements DataFormat {
- private JaxbFromXmlVsmTransformer transformer;
private Unmarshaller unmarshaller;
- private String charset;
+ private Marshaller marshaller;
- public DroolsJaxbDataFormat() throws JAXBException {
- JAXBContext jaxbContext = createJaxbContext();
- transformer = new JaxbFromXmlVsmTransformer(jaxbContext);
- transformer.addContextForCommands();
- unmarshaller = transformer.getUnmarshaller();
- }
+ public DroolsJaxbDataFormat() throws JAXBException {
+ JAXBContext jaxbContext = createJaxbContext();
+ this.unmarshaller = jaxbContext.createUnmarshaller();
+ this.marshaller = jaxbContext.createMarshaller();
+ this.marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ }
- public void marshal(Exchange exchange, Object graph, OutputStream stream)
- throws Exception {
+ public void marshal(Exchange exchange, Object graph, OutputStream stream)
+ throws Exception {
- System.out.println("JaxbDataFormat marshal");
-
-// PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
-// JAXBContext jaxbContext = (JAXBContext) context.getProperties().get("jaxb-context");
-// this.unmarshaller = getUnmarshaller(jaxbContext);
+ System.out.println("JaxbDataFormat marshal");
- String result = null;
- Object body = exchange.getIn().getBody();
-
- if ( body instanceof File ) {
- result = (String) this.unmarshaller.unmarshal( (File) body );
- } else if ( body instanceof InputStream ) {
- result = (String) this.unmarshaller.unmarshal( (InputStream) body );
- } else if ( body instanceof Reader ) {
- result = (String) this.unmarshaller.unmarshal( (Reader) body );
- } else if ( body instanceof Source ) {
- result = (String) this.unmarshaller.unmarshal( (Source) body );
- } else if ( body instanceof InputSource ) {
- result = (String) this.unmarshaller.unmarshal( (InputSource) body );
- } else if ( body instanceof Resource ) {
- result = (String) this.unmarshaller.unmarshal( (( Resource ) body).getReader() );
- } else if ( body instanceof String ) {
- result = (String) this.unmarshaller.unmarshal( new StringReader( ( String ) body ) );
- } else {
- throw new IllegalArgumentException( "exchange input body object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
- }
+ Object body = exchange.getIn().getBody();
- byte[] bytes;
- if (charset != null) {
- bytes = result.getBytes(charset);
- } else {
- bytes = result.getBytes();
- }
+ this.marshaller.marshal(body, stream);
- stream.write(bytes);
+ stream.flush();
- }
+ }
-// private Unmarshaller getUnmarshaller(JAXBContext jaxbCtx) throws JAXBException {
-// if (this.unmarshaller==null) {
-// this.unmarshaller = jaxbCtx.createUnmarshaller();
-// }
-// return this.unmarshaller;
-// }
-
public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
-
+
System.out.println("JaxbDataFormat unmarshal");
- PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
- Document d = exchange.getIn().getBody(Document.class);
- Object body = exchange.getIn().getBody();
- String name = d.getDocumentElement().getAttribute("lookup");
+ PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
+ Document d = exchange.getIn().getBody(Document.class);
+ Object body = exchange.getIn().getBody();
+ String name = d.getDocumentElement().getAttribute("lookup");
// JAXBContext jaxbContext = (JAXBContext) context.getProperties().get("jaxb-context");
// this.unmarshaller = getUnmarshaller(jaxbContext);
- ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
- ServiceManager sm = vsmContext.getServiceManager();
- CommandExecutor executor = sm.lookup(name);
- if (executor == null) {
- throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
- }
- vsmContext.setCommandExecutor(executor);
- ClassLoader cl = null;
- if (executor instanceof StatefulKnowledgeSessionImpl) {
- cl = ((ReteooRuleBase) ((StatefulKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
- } else if (executor instanceof StatelessKnowledgeSessionImpl) {
- cl = ((ReteooRuleBase) ((StatelessKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
- } else {
- throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
- }
- vsmContext.setClassLoader(cl);
- Object payload = null;
- if ( body instanceof File ) {
- payload = (String) this.unmarshaller.unmarshal( (File) body );
- } else if ( body instanceof InputStream ) {
- payload = (String) this.unmarshaller.unmarshal( (InputStream) body );
- } else if ( body instanceof Reader ) {
- payload = (String) this.unmarshaller.unmarshal( (Reader) body );
- } else if ( body instanceof Source ) {
- payload = (String) this.unmarshaller.unmarshal( (Source) body );
- } else if ( body instanceof InputSource ) {
- payload = (String) this.unmarshaller.unmarshal( (InputSource) body );
- } else if ( body instanceof Resource ) {
- payload = (String) this.unmarshaller.unmarshal( (( Resource ) body).getReader() );
- } else if ( body instanceof String ) {
- System.out.println("body instanceof String == true");
- try {
- payload = (String) this.unmarshaller.unmarshal( new StringReader( ( String ) body ) );
- } catch (JAXBException e) {
- // TODO Auto-generated catch block
+ ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) exchange.getProperty("drools-context");
+ ServiceManager sm = vsmContext.getServiceManager();
+ CommandExecutor executor = sm.lookup(name);
+ if (executor == null) {
+ throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
+ }
+ vsmContext.setCommandExecutor(executor);
+ ClassLoader cl = null;
+ if (executor instanceof StatefulKnowledgeSessionImpl) {
+ cl = ((ReteooRuleBase) ((StatefulKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
+ } else if (executor instanceof StatelessKnowledgeSessionImpl) {
+ cl = ((ReteooRuleBase) ((StatelessKnowledgeSessionImpl) executor).getRuleBase()).getRootClassLoader();
+ } else {
+ throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
+ }
+ vsmContext.setClassLoader(cl);
+ Object payload = null;
+ if ( body instanceof File ) {
+ payload = (String) this.unmarshaller.unmarshal( (File) body );
+ } else if ( body instanceof InputStream ) {
+ payload = (String) this.unmarshaller.unmarshal( (InputStream) body );
+ } else if ( body instanceof Reader ) {
+ payload = (String) this.unmarshaller.unmarshal( (Reader) body );
+ } else if ( body instanceof Source ) {
+ payload = (String) this.unmarshaller.unmarshal( (Source) body );
+ } else if ( body instanceof InputSource ) {
+ payload = (String) this.unmarshaller.unmarshal( (InputSource) body );
+ } else if ( body instanceof Resource ) {
+ payload = (String) this.unmarshaller.unmarshal( (( Resource ) body).getReader() );
+ } else if ( body instanceof String ) {
+ try {
+ payload = this.unmarshaller.unmarshal( new StringReader( ( String ) body ) );
+ } catch (Exception e) {
e.printStackTrace();
}
- System.out.println("body unmarshaled");
- } else {
- throw new IllegalArgumentException( "exchange input body object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
- }
+ System.out.println("body unmarshaled");
+ } else {
+ throw new IllegalArgumentException( "exchange input body object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
+ }
// context.getProperties().put("jaxb-context", jaxbCtx);
- exchange.setProperty("drools-context", context);
- System.out.println("body txt: " + body.getClass().getCanonicalName());
- System.out.println("return payload: " + payload);
+ exchange.setProperty("drools-context", context);
return payload;
- }
-
+ }
+
/**
- * Only to share temporaly the model definition
+ * Only to share temporarily the model definition, this must be replaced with the JaxbContext inside the Exchange as a property
* @return jaxb context
*/
private JAXBContext createJaxbContext() {
Options xjcOpts = new Options();
- xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+ xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
ServiceManagerLocalClient serviceManager = new ServiceManagerLocalClient();
KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactory().newKnowledgeBuilder();
String[] classNames = null;
- try {
+ try {
classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource("person.xsd", getClass()),
- kbuilder,
- xjcOpts,
- "xsd" );
+ kbuilder,
+ xjcOpts,
+ "xsd" );
} catch (IOException e) {
System.out.println("Errors while adding xsd model. " + kbuilder.getErrors());
}
- KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactory().newKnowledgeBase();
+ KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactory().newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
-
+
JAXBContext jaxbContext = null;
try {
jaxbContext = KnowledgeBuilderHelper.newJAXBContext( classNames, kbase );
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -2,21 +2,16 @@
import java.io.IOException;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-
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.rule.InsertObjectCommand;
-import org.drools.common.InternalFactHandle;
import org.drools.io.ResourceFactory;
import org.drools.pipeline.camel.Person;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.help.BatchExecutionHelper;
import org.drools.runtime.rule.FactHandle;
import com.sun.tools.xjc.Language;
@@ -32,11 +27,19 @@
public void testSessionInsert() throws Exception {
- String cmd = "<BatchExecutionCommand lookup=\"ksession1\">\n" +
- "</BatchExecutionCommand>\n";
+ String cmd = "<batch-execution lookup=\"ksession1\">\n" +
+ "<insert out-identifier=\"lucaz\">\n" +
+ "<object>\n" +
+ "<org.drools.model.person.Person>\n" +
+ "<name>lucaz</name>\n" +
+ "<age>25</age>\n" +
+ "</org.drools.model.person.Person>\n" +
+ "</object>\n" +
+ "</insert>" +
+ "</batch-execution>\n";
Object requestBody = template.requestBody("direct:test-with-session", cmd);
- System.out.println("output: " + requestBody);
+ System.out.println("output: " + new String((byte[])requestBody));
// String outXml = new String((byte[])template.requestBody("direct:test-with-session", cmd));
@@ -113,13 +116,13 @@
KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactory().newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
- JAXBContext jaxbContext = null;
- try {
- jaxbContext = KnowledgeBuilderHelper.newJAXBContext( classNames, kbase );
- } catch (JAXBException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+// JAXBContext jaxbContext = null;
+// try {
+// jaxbContext = KnowledgeBuilderHelper.newJAXBContext( classNames, kbase );
+// } catch (JAXBException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
// put this jaxbContext into the camel-context
StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -89,7 +89,8 @@
class BatchExecutionTransformer extends CommandTransformer {
public GenericCommand<?> transform( CommandTranslator cmdTrans, Object o ){
BatchExecutionCommand be = (BatchExecutionCommand)o;
- List<GenericCommand<?>> xmlCmds = be.getCommands();
+// List<GenericCommand<?>> xmlCmds = be.getCommands();
+ List<GenericCommand<?>> xmlCmds = null;
for( int i = 0; i < xmlCmds.size(); i++ ){
GenericCommand<?> cmd = xmlCmds.get( i );
CommandTransformer ct = cmdTrans.getCommandTransformer( cmd.getClass() );
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -35,7 +35,6 @@
import javax.xml.bind.JAXBException;
import org.drools.KnowledgeBase;
-import org.drools.RuleBase;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.help.DroolsJaxbHelperProvider;
import org.drools.builder.impl.KnowledgeBuilderImpl;
@@ -62,6 +61,14 @@
public class DroolsJaxbHelperProviderImpl
implements
DroolsJaxbHelperProvider {
+
+ private static final String[] JAXB_ANNOTATED_CMD = {"org.drools.command.runtime.BatchExecutionCommand",
+ "org.drools.command.runtime.rule.InsertObjectCommand",
+ "org.drools.runtime.impl.BatchExecutionImpl",
+ "org.drools.runtime.impl.ExecutionResultImpl",
+ "org.drools.common.DefaultFactHandle"
+ };
+
public String[] addXsdModel(Resource resource,
KnowledgeBuilder kbuilder,
Options xjcOpts,
@@ -141,8 +148,10 @@
Map<String, ? > properties,
KnowledgeBase kbase) throws JAXBException {
ClassLoader classLoader = ((InternalRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader();
+
+
- Class[] classes = new Class[classNames.length];
+ Class[] classes = new Class[classNames.length + JAXB_ANNOTATED_CMD.length];
int i = 0;
try {
for ( i = 0; i < classNames.length; i++ ) {
@@ -152,7 +161,16 @@
throw new JAXBException( "Unable to resolve class '" + classNames[i] + "'",
e );
}
-
+ int j = 0;
+ try {
+ for (i = classNames.length; i < classes.length; i++, j++) {
+ classes[i] = classLoader.loadClass( JAXB_ANNOTATED_CMD[j] );
+ }
+ } catch ( ClassNotFoundException e ) {
+ throw new JAXBException( "Unable to resolve class '" + JAXB_ANNOTATED_CMD[j] + "'",
+ e );
+ }
+
return JAXBContext.newInstance( classes,
properties );
}
Deleted: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlVsmTransformer.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -1,113 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import java.io.File;
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.StringReader;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.Source;
-
-import org.drools.command.runtime.BatchExecutionCommand;
-import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.impl.StatelessKnowledgeSessionImpl;
-import org.drools.io.Resource;
-import org.drools.reteoo.ReteooRuleBase;
-import org.drools.runtime.CommandExecutor;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.vsm.ServiceManager;
-import org.w3c.dom.Document;
-import org.xml.sax.InputSource;
-
-/**
- *
- * @author Lucas Amador
- *
- */
-public class JaxbFromXmlVsmTransformer extends JaxbTransformer implements Transformer {
-
- private CommandTranslator cmdTranslator;
- private Unmarshaller unmarshaller;
- private Object payload;
-
- public JaxbFromXmlVsmTransformer(JAXBContext jaxbCtx) {
- super(jaxbCtx);
- }
-
- public void receive(Object object, PipelineContext context) {
- this.payload = processPayload(object, context);
- emit( this.payload, context );
- }
-
- public Object processPayload(Object object, PipelineContext context) {
-
- try {
- Document d = (Document) object;
- String name = d.getDocumentElement().getAttribute("lookup");
- ServiceManagerPipelineContextImpl vsmContext = (ServiceManagerPipelineContextImpl) context;
- ServiceManager sm = vsmContext.getServiceManager();
- CommandExecutor executor = sm.lookup(name);
- if (executor == null) {
- throw new IllegalArgumentException("Unable to lookup CommandExecutor using name '" + name + "'");
- }
- vsmContext.setCommandExecutor(executor);
- ClassLoader cl = null;
- if (executor instanceof StatefulKnowledgeSessionImpl) {
- cl = ((ReteooRuleBase) (( StatefulKnowledgeSessionImpl ) executor).getRuleBase()).getRootClassLoader();
- } else if (executor instanceof StatelessKnowledgeSessionImpl) {
- cl = ((ReteooRuleBase) (( StatelessKnowledgeSessionImpl ) executor).getRuleBase()).getRootClassLoader();
- } else {
- throw new IllegalArgumentException("Unable to set ClassLoader on " + executor);
- }
- vsmContext.setClassLoader(cl);
- if ( object instanceof File ) {
- payload = this.unmarshaller.unmarshal( (File) object );
- } else if ( object instanceof InputStream ) {
- payload = this.unmarshaller.unmarshal( (InputStream) object );
- } else if ( object instanceof Reader ) {
- payload = this.unmarshaller.unmarshal( (Reader) object );
- } else if ( object instanceof Source ) {
- payload = this.unmarshaller.unmarshal( (Source) object );
- } else if ( object instanceof InputSource ) {
- payload = this.unmarshaller.unmarshal( (InputSource) object );
- } else if ( object instanceof Resource ) {
- payload = this.unmarshaller.unmarshal( (( Resource ) object).getReader() );
- } else if ( object instanceof String ) {
- payload = this.unmarshaller.unmarshal( new StringReader( ( String ) object ) );
- } else {
- throw new IllegalArgumentException( "signal object must be instance of File, InputStream, Reader, Source, InputSource, Resource, String" );
- }
- } catch (Exception e) {
- handleException(this, object, e);
- }
-
- if ( payload instanceof JAXBElement<?> ) {
- payload = ((JAXBElement<?>) payload).getValue();
- }
-
- if( payload instanceof BatchExecutionCommand ){
- if ( cmdTranslator == null ) {
- cmdTranslator = new CommandTranslator( this );
- }
- cmdTranslator.transform( (BatchExecutionCommand)payload );
- }
-
- return payload;
- }
-
- public Unmarshaller getUnmarshaller() {
- if (this.unmarshaller==null) {
- try {
- this.unmarshaller = jaxbPrimaryContext.createUnmarshaller();
- } catch (JAXBException e) {
- handleException( this, null, e );
- }
- }
- return unmarshaller;
- }
-
-}
Modified: labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java 2010-01-21 16:38:07 UTC (rev 31185)
+++ labs/jbossrules/branches/camel_jaxb_marshaller-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbTransformer.java 2010-01-21 20:59:42 UTC (rev 31186)
@@ -16,7 +16,8 @@
public final static String COMMAND_PACKAGES = "org.drools.command.runtime:" +
"org.drools.command.runtime.process:" +
- "org.drools.command.runtime.rule";
+ "org.drools.command.runtime.rule:" +
+ "org.drools.runtime.impl";
public final static String RESULT_PACKAGE = "org.drools.process.result";
More information about the jboss-svn-commits
mailing list