[jboss-svn-commits] JBL Code SVN: r31701 - in labs/jbossrules/trunk: drools-core and 27 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 16 21:09:47 EST 2010
Author: lucazamador
Date: 2010-02-16 21:09:43 -0500 (Tue, 16 Feb 2010)
New Revision: 31701
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.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
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/resources/META-INF/services/org/apache/camel/dataformat/drools-jaxb
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxWrapperCollectionTest.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java
Removed:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.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
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd
Modified:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
labs/jbossrules/trunk/drools-core/pom.xml
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/GenericCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SetProcessInstanceStateCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/pom.xml
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithMarshallersTest.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/DroolsCamelTestSupport.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/CamelPipelineTest.java
labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/pom.xml
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java
Log:
camel jaxb integration merge (branch camel_jaxb_marshaller2-lucaz)
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -2,15 +2,11 @@
import java.util.Properties;
-import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
-import net.sf.jxls.reader.ReaderBuilder;
import net.sf.jxls.reader.XLSReader;
-import org.drools.builder.help.KnowledgeBuilderHelper;
-import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
import org.milyn.Smooks;
Modified: labs/jbossrules/trunk/drools-core/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-core/pom.xml 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/pom.xml 2010-02-17 02:09:43 UTC (rev 31701)
@@ -39,6 +39,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>
<build>
<plugins>
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResult.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -62,13 +62,13 @@
}
/**
- * Return the Object for the given Declaration identifer.
+ * Return the Object for the given Declaration identifier.
* @param identifier
* @return
* The Object
*/
public Object get(final String identifier) {
- return get( (Declaration) this.queryResults.getDeclarations().get( identifier ) );
+ return get( this.queryResults.getDeclarations().get( identifier ) );
}
/**
@@ -82,7 +82,7 @@
}
public FactHandle getFactHandle(String identifier) {
- return getFactHandle( ( Declaration ) this.queryResults.getDeclarations().get( identifier ) );
+ return getFactHandle( this.queryResults.getDeclarations().get( identifier ) );
}
public FactHandle getFactHandle(Declaration declr) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -23,8 +23,6 @@
import org.drools.rule.Declaration;
import org.drools.rule.Query;
-import org.drools.WorkingMemory;
-import org.drools.spi.Tuple;
/**
* Returned QueryResults instance for a requested named query. from here you can iterate the returned data, or
@@ -34,12 +32,15 @@
public class QueryResults implements Iterable<QueryResult>{
private Query query;
- private Map declarations;
+ private Map<String, Declaration> declarations;
- protected List results;
+ protected List<FactHandle[]> results;
protected WorkingMemory workingMemory;
+
+ public QueryResults() {
+ }
- public QueryResults(final List results,
+ public QueryResults(final List<FactHandle[]> results,
final Query query,
final WorkingMemory workingMemory) {
this.results = results;
@@ -51,7 +52,7 @@
if ( i > this.results.size() ) {
throw new NoSuchElementException();
}
- return new QueryResult( (FactHandle[]) this.results.get( i ),
+ return new QueryResult( this.results.get(i),
this.workingMemory,
this );
}
@@ -72,10 +73,10 @@
* @return
* The Map of Declarations.
*/
- public Map getDeclarations() {
+ public Map<String, Declaration> getDeclarations() {
final Declaration[] declarations = this.query.getDeclarations();
- final Map map = new HashMap( declarations.length );
+ final Map<String, Declaration> map = new HashMap<String, Declaration>( declarations.length );
for ( int i = 0, length = declarations.length; i < length; i++ ) {
map.put( declarations[i].getIdentifier(),
declarations[i] );
@@ -95,10 +96,10 @@
private class QueryResultsIterator
implements
- Iterator {
- private Iterator iterator;
+ Iterator<QueryResult> {
+ private Iterator<FactHandle[]> iterator;
- public QueryResultsIterator(final Iterator iterator) {
+ public QueryResultsIterator(final Iterator<FactHandle[]> iterator) {
this.iterator = iterator;
}
@@ -106,8 +107,8 @@
return this.iterator.hasNext();
}
- public Object next() {
- return new QueryResult( (FactHandle[]) this.iterator.next(),
+ public QueryResult next() {
+ return new QueryResult( this.iterator.next(),
QueryResults.this.workingMemory,
QueryResults.this );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandBasedStatefulKnowledgeSession.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,6 +1,7 @@
package org.drools.command.impl;
import java.util.Collection;
+import java.util.HashMap;
import java.util.Map;
import org.drools.KnowledgeBase;
@@ -162,7 +163,7 @@
Map<String, Object> parameters) {
StartProcessCommand command = new StartProcessCommand();
command.setProcessId( processId );
- command.setParameters( parameters );
+ command.setParameters( (HashMap<String, Object>) parameters );
return commandService.execute( command );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,5 +1,6 @@
package org.drools.command.impl;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -38,7 +39,9 @@
}
public Command newInsertElements(Iterable objects) {
- return new InsertElementsCommand(objects);
+// TODO: FIX THIS
+// return new InsertElementsCommand(objects);
+ return null;
}
public Command newInsert(Object object) {
@@ -112,7 +115,7 @@
Map<String, Object> parameters) {
StartProcessCommand startProcess = new StartProcessCommand();
startProcess.setProcessId(processId);
- startProcess.setParameters(parameters);
+ startProcess.setParameters((HashMap<String, Object>) parameters);
return startProcess;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/GenericCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/GenericCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/GenericCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -2,7 +2,7 @@
import org.drools.command.Context;
-public interface GenericCommand<T> extends org.drools.command.Command {
+public interface GenericCommand<T> extends org.drools.command.Command<T> {
T execute(Context context);
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/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 (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/BatchExecutionCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,150 @@
+package org.drools.command.runtime;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.drools.command.Context;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.runtime.process.AbortWorkItemCommand;
+import org.drools.command.runtime.process.CompleteWorkItemCommand;
+import org.drools.command.runtime.process.SignalEventCommand;
+import org.drools.command.runtime.process.StartProcessCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.command.runtime.rule.GetObjectCommand;
+import org.drools.command.runtime.rule.InsertElementsCommand;
+import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.command.runtime.rule.ModifyCommand;
+import org.drools.command.runtime.rule.QueryCommand;
+import org.drools.command.runtime.rule.RetractCommand;
+
+
+/**
+ * <p>Java class for BatchExecutionCommand complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * <complexType name="BatchExecutionCommand">
+ * <complexContent>
+ * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * <choice maxOccurs="unbounded">
+ * <element name="abort-work-item" type="{http://drools.org/drools-5.0/knowledge-session}AbortWorkItemCommand"/>
+ * <element name="complete-work-item" type="{http://drools.org/drools-5.0/knowledge-session}CompleteWorkItemCommand"/>
+ * <element name="fire-all-rules" type="{http://drools.org/drools-5.0/knowledge-session}FireAllRulesCommand"/>
+ * <element name="get-global" type="{http://drools.org/drools-5.0/knowledge-session}GetGlobalCommand"/>
+ * <element name="insert" type="{http://drools.org/drools-5.0/knowledge-session}InsertObjectCommand"/>
+ * <element name="insert-elements" type="{http://drools.org/drools-5.0/knowledge-session}InsertElementsCommand"/>
+ * <element name="query" type="{http://drools.org/drools-5.0/knowledge-session}QueryCommand"/>
+ * <element name="set-global" type="{http://drools.org/drools-5.0/knowledge-session}SetGlobalCommand"/>
+ * <element name="signal-event" type="{http://drools.org/drools-5.0/knowledge-session}SignalEventCommand"/>
+ * <element name="start-process" type="{http://drools.org/drools-5.0/knowledge-session}StartProcessCommand"/>
+ * </choice>
+ * </restriction>
+ * </complexContent>
+ * </complexType>
+ * </pre>
+ *
+ *
+ */
+ at XmlRootElement(name="batch-execution")
+ at XmlAccessorType(XmlAccessType.FIELD)
+ at XmlType(name = "batch-execution", propOrder = {
+ "lookup", "commands"
+})
+public class BatchExecutionCommand implements GenericCommand<Void> {
+
+ private static final long serialVersionUID = 1L;
+
+ @XmlAttribute(required=true)
+ private String lookup;
+
+ public BatchExecutionCommand(){
+ }
+
+ public BatchExecutionCommand( List<GenericCommand<?>> commands ) {
+ this.commands = commands;
+ }
+
+ public BatchExecutionCommand( List<GenericCommand<?>> commands, String lookup ) {
+ this.commands = commands;
+ this.lookup = lookup;
+ }
+
+ @XmlElements({
+// @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 = "start-process", type = StartProcessCommand.class),
+ @XmlElement(name = "retract", type = RetractCommand.class),
+ @XmlElement(name = "get-global", type = GetGlobalCommand.class),
+ @XmlElement(name = "set-global", type = SetGlobalCommand.class),
+ @XmlElement(name = "insert-elements", type = InsertElementsCommand.class),
+ @XmlElement(name = "query", type = QueryCommand.class),
+ @XmlElement(name = "insert", type = InsertObjectCommand.class),
+ @XmlElement(name = "modify", type = ModifyCommand.class),
+ @XmlElement(name = "get-object", type = GetObjectCommand.class),
+ @XmlElement(name = "fire-all-rules", type = FireAllRulesCommand.class)
+ })
+ protected List<GenericCommand<?>> commands;
+
+ /**
+ * Gets the value of the abortWorkItemOrCompleteWorkItemOrFireAllRules property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the abortWorkItemOrCompleteWorkItemOrFireAllRules property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCommand().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link SetGlobalCommand }
+ * {@link CompleteWorkItemCommand }
+ * {@link AbortWorkItemCommand }
+ * {@link SignalEventCommand }
+ * {@link FireAllRulesCommand }
+ * {@link StartProcessCommand }
+ * {@link GetGlobalCommand }
+ * {@link InsertElementsCommand }
+ * {@link QueryCommand }
+ * {@link InsertObjectCommand }
+ *
+ *
+ */
+ public List<GenericCommand<?>> getCommands() {
+ if (commands == null) {
+ commands = new ArrayList<GenericCommand<?>>();
+ }
+ return this.commands;
+ }
+
+ public Void execute(Context context) {
+ for ( GenericCommand<?> command : commands ) {
+ ((GenericCommand<?>)command).execute( context );
+ }
+ return null;
+ }
+
+ public void setLookup(String lookup) {
+ this.lookup = lookup;
+ }
+
+ public String getLookup() {
+ return lookup;
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/GetGlobalCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,23 +1,30 @@
package org.drools.command.runtime;
-import java.util.Collection;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
-import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.impl.ExecutionResultImpl;
-import org.drools.runtime.rule.FactHandle;
+ at XmlAccessorType(XmlAccessType.NONE)
public class GetGlobalCommand
implements
GenericCommand<Object> {
- private String identifier;
+ private static final long serialVersionUID = 1L;
+
+ @XmlAttribute
+ private String identifier;
+ @XmlAttribute(name="out-identifier")
private String outIdentifier;
+
+ public GetGlobalCommand() {
+ }
public GetGlobalCommand(String identifier) {
this.identifier = identifier;
@@ -39,7 +46,7 @@
StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
Object object = ksession.getGlobal( identifier );
- ExecutionResultImpl results = (ExecutionResultImpl) ((StatefulKnowledgeSessionImpl) ksession).session.getExecutionResult();
+ ExecutionResultImpl results = ((StatefulKnowledgeSessionImpl) ksession).session.getExecutionResult();
if ( results != null ) {
results.getResults().put( (this.outIdentifier != null) ? this.outIdentifier : this.identifier,
object );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/SetGlobalCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,23 +1,36 @@
package org.drools.command.runtime;
-import org.drools.KnowledgeBase;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.StatefulKnowledgeSession;
+ at XmlAccessorType(XmlAccessType.NONE)
public class SetGlobalCommand
implements
GenericCommand<Void> {
+ @XmlAttribute(required=true)
private String identifier;
+
+ @XmlElement
private Object object;
+ @XmlAttribute
private String outIdentifier;
+ @XmlAttribute
private boolean out;
+
+ public SetGlobalCommand() {
+ }
public SetGlobalCommand(String identifier,
Object object) {
@@ -45,6 +58,10 @@
public Object getObject() {
return this.object;
}
+
+ public void setObject( Object object ) {
+ this.object = object;
+ }
public String getOutIdentifier() {
return this.outIdentifier;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/AbortWorkItemCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,15 +1,20 @@
package org.drools.command.runtime.process;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+
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;
+ at XmlAccessorType(XmlAccessType.NONE)
public class AbortWorkItemCommand
implements
GenericCommand<Object> {
+ @XmlAttribute(name="id", required=true)
private long workItemId;
public AbortWorkItemCommand() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SetProcessInstanceStateCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SetProcessInstanceStateCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SetProcessInstanceStateCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,14 +1,10 @@
package org.drools.command.runtime.process;
-import java.util.Collection;
-
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.process.instance.ProcessInstance;
-import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.rule.FactHandle;
public class SetProcessInstanceStateCommand implements GenericCommand<Object> {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/SignalEventCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,15 +1,24 @@
package org.drools.command.runtime.process;
+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 org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.process.ProcessInstance;
+ at XmlAccessorType(XmlAccessType.NONE)
public class SignalEventCommand implements GenericCommand<Object> {
+ @XmlAttribute(name="process-instance-id")
private long processInstanceId = -1;
+ @XmlAttribute(name="event-type", required=true)
private String eventType;
+ @XmlElement(name="event")
private Object event;
public SignalEventCommand() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/process/StartProcessCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -4,53 +4,71 @@
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.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementWrapper;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
import org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.process.instance.ProcessInstance;
-import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.xml.jaxb.util.JaxbMapAdapter;
+ at XmlAccessorType(XmlAccessType.NONE)
public class StartProcessCommand implements GenericCommand<ProcessInstance> {
+
+ @XmlAttribute(required = true)
+ private String processId;
- private String processId;
+ @XmlJavaTypeAdapter(JaxbMapAdapter.class)
+ @XmlElement(name="parameter")
private Map<String, Object> parameters = new HashMap<String, Object>();
+
+ @XmlElementWrapper(name="data")
private List<Object> data = null;
- public StartProcessCommand() {
- }
+ public StartProcessCommand() {
+ }
- public StartProcessCommand(String processId) {
- this.processId = processId;
- }
-
+ public StartProcessCommand(String processId) {
+ this.processId = processId;
+ }
+
public String getProcessId() {
return processId;
}
-
+
public void setProcessId(String processId) {
this.processId = processId;
}
-
+
public Map<String, Object> getParameters() {
return parameters;
}
-
+
public void setParameters(Map<String, Object> parameters) {
this.parameters = parameters;
}
+
+ public void putParameter(String key, Object value) {
+ getParameters().put(key, value);
+ }
public List<Object> getData() {
return data;
}
-
+
public void setData(List<Object> data) {
this.data = data;
}
- public ProcessInstance execute(Context context) {
- StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
-
+ public ProcessInstance execute(Context context) {
+ StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+
if (data != null) {
for (Object o: data) {
ksession.insert(o);
@@ -74,5 +92,4 @@
result += "]);";
return result;
}
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/FireAllRulesCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,19 +1,23 @@
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 org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
-import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.impl.ExecutionResultImpl;
import org.drools.runtime.rule.AgendaFilter;
+ at XmlAccessorType(XmlAccessType.NONE)
public class FireAllRulesCommand
implements
GenericCommand<Integer> {
+ @XmlAttribute
private int max = -1;
private AgendaFilter agendaFilter = null;
private String outIdentifier;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/GetObjectCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,23 +1,37 @@
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 org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
+import org.drools.common.DisconnectedFactHandle;
import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
+ at XmlAccessorType(XmlAccessType.NONE)
public class GetObjectCommand
implements
GenericCommand<Object> {
private FactHandle factHandle;
private String outIdentifier;
+
+ public GetObjectCommand() { }
public GetObjectCommand(FactHandle factHandle) {
this.factHandle = factHandle;
}
+
+ public GetObjectCommand(FactHandle factHandle, String outIdentifier) {
+ this.factHandle = factHandle;
+ this.outIdentifier = outIdentifier;
+ }
+ @XmlAttribute(name="out-identifier", required=true)
public String getOutIdentifier() {
return outIdentifier;
}
@@ -26,7 +40,16 @@
this.outIdentifier = outIdentifier;
}
- public Object execute(Context context) {
+ @XmlAttribute(name="factHandle", required=true)
+ public void setFactHandleFromString(String factHandleId) {
+ factHandle = new DisconnectedFactHandle(factHandleId);
+ }
+
+ public String getFactHandleFromString() {
+ return factHandle.toExternalForm();
+ }
+
+ public Object execute(Context context) {
StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
Object object = ksession.getObject( factHandle );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertElementsCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -4,38 +4,53 @@
import java.util.Collection;
import java.util.List;
+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 org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
+import org.drools.xml.jaxb.util.JaxbListWrapper;
-import com.thoughtworks.xstream.annotations.XStreamImplicit;
-
+ at XmlAccessorType( XmlAccessType.NONE )
public class InsertElementsCommand
implements
GenericCommand<Collection<FactHandle>> {
- public Iterable objects;
+ private static final long serialVersionUID = 501L;
+
+ @XmlElement
+ public List<Object> objects;
+
+ @XmlAttribute
private String outIdentifier;
+ @XmlAttribute
private boolean returnObject = true;
public InsertElementsCommand() {
- this.objects = new ArrayList();
+ this.objects = new ArrayList<Object>();
}
- public InsertElementsCommand(Iterable objects) {
+ public InsertElementsCommand(List<Object> objects) {
this.objects = objects;
}
- public Iterable getObjects() {
+ public InsertElementsCommand(String outIdentifier) {
+ this();
+ this.outIdentifier = outIdentifier;
+ }
+
+ public List<Object> getObjects() {
return this.objects;
}
- public void setObjects(Iterable objects) {
+ public void setObjects(List<Object> objects) {
this.objects = objects;
}
@@ -49,7 +64,7 @@
if ( outIdentifier != null ) {
if ( this.returnObject ) {
((StatefulKnowledgeSessionImpl)ksession).session.getExecutionResult().getResults().put( this.outIdentifier,
- objects );
+ objects);
}
((StatefulKnowledgeSessionImpl)ksession).session.getExecutionResult().getFactHandles().put( this.outIdentifier,
handles );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/InsertObjectCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,24 +1,33 @@
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 org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.common.InternalFactHandle;
import org.drools.impl.StatefulKnowledgeSessionImpl;
import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
+ at XmlAccessorType(XmlAccessType.NONE)
public class InsertObjectCommand
implements
GenericCommand<FactHandle> {
- private Object object;
+ private static final long serialVersionUID = 1L;
+ @XmlElement
+ private Object object;
+
+ @XmlAttribute(name="out-identifier", required=true)
private String outIdentifier;
private boolean returnObject = true;
-
+
public InsertObjectCommand() {
}
@@ -27,7 +36,13 @@
this.object = object;
}
- public FactHandle execute(Context context) {
+ public InsertObjectCommand(Object object, String outIdentifier) {
+ super();
+ this.object = object;
+ this.outIdentifier = outIdentifier;
+ }
+
+ public FactHandle execute(Context context) {
StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
FactHandle factHandle = ksession.insert( object );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/ModifyCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,17 +1,24 @@
package org.drools.command.runtime.rule;
-import java.util.Collection;
import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+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.Setter;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
-import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.common.DisconnectedFactHandle;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
import org.mvel2.MVEL;
+ at XmlAccessorType(XmlAccessType.NONE)
public class ModifyCommand
implements
GenericCommand<Object> {
@@ -24,9 +31,12 @@
private FactHandle handle;
+ @XmlAnyElement
private List<Setter> setters;
-
+ public ModifyCommand() {
+ }
+
public ModifyCommand(FactHandle handle,
List<Setter> setters) {
this.handle = handle;
@@ -47,10 +57,19 @@
public FactHandle getFactHandle() {
return this.handle;
}
+
+ @XmlAttribute(name="factHandle", required=true)
+ public void setFactHandleFromString(String factHandleId) {
+ handle = new DisconnectedFactHandle(factHandleId);
+ }
public List<Setter> getSetters() {
return this.setters;
}
+
+ public void setSetters(List<Setter> setters) {
+ this.setters = setters;
+ }
private String getMvelExpr() {
StringBuilder sbuilder = new StringBuilder();
@@ -74,11 +93,17 @@
return "modify() " + getMvelExpr();
}
+ @XmlRootElement(name="set")
public static class SetterImpl
implements
Setter {
+ @XmlAttribute
private String accessor;
+ @XmlAttribute
private String value;
+
+ public SetterImpl() {
+ }
public SetterImpl(String accessor,
String value) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/QueryCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,27 +1,41 @@
package org.drools.command.runtime.rule;
-import java.util.Collection;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+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 org.drools.command.Context;
import org.drools.command.impl.GenericCommand;
import org.drools.command.impl.KnowledgeCommandContext;
import org.drools.impl.StatefulKnowledgeSessionImpl;
-import org.drools.reteoo.ReteooWorkingMemory;
-import org.drools.runtime.ExecutionResults;
import org.drools.runtime.StatefulKnowledgeSession;
-import org.drools.runtime.rule.FactHandle;
import org.drools.runtime.rule.QueryResults;
-import org.drools.runtime.rule.impl.NativeQueryResults;
+ at XmlAccessorType( XmlAccessType.NONE )
public class QueryCommand implements GenericCommand<QueryResults> {
+
+ private static final long serialVersionUID = 1L;
+
+ @XmlAttribute(name = "out-identifier")
private String outIdentifier;
+ @XmlAttribute(required = true)
private String name;
- private Object[] arguments;
+ @XmlElement
+ private List<Object> arguments;
+
+ public QueryCommand() {
+ }
+
public QueryCommand(String outIdentifier, String name, Object[] arguments) {
this.outIdentifier = outIdentifier;
this.name = name;
- this.arguments = arguments;
+ this.arguments = arguments != null ? Arrays.asList( arguments ) : Arrays.asList();
}
public String getOutIdentifier() {
@@ -38,10 +52,13 @@
public void setName(String name) {
this.name = name;
}
- public Object[] getArguments() {
- return arguments;
+ public List<Object> getArguments() {
+ if (this.arguments == null) {
+ this.arguments = new ArrayList<Object>();
+ }
+ return this.arguments;
}
- public void setArguments(Object[] arguments) {
+ public void setArguments(List<Object> arguments) {
this.arguments = arguments;
}
@@ -49,13 +66,19 @@
StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
QueryResults results = null;
+
+ //TODO {bauna} remove this try
+ try {
+ if ( arguments == null || arguments.size() == 0 ) {
+ results = ksession.getQueryResults( name );
+ } else {
+ results = ksession.getQueryResults( name, this.arguments.toArray() );
+ }
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
- if ( arguments == null || arguments.length == 0 ) {
- results = ksession.getQueryResults( name );
- } else {
- results = ksession.getQueryResults( name, this.arguments );
- }
-
if ( this.outIdentifier != null ) {
((StatefulKnowledgeSessionImpl)ksession).session.getExecutionResult().getResults().put( this.outIdentifier, results );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/runtime/rule/RetractCommand.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,35 +1,46 @@
package org.drools.command.runtime.rule;
-import java.util.Collection;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
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.common.DisconnectedFactHandle;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.rule.FactHandle;
+ at XmlAccessorType(XmlAccessType.NONE)
public class RetractCommand
- implements
- GenericCommand<Object> {
+implements
+GenericCommand<Object> {
- private FactHandle handle;
+ private FactHandle handle;
- public RetractCommand(FactHandle handle) {
- this.handle = handle;
- }
+ public RetractCommand() {
+ }
- public Object execute(Context context) {
- StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
- ksession.retract( handle );
- return null;
- }
-
- public FactHandle getFactHandle() {
- return this.handle;
- }
+ public RetractCommand(FactHandle handle) {
+ this.handle = handle;
+ }
- public String toString() {
- return "session.retract( " + handle + " );";
- }
+ public Object execute(Context context) {
+ StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession();
+ ksession.retract( handle );
+ return null;
+ }
+
+ public FactHandle getFactHandle() {
+ return this.handle;
+ }
+
+ @XmlAttribute(name="factHandle", required=true)
+ public void setFactHandleFromString(String factHandleId) {
+ handle = new DisconnectedFactHandle(factHandleId);
+ }
+
+ public String toString() {
+ return "session.retract( " + handle + " );";
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultFactHandle.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -16,16 +16,23 @@
* limitations under the License.
*/
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
import org.drools.FactHandle;
-import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.RightTuple;
+import org.drools.runtime.rule.WorkingMemoryEntryPoint;
/**
* Implementation of <code>FactHandle</code>.
* @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(name="fact-handle")
+ at XmlAccessorType(XmlAccessType.NONE)
public class DefaultFactHandle
implements
InternalFactHandle {
@@ -134,6 +141,11 @@
return "0:" + this.id + ":" + getIdentityHashCode() + ":" + getObjectHashCode() + ":" + getRecency();
}
+ @XmlAttribute(name="external-form")
+ public String getExternalForm() {
+ return toExternalForm();
+ }
+
/**
* @see Object
*/
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DisconnectedFactHandle.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,19 +1,26 @@
package org.drools.common;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+
import org.drools.reteoo.LeftTuple;
import org.drools.reteoo.RightTuple;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
+ at XmlAccessorType(XmlAccessType.NONE)
public class DisconnectedFactHandle
implements
InternalFactHandle {
private int id;
- private int identityHashCode;
+ private int identityHashCode;
private int objectHashCode;
private long recency;
private Object object;
+ protected DisconnectedFactHandle() {}
+
public DisconnectedFactHandle(int id,
int identityHashCode,
int objectHashCode,
@@ -127,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/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/JavaDialectRuntimeData.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -432,12 +432,16 @@
this.store = store;
}
- public Class fastFindClass(final String name) {
- Class cls = findLoadedClass( name );
+ public Class<?> fastFindClass(final String name) {
+ Class<?> cls = findLoadedClass( name );
if ( cls == null ) {
final byte[] clazzBytes = this.store.read( convertClassToResourcePath( name ) );
if ( clazzBytes != null ) {
+ String pkgName = name.substring(0, name.lastIndexOf('.'));
+ if (getPackage(pkgName) == null) {
+ definePackage(pkgName, "", "", "", "", "", "", null);
+ }
cls = defineClass( name,
clazzBytes,
0,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchExecutionHelperProviderImpl.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -679,7 +679,7 @@
UnmarshallingContext context) {
String processId = reader.getAttribute( "processId" );
- Map<String, Object> params = new HashMap<String, Object>();
+ HashMap<String, Object> params = new HashMap<String, Object>();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
String identifier = reader.getAttribute( "identifier" );
@@ -1011,18 +1011,18 @@
}
reader.moveUp();
- Map<String, Integer> identifiers = new HashMap<String, Integer>();
+ HashMap<String, Integer> identifiers = new HashMap<String, Integer>();
for ( int i = 0; i < list.size(); i++ ) {
identifiers.put( list.get( i ),
i );
}
- List results = new ArrayList();
- List<List<FactHandle>> resultHandles = new ArrayList();
+ ArrayList<ArrayList<Object>> results = new ArrayList();
+ ArrayList<ArrayList<FactHandle>> resultHandles = new ArrayList();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
- List objects = new ArrayList();
- List<FactHandle> handles = new ArrayList();
+ ArrayList objects = new ArrayList();
+ ArrayList<FactHandle> handles = new ArrayList();
while ( reader.hasMoreChildren() ) {
reader.moveDown();
Object object = readItem( reader,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -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/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultImpl.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -5,11 +5,28 @@
import java.util.HashMap;
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.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
import org.drools.runtime.ExecutionResults;
+import org.drools.xml.jaxb.util.JaxbMapAdapter;
+ at XmlRootElement(name="execution-results")
+ at XmlAccessorType(XmlAccessType.NONE)
public class ExecutionResultImpl implements ExecutionResults, Serializable {
- Map<String, Object> results = new HashMap<String, Object>();
- Map<String, Object> facts = new HashMap<String, Object>();
+
+ private static final long serialVersionUID = 1L;
+
+ @XmlJavaTypeAdapter(JaxbMapAdapter.class)
+ @XmlElement(name="results")
+ HashMap<String, Object> results = new HashMap<String, Object>();
+
+ @XmlJavaTypeAdapter(JaxbMapAdapter.class)
+ @XmlElement(name="facts")
+ HashMap<String, Object> facts = new HashMap<String, Object>();
/* (non-Javadoc)
* @see org.drools.batchexecution.BatchExecutionResult#getIdentifiers()
@@ -33,7 +50,7 @@
return this.results;
}
- public void setResults(Map<String, Object> results) {
+ public void setResults(HashMap<String, Object> results) {
this.results = results;
}
@@ -41,7 +58,7 @@
return this.facts;
}
- public void setFactHandles(Map<String, Object> facts) {
+ public void setFactHandles(HashMap<String, Object> facts) {
this.facts = facts;
}
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,33 @@
+package org.drools.runtime.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.drools.xml.jaxb.util.JaxbMapAdapter;
+
+ at XmlJavaTypeAdapter(JaxbMapAdapter.class)
+public class ExecutionResultsMap {
+
+ Map<String, Object> results = new HashMap<String, Object>();
+
+ public Collection<String> keySet() {
+ return results.keySet();
+ }
+
+ public Object get(String identifier) {
+ return results.get(identifier);
+ }
+
+ public Map<String, Object> getResults() {
+ return this.results;
+ }
+
+ public void setResults(Map<String, Object> results) {
+ this.results = results;
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/ExecutionResultsMap.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -4,6 +4,7 @@
package org.drools.runtime.pipeline.impl;
import java.util.Collection;
+import java.util.List;
import org.drools.command.runtime.rule.InsertElementsCommand;
import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
@@ -15,7 +16,7 @@
public void receive(Object object,
PipelineContext context) {
- InsertElementsCommand cmd = new InsertElementsCommand( (Collection) object );
+ InsertElementsCommand cmd = new InsertElementsCommand( (List<Object>) object );
emit( cmd,
context );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -3,39 +3,52 @@
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;
+ at XmlAccessorType( XmlAccessType.FIELD )
public class FlatQueryResults
implements
QueryResults {
- private Map<String, Integer> identifiers;
- private List<List> results;
- private List<List<FactHandle>> factHandles;
+ 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() {
+
+ }
- public FlatQueryResults(Map<String, Integer> identifiers,
- List<List> results,
- List<List<FactHandle>> factHandles) {
+ public FlatQueryResults(HashMap<String, Integer> identifiers,
+ ArrayList<ArrayList<Object>> results,
+ ArrayList<ArrayList<FactHandle>> factHandles) {
this.identifiers = identifiers;
this.results = results;
this.factHandles = factHandles;
}
-
+
public FlatQueryResults(org.drools.QueryResults results) {
- Declaration[] declrs = (Declaration[]) results.getDeclarations().values().toArray( new Declaration[results.getDeclarations().size()] );
- this.results = new ArrayList<List>( results.size() );
- this.factHandles = new ArrayList<List<FactHandle>> ( results.size() );
+ Declaration[] declrs = results.getDeclarations().values().toArray( new Declaration[results.getDeclarations().size()] );
+ this.results = new ArrayList<ArrayList<Object>>( results.size() );
+ this.factHandles = new ArrayList<ArrayList<FactHandle>> ( results.size() );
int length = declrs.length;
for ( org.drools.QueryResult result : results ) {
- List<Object> row = new ArrayList<Object>();
- List<FactHandle> rowHandle = new ArrayList<FactHandle>();
+ ArrayList<Object> row = new ArrayList<Object>();
+ ArrayList<FactHandle> rowHandle = new ArrayList<FactHandle>();
for ( int i = 0; i < length; i++ ) {
Declaration declr = declrs[i];
@@ -55,8 +68,8 @@
}
- public String[] getIdentifiers() {
- return (String[]) identifiers.keySet().toArray( new String[identifiers.size()] );
+ public String[] getIdentifiers() {
+ return identifiers.keySet().toArray( new String[identifiers.size()] );
}
public int size() {
@@ -69,16 +82,14 @@
this.factHandles.iterator() );
}
- private class QueryResultsIterator
- implements
- Iterator {
- private Map<String, Integer> identifiers;
- private Iterator iterator;
- private Iterator<List<FactHandle>> handleIterator;
+ private class QueryResultsIterator implements Iterator<QueryResultsRow> {
+ private HashMap<String, Integer> identifiers;
+ private Iterator<ArrayList<Object>> iterator;
+ private Iterator<ArrayList<FactHandle>> handleIterator;
- public QueryResultsIterator(Map<String, Integer> identifiers,
- final Iterator iterator,
- final Iterator<List<FactHandle>> handleIterator) {
+ public QueryResultsIterator(HashMap<String, Integer> identifiers,
+ final Iterator<ArrayList<Object>> iterator,
+ final Iterator<ArrayList<FactHandle>> handleIterator) {
this.identifiers = identifiers;
this.iterator = iterator;
this.handleIterator = handleIterator;
@@ -88,10 +99,10 @@
return this.iterator.hasNext();
}
- public Object next() {
+ public QueryResultsRow next() {
return new FlatQueryResultRow( identifiers,
- (List) this.iterator.next(),
- (List<FactHandle>) this.handleIterator.next() );
+ this.iterator.next(),
+ this.handleIterator.next() );
}
public void remove() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -3,42 +3,54 @@
import java.util.Iterator;
import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+
import org.drools.rule.Declaration;
+import org.drools.runtime.rule.QueryResults;
import org.drools.runtime.rule.QueryResultsRow;
-import org.drools.runtime.rule.QueryResults;
+ at XmlAccessorType( XmlAccessType.FIELD )
public class NativeQueryResults
implements
QueryResults {
private org.drools.QueryResults results;
+
+ public NativeQueryResults() {
+ }
public NativeQueryResults(org.drools.QueryResults results) {
this.results = results;
}
- public String[] getIdentifiers() {
- return (String[]) this.results.getDeclarations().keySet().toArray( new String[this.results.getDeclarations().size()] );
+ public org.drools.QueryResults getResults() {
+ return results;
+ }
+
+ public String[] getIdentifiers() {
+ return this.getResults().getDeclarations().keySet().toArray( new String[this.getResults().getDeclarations().size()] );
}
+
public Map<String, Declaration> getDeclarations() {
- return this.results.getDeclarations();
+ return this.getResults().getDeclarations();
}
public int size() {
- return this.results.size();
+ return this.getResults().size();
}
public Iterator<QueryResultsRow> iterator() {
- return new QueryResultsIterator( this.results.iterator() );
+ return new QueryResultsIterator( this.getResults().iterator() );
}
private class QueryResultsIterator
implements
- Iterator {
- private Iterator iterator;
+ Iterator<QueryResultsRow> {
+ private Iterator<org.drools.QueryResult> iterator;
- public QueryResultsIterator(final Iterator iterator) {
+ public QueryResultsIterator(final Iterator<org.drools.QueryResult> iterator) {
this.iterator = iterator;
}
@@ -46,8 +58,8 @@
return this.iterator.hasNext();
}
- public Object next() {
- return new NativeQueryResultRow( (org.drools.QueryResult) this.iterator.next() );
+ public QueryResultsRow next() {
+ return new NativeQueryResultRow(this.iterator.next());
}
public void remove() {
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb)
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util)
Deleted: labs/jbossrules/trunk/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 2010-02-16 23:42:19 UTC (rev 31699)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,48 +0,0 @@
-package org.drools.xml.jaxb.util;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-
-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 Object[0];
- }
- Object[] ret = new Object[value.size()];
- int i = 0;
- for (ArrayList<Object> list : value) {
- int j = 0;
- Object[] sublist = new Object[list.size()];
- for (Object object : list) {
- sublist[j++] = object;
- }
- ret[i++] = sublist;
- }
- return ret;
- }
-
- @Override
- public ArrayList<ArrayList<Object>> unmarshal(Object[] value) throws Exception {
- ArrayList<ArrayList<Object>> ret = new ArrayList<ArrayList<Object>>();
- for( Object o : value ) {
- ArrayList<Object> subList;
- if (o instanceof Object[]) {
- Object[] list = (Object[]) o;
- subList = new ArrayList<Object>(list.length);
- for (Object obj : list) {
- subList.add(obj);
- }
- } else {
- subList = new ArrayList<Object>(Arrays.asList(new Object[] {o}));
- }
- ret.add(subList);
- }
- return ret;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbFlatQueryResultsAdapter.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,48 @@
+package org.drools.xml.jaxb.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+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 Object[0];
+ }
+ Object[] ret = new Object[value.size()];
+ int i = 0;
+ for (ArrayList<Object> list : value) {
+ int j = 0;
+ Object[] sublist = new Object[list.size()];
+ for (Object object : list) {
+ sublist[j++] = object;
+ }
+ ret[i++] = sublist;
+ }
+ return ret;
+ }
+
+ @Override
+ public ArrayList<ArrayList<Object>> unmarshal(Object[] value) throws Exception {
+ ArrayList<ArrayList<Object>> ret = new ArrayList<ArrayList<Object>>();
+ for( Object o : value ) {
+ ArrayList<Object> subList;
+ if (o instanceof Object[]) {
+ Object[] list = (Object[]) o;
+ subList = new ArrayList<Object>(list.length);
+ for (Object obj : list) {
+ subList.add(obj);
+ }
+ } else {
+ subList = new ArrayList<Object>(Arrays.asList(new Object[] {o}));
+ }
+ ret.add(subList);
+ }
+ return ret;
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java 2010-02-16 23:42:19 UTC (rev 31699)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,38 +0,0 @@
-package org.drools.xml.jaxb.util;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlElement;
-
-
- at XmlAccessorType(XmlAccessType.PROPERTY)
-public class JaxbListWrapper<T> extends ArrayList<T> {
-
- public JaxbListWrapper() {
- super();
- }
-
- public JaxbListWrapper(Collection<? extends T> c) {
- super(c);
- }
-
- public JaxbListWrapper(int initialCapacity) {
- super(initialCapacity);
- }
-
- @XmlElement
- public List<T> getElements() {
- return this;
- }
-
- public void setElements(List<T> elems) {
- clear();
- if (elems != null) {
- addAll(elems);
- }
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/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 (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbListWrapper.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,38 @@
+package org.drools.xml.jaxb.util;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+
+
+ at XmlAccessorType(XmlAccessType.PROPERTY)
+public class JaxbListWrapper<T> extends ArrayList<T> {
+
+ public JaxbListWrapper() {
+ super();
+ }
+
+ public JaxbListWrapper(Collection<? extends T> c) {
+ super(c);
+ }
+
+ public JaxbListWrapper(int initialCapacity) {
+ super(initialCapacity);
+ }
+
+ @XmlElement
+ public List<T> getElements() {
+ return this;
+ }
+
+ public void setElements(List<T> elems) {
+ clear();
+ if (elems != null) {
+ addAll(elems);
+ }
+ }
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java 2010-02-16 23:42:19 UTC (rev 31699)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,35 +0,0 @@
-package org.drools.xml.jaxb.util;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.annotation.adapters.XmlAdapter;
-
-
-public class JaxbMapAdapter extends XmlAdapter<JaxbPair[], Map<String,Object>> {
-
- @Override
- public JaxbPair[] marshal(Map<String, Object> value) throws Exception {
- if (value == null || value.isEmpty()) {
- return new JaxbPair[0];
- }
- List<JaxbPair> ret = new ArrayList<JaxbPair>(value.size());
- for (Map.Entry<String, Object> entry : value.entrySet()) {
- ret.add(new JaxbPair(entry.getKey(), entry.getValue()));
- }
-
- return ret.toArray(new JaxbPair[value.size()]);
- }
-
- @Override
- 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());
- }
- return r;
- }
-
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/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 (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbMapAdapter.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,35 @@
+package org.drools.xml.jaxb.util;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+
+public class JaxbMapAdapter extends XmlAdapter<JaxbPair[], Map<String,Object>> {
+
+ @Override
+ public JaxbPair[] marshal(Map<String, Object> value) throws Exception {
+ if (value == null || value.isEmpty()) {
+ return new JaxbPair[0];
+ }
+ List<JaxbPair> ret = new ArrayList<JaxbPair>(value.size());
+ for (Map.Entry<String, Object> entry : value.entrySet()) {
+ ret.add(new JaxbPair(entry.getKey(), entry.getValue()));
+ }
+
+ return ret.toArray(new JaxbPair[value.size()]);
+ }
+
+ @Override
+ 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());
+ }
+ return r;
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java 2010-02-16 23:42:19 UTC (rev 31699)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,76 +0,0 @@
-package org.drools.xml.jaxb.util;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElement;
-
- at XmlAccessorType(XmlAccessType.NONE)
-public class JaxbPair {
-
- @XmlAttribute(name = "key")
- private String key;
-
- @XmlElement
- private Object value;
-
- public JaxbPair() {
- }
-
- public JaxbPair(String key, Object value) {
- this.key = key;
- this.value = value;
- }
-
- public String getKey() {
- return key;
- }
-
- public void setKey(String key) {
- this.key = key;
- }
-
- public Object getValue() {
- return value;
- }
-
- public void setValue(Object value) {
- this.value = value;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((key == null) ? 0 : key.hashCode());
- result = prime * result + ((value == null) ? 0 : value.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- JaxbPair other = (JaxbPair) obj;
- if (key == null) {
- if (other.key != null)
- return false;
- } else if (!key.equals(other.key))
- return false;
- if (value == null) {
- if (other.value != null)
- return false;
- } else if (!value.equals(other.value))
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- return "JaxbPair [key=" + key + ", value=" + value + "]";
- }
-}
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/xml/jaxb/util/JaxbPair.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,76 @@
+package org.drools.xml.jaxb.util;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+ at XmlAccessorType(XmlAccessType.NONE)
+public class JaxbPair {
+
+ @XmlAttribute(name = "key")
+ private String key;
+
+ @XmlElement
+ private Object value;
+
+ public JaxbPair() {
+ }
+
+ public JaxbPair(String key, Object value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+
+ public void setValue(Object value) {
+ this.value = value;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((key == null) ? 0 : key.hashCode());
+ result = prime * result + ((value == null) ? 0 : value.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ JaxbPair other = (JaxbPair) obj;
+ if (key == null) {
+ if (other.key != null)
+ return false;
+ } else if (!key.equals(other.key))
+ return false;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "JaxbPair [key=" + key + ", value=" + value + "]";
+ }
+}
Modified: labs/jbossrules/trunk/drools-pipeline/drools-camel/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/pom.xml 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/pom.xml 2010-02-17 02:09:43 UTC (rev 31701)
@@ -52,8 +52,12 @@
<groupId>org.drools</groupId>
<artifactId>drools-transformer-xstream</artifactId>
</dependency>
-
<dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-transformer-jaxb</artifactId>
+ </dependency>
+
+ <dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-core</artifactId>
<version>${camel-version}</version>
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/java/org/drools/camel/component/DroolsJaxbDataFormat.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,133 @@
+package org.drools.camel.component;
+
+import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.StringReader;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.Source;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.spi.DataFormat;
+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.ExecutionResults;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.impl.CommandTranslator;
+import org.drools.runtime.pipeline.impl.ResultTranslator;
+import org.drools.runtime.pipeline.impl.ServiceManagerPipelineContextImpl;
+import org.drools.vsm.ServiceManager;
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+
+/**
+ *
+ * @author Lucas Amador
+ *
+ */
+public class DroolsJaxbDataFormat implements DataFormat {
+
+ private CommandTranslator cmdTranslator;
+ private ResultTranslator resTranslator;
+ private String charset;
+
+ public DroolsJaxbDataFormat() {
+ this.cmdTranslator = new CommandTranslator();
+ this.resTranslator = new ResultTranslator();
+ }
+
+ public void marshal(Exchange exchange, Object graph, OutputStream stream)
+ throws Exception {
+
+ Object body = exchange.getIn().getBody();
+
+ JAXBContext jaxbContext = (JAXBContext) exchange.getProperty("jaxb-context");
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+ String result = null;
+
+ if (body instanceof ExecutionResults) {
+ result = resTranslator.transform((ExecutionResultImpl) body, marshaller);
+ }
+
+ byte[] bytes;
+ if (charset != null) {
+ bytes = result.getBytes(charset);
+ } else {
+ bytes = result.getBytes();
+ }
+
+ stream.write(bytes);
+
+ }
+
+ public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
+
+ JAXBContext jaxbContext = (JAXBContext) exchange.getIn().getHeader("jaxb-context");
+
+ PipelineContext context = (PipelineContext) exchange.getProperty("drools-context");
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ Document d = exchange.getIn().getBody(Document.class);
+ Object body = exchange.getIn().getBody();
+ String name = d.getDocumentElement().getAttribute("lookup");
+ 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 = unmarshaller.unmarshal( (File) body );
+ } else if ( body instanceof InputStream ) {
+ payload = unmarshaller.unmarshal( (InputStream) body );
+ } else if ( body instanceof Reader ) {
+ payload = unmarshaller.unmarshal( (Reader) body );
+ } else if ( body instanceof Source ) {
+ payload = unmarshaller.unmarshal( (Source) body );
+ } else if ( body instanceof InputSource ) {
+ payload = unmarshaller.unmarshal( (InputSource) body );
+ } else if ( body instanceof Resource ) {
+ payload = unmarshaller.unmarshal( (( Resource ) body).getReader() );
+ } else if ( body instanceof String ) {
+ payload = 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" );
+ }
+
+ if ( payload instanceof JAXBElement ) {
+ payload = ((JAXBElement<?>) payload).getValue();
+ }
+
+ if (payload instanceof BatchExecutionCommand) {
+ payload = cmdTranslator.transform((BatchExecutionCommand) payload, unmarshaller);
+ }
+
+ exchange.setProperty("drools-context", context);
+ exchange.setProperty("jaxb-context", jaxbContext);
+
+ return payload;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/resources/META-INF/services/org/apache/camel/dataformat/drools-jaxb (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/main/resources/META-INF/services/org/apache/camel/dataformat/drools-jaxb)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/resources/META-INF/services/org/apache/camel/dataformat/drools-jaxb (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/main/resources/META-INF/services/org/apache/camel/dataformat/drools-jaxb 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+class=org.drools.camel.component.DroolsJaxbDataFormat
+
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxWrapperCollectionTest.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxWrapperCollectionTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxWrapperCollectionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxWrapperCollectionTest.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,368 @@
+package org.drools.camel.component;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+
+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.BatchExecutionCommand;
+import org.drools.command.runtime.GetGlobalCommand;
+import org.drools.command.runtime.SetGlobalCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.command.runtime.rule.InsertObjectCommand;
+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.rule.FactHandle;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
+/**
+ *
+ * @author Lucas Amador
+ * @author Pablo Nussembaum
+ */
+public class CamelEndpointWithJaxWrapperCollectionTest extends DroolsCamelTestSupport {
+
+ private String handle;
+ private JAXBContext jaxbContext;
+
+ public void testWorkingSetGlobalTestSessionSetAndGetGlobal() throws Exception {
+
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
+
+ SetGlobalCommand setGlobal = new SetGlobalCommand("list", new WrappedList());
+ setGlobal.setOut(true);
+
+ cmd.getCommands().add(setGlobal);
+ cmd.getCommands().add(new InsertObjectCommand(new Person("baunax")));
+ cmd.getCommands().add(new FireAllRulesCommand());
+ cmd.getCommands().add(new GetGlobalCommand("list"));
+
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ StringWriter xml = new StringWriter();
+ marshaller.marshal(cmd, xml);
+
+ System.out.println(xml.toString());
+
+ byte[] response = (byte[]) template.requestBodyAndHeader("direct:test-with-session", xml.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(response);
+ System.out.println("response:\n" + new String(response));
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ ExecutionResults res = (ExecutionResults) unmarshaller.unmarshal(new ByteArrayInputStream(response));
+ WrappedList resp = (WrappedList) res.getValue("list");
+ assertNotNull(resp);
+
+ assertEquals(resp.size(), 2);
+ assertEquals("baunax", resp.get(0).getName());
+ assertEquals("Hadrian", resp.get(1).getName());
+
+ }
+
+ @XmlRootElement(name="list")
+ @XmlAccessorType(XmlAccessType.FIELD)
+ public static class WrappedList {
+// @XmlElementWrapper(name="list")
+ @XmlElements({@XmlElement(name="org.drools.pipeline.camel.Person", type=Person.class)})
+ private List<Person> people = new ArrayList<Person>();
+
+ public void add(int index, Person element) {
+ people.add(index, element);
+ }
+
+ public boolean add(Person e) {
+ return people.add(e);
+ }
+
+ public boolean addAll(Collection<? extends Person> c) {
+ return people.addAll(c);
+ }
+
+ public boolean addAll(int index, Collection<? extends Person> c) {
+ return people.addAll(index, c);
+ }
+
+ public void clear() {
+ people.clear();
+ }
+
+ public boolean contains(Object o) {
+ return people.contains(o);
+ }
+
+ public boolean containsAll(Collection<?> c) {
+ return people.containsAll(c);
+ }
+
+ public boolean equals(Object o) {
+ return people.equals(o);
+ }
+
+ public Person get(int index) {
+ return people.get(index);
+ }
+
+ public int hashCode() {
+ return people.hashCode();
+ }
+
+ public int indexOf(Object o) {
+ return people.indexOf(o);
+ }
+
+ public boolean isEmpty() {
+ return people.isEmpty();
+ }
+
+ public Iterator<Person> iterator() {
+ return people.iterator();
+ }
+
+ public int lastIndexOf(Object o) {
+ return people.lastIndexOf(o);
+ }
+
+ public ListIterator<Person> listIterator() {
+ return people.listIterator();
+ }
+
+ public ListIterator<Person> listIterator(int index) {
+ return people.listIterator(index);
+ }
+
+ public Person remove(int index) {
+ return people.remove(index);
+ }
+
+ public boolean remove(Object o) {
+ return people.remove(o);
+ }
+
+ public boolean removeAll(Collection<?> c) {
+ return people.removeAll(c);
+ }
+
+ public boolean retainAll(Collection<?> c) {
+ return people.retainAll(c);
+ }
+
+ public Person set(int index, Person element) {
+ return people.set(index, element);
+ }
+
+ public int size() {
+ return people.size();
+ }
+
+ public List<Person> subList(int fromIndex, int toIndex) {
+ return people.subList(fromIndex, toIndex);
+ }
+
+ public Object[] toArray() {
+ return people.toArray();
+ }
+
+ public <T> T[] toArray(T[] a) {
+ return people.toArray(a);
+ }
+
+ }
+
+ @Override
+ protected void configureDroolsContext() {
+ Person me = new Person();
+ me.setName("Hadrian");
+
+ String rule = "";
+ rule += "package org.drools \n";
+ rule += "import org.drools.pipeline.camel.Person\n";
+ rule += "import org.drools.camel.component.CamelEndpointWithJaxWrapperCollectionTest.WrappedList\n";
+ rule += "global org.drools.camel.component.CamelEndpointWithJaxWrapperCollectionTest.WrappedList list\n";
+ rule += "rule rule1 \n";
+ rule += " when \n";
+ rule += " $p : Person() \n";
+ rule += " \n";
+ rule += " then \n";
+ rule += " System.out.println(\"executed\"); \n";
+ rule += " list.add($p); \n";
+ rule += "end\n";
+
+ StatefulKnowledgeSession ksession = registerKnowledgeRuntime("ksession1", rule);
+ InsertObjectCommand cmd = new InsertObjectCommand(me);
+ cmd.setOutIdentifier("camel-rider");
+ cmd.setReturnObject(false);
+ ExecutionResults results = ksession.execute(cmd);
+ handle = ((FactHandle)results.getFactHandle("camel-rider")).toExternalForm();
+ }
+
+ @Override
+ protected StatefulKnowledgeSession registerKnowledgeRuntime(String identifier, String rule) {
+ KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
+
+ Options xjcOpts = new Options();
+ xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+
+ String classNames[] = null;
+
+ try {
+ classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource("person.xsd", getClass()),
+ kbuilder,
+ xjcOpts,
+ "xsd" );
+ } catch (IOException e) {
+ LOG.error("Errors while adding xsd model. ", kbuilder.getErrors());
+ }
+
+ assertFalse( kbuilder.hasErrors() );
+
+ if (rule != null && rule.length() > 0) {
+ kbuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL);
+
+ if (kbuilder.hasErrors()) {
+ LOG.info("Errors while adding rule. ", kbuilder.getErrors());
+ }
+ }
+
+ String process1 = "";
+ process1 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ process1 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ process1 += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ process1 += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ process1 += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ process1 += "\n";
+ process1 += " <header>\n";
+ process1 += " <imports>\n";
+ process1 += " <import name=\"org.drools.model.Person\" />\n";
+ process1 += " </imports>\n";
+ process1 += " <globals>\n";
+ process1 += " <global identifier=\"list\" type=\"org.drools.camel.component.CamelEndpointWithJaxWrapperCollectionTest.WrappedList\" />\n";
+ process1 += " </globals>\n";
+ process1 += " <variables>\n";
+ process1 += " <variable name=\"person\" >\n";
+ process1 += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"Person\" />\n";
+ process1 += " </variable>\n";
+ process1 += " </variables>\n";
+ process1 += " </header>\n";
+ process1 += "\n";
+ process1 += " <nodes>\n";
+ process1 += " <start id=\"1\" name=\"Start\" />\n";
+ process1 += " <actionNode id=\"2\" name=\"MyActionNode\" >\n";
+ process1 += " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
+// process1 += "list.add(person.name);\n";
+ process1 += "</action>\n";
+ process1 += " </actionNode>\n";
+ process1 += " <end id=\"3\" name=\"End\" />\n";
+ process1 += " </nodes>\n";
+ process1 += "\n";
+ process1 += " <connections>\n";
+ process1 += " <connection from=\"1\" to=\"2\" />\n";
+ process1 += " <connection from=\"2\" to=\"3\" />\n";
+ process1 += " </connections>\n" + "\n";
+ process1 += "</process>";
+
+ kbuilder.add(ResourceFactory.newByteArrayResource(process1.getBytes()), ResourceType.DRF);
+
+ if (kbuilder.hasErrors()) {
+ LOG.info("Errors while adding process rule 1. ", kbuilder.getErrors());
+ }
+
+ assertFalse(kbuilder.hasErrors());
+
+ String process2 = "";
+ process2 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ process2 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ process2 += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ process2 += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ process2 += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+ process2 += "\n";
+ process2 += " <header>\n";
+ process2 += " <variables>\n";
+ process2 += " <variable name=\"MyVar\" >\n";
+ process2 += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ process2 += " <value>SomeText</value>\n";
+ process2 += " </variable>\n";
+ process2 += " </variables>\n";
+ process2 += " </header>\n";
+ process2 += "\n";
+ process2 += " <nodes>\n";
+ process2 += " <start id=\"1\" name=\"Start\" />\n";
+ process2 += " <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
+ process2 += " <eventFilters>\n";
+ process2 += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+ process2 += " </eventFilters>\n";
+ process2 += " </eventNode>\n";
+ process2 += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+ process2 += " <end id=\"4\" name=\"End\" />\n";
+ process2 += " </nodes>\n";
+ process2 += "\n";
+ process2 += " <connections>\n";
+ process2 += " <connection from=\"1\" to=\"3\" />\n";
+ process2 += " <connection from=\"2\" to=\"3\" />\n";
+ process2 += " <connection from=\"3\" to=\"4\" />\n";
+ process2 += " </connections>\n";
+ process2 += "\n";
+ process2 += "</process>";
+
+ kbuilder.add(ResourceFactory.newByteArrayResource(process2.getBytes()), ResourceType.DRF);
+
+ if (kbuilder.hasErrors()) {
+ LOG.info("Errors while adding process rule 2. ", kbuilder.getErrors());
+ }
+
+ assertFalse(kbuilder.hasErrors());
+
+ KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ // Add object model to classes array
+ List<String> allClasses = new ArrayList<String>(Arrays.asList(classNames));
+ allClasses.add(Person.class.getName());
+ allClasses.add(WrappedList.class.getName());
+
+ try {
+ jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClasses.toArray(new String[allClasses.size()]), kbase );
+ } catch (Exception e) {
+ LOG.info("Errors while creating JAXB Context. ", e);
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+ serviceManager.register(identifier, session);
+ return session;
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("direct:test-with-session").to("drools:sm/ksession1?dataFormat=drools-jaxb");
+ from("direct:test-no-session").to("drools:sm?dataFormat=drools-jaxb");
+ }
+ };
+ }
+}
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbTest.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,457 @@
+package org.drools.camel.component;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+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;
+import javax.xml.bind.Marshaller;
+
+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.BatchExecutionCommand;
+import org.drools.command.runtime.process.StartProcessCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.command.runtime.rule.GetObjectCommand;
+import org.drools.command.runtime.rule.InsertElementsCommand;
+import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.command.runtime.rule.QueryCommand;
+import org.drools.common.DisconnectedFactHandle;
+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.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;
+
+/**
+ *
+ * @author Lucas Amador
+ *
+ */
+public class CamelEndpointWithJaxbTest extends DroolsCamelTestSupport {
+
+ private String handle;
+ private JAXBContext jaxbContext;
+
+ public void testSessionInsert() throws Exception {
+
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
+ cmd.getCommands().add(new InsertObjectCommand(new Person("lucaz", 25), "person1"));
+ cmd.getCommands().add(new InsertObjectCommand(new Person("hadrian", 25), "person2"));
+ cmd.getCommands().add(new InsertObjectCommand(new Person("baunax", 21), "person3"));
+ cmd.getCommands().add(new FireAllRulesCommand());
+
+ StringWriter xmlReq = new StringWriter();
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ marshaller.marshal(cmd, xmlReq);
+
+ System.out.println(xmlReq.toString());
+
+ byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(xmlResp);
+ System.out.println(new String(xmlResp));
+
+ ExecutionResults resp = (ExecutionResults) jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
+
+ assertEquals(3, resp.getIdentifiers().size());
+ assertNotNull(resp.getValue("person1"));
+ assertNotNull(resp.getValue("person2"));
+ assertNotNull(resp.getValue("person3"));
+
+ assertNotNull(resp.getFactHandle("person1"));
+ assertNotNull(resp.getFactHandle("person2"));
+ assertNotNull(resp.getFactHandle("person3"));
+ }
+
+ public void testSessionGetObject() throws Exception {
+
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
+ cmd.getCommands().add(new GetObjectCommand(new DisconnectedFactHandle(handle), "hadrian"));
+
+ StringWriter xmlReq = new StringWriter();
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ marshaller.marshal(cmd, xmlReq);
+
+ byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
+
+ ExecutionResults resp = (ExecutionResults) jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
+
+ assertEquals(1, resp.getIdentifiers().size());
+
+ assertNotNull(resp.getValue("hadrian"));
+ }
+
+ public void testSessionModify() throws Exception {
+ String cmd = "";
+ cmd += "<batch-execution lookup='ksession1'>\n";
+ cmd += " <modify factHandle='" + handle + "'>\n";
+ cmd += " <set accessor='name' value='\"salaboy\"' />\n";
+ cmd += " </modify>\n";
+ cmd += "</batch-execution>\n";
+
+ String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+ String 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 += " <facts/>\n";
+ expectedXml += "</execution-results>\n";
+
+ assertEquals(expectedXml, outXml);
+
+ cmd = "<batch-execution lookup='ksession1'>\n";
+ cmd += " <get-object out-identifier='rider' factHandle='" + handle + "'/>\n";
+ cmd += "</batch-execution>\n";
+
+ byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", cmd.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(xmlResp);
+ System.out.println(new String(xmlResp));
+
+ 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 testSessionRetractObject() throws Exception {
+
+ String cmd = "";
+ cmd += "<batch-execution lookup='ksession1'>\n";
+ cmd += " <retract factHandle='" + handle + "' />\n";
+ cmd += "</batch-execution>";
+
+ String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+ System.out.println(outXml);
+
+ assertNotNull(outXml);
+
+ }
+
+ public void testInsertElements() throws Exception {
+
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
+ InsertElementsCommand elems = new InsertElementsCommand("elems");
+ elems.getObjects().add(new Person("lucaz", 25));
+ elems.getObjects().add(new Person("hadrian", 25));
+ elems.getObjects().add(new Person("baunax", 21));
+
+ cmd.getCommands().add(elems);
+ cmd.getCommands().add(new FireAllRulesCommand());
+
+ StringWriter xmlReq = new StringWriter();
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ marshaller.marshal(cmd, xmlReq);
+
+ System.out.println(xmlReq.toString());
+
+ byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(xmlResp);
+ System.out.println(new String(xmlResp));
+
+ ExecutionResults resp = (ExecutionResults) jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
+
+ assertEquals(1, resp.getIdentifiers().size());
+ List<Person> list = (List<Person>) resp.getValue("elems");
+ assertEquals("lucaz", list.get(0).getName());
+ assertEquals("hadrian", list.get(1).getName());
+ assertEquals("baunax", list.get(2).getName());
+
+ }
+
+ public void testQuery() throws Exception {
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
+ cmd.getCommands().add(new InsertObjectCommand(new Person("lucaz")));
+ cmd.getCommands().add(new InsertObjectCommand(new Person("hadrian")));
+ cmd.getCommands().add(new InsertObjectCommand(new Person("baunax", 43)));
+ cmd.getCommands().add(new InsertObjectCommand(new Person("baunax", 21)));
+ cmd.getCommands().add(new QueryCommand("persons", "persons", null));
+ cmd.getCommands().add(new QueryCommand("person", "personWithName", new String[] {"baunax"} ));
+
+ StringWriter xmlReq = new StringWriter();
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ marshaller.marshal(cmd, xmlReq);
+
+ System.out.println(xmlReq.toString());
+
+ byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
+ 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(2, personQuery.size());
+ FlatQueryResults personsQuery = (FlatQueryResults) resp.getValue("persons");
+ assertEquals(5, personsQuery.size());
+
+ Iterator<QueryResultsRow> iterator = personQuery.iterator();
+ QueryResultsRow row = iterator.next();
+ Person person = (Person) row.get("$p");
+
+ assertEquals("baunax", person.getName());
+ }
+
+ public void testProcess() throws Exception {
+
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
+
+ StartProcessCommand start = new StartProcessCommand("org.drools.actions");
+ start.putParameter("person", new Person("lucaz", 25));
+ start.putParameter("person2", new Person("hadrian", 25));
+ start.putParameter("person3", new Person("baunax", 21));
+
+ cmd.getCommands().add(start);
+
+ StringWriter xmlReq = new StringWriter();
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ marshaller.marshal(cmd, xmlReq);
+
+ System.out.println(xmlReq.toString());
+
+ byte[] xmlResp = (byte[])template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(xmlResp);
+ System.out.println(new String(xmlResp));
+ Object resp = jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
+ }
+
+
+ public void testProcessInstanceSignalEvent() throws Exception {
+
+ String processId = "org.drools.event";
+
+ String cmd = "";
+ cmd += "<batch-execution lookup='ksession1'>\n";
+ cmd += " <start-process processId='" + processId + "'>\n";
+ cmd += " </start-process>\n";
+ cmd += "</batch-execution>\n";
+
+ System.out.println(cmd);
+
+ String outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+ assertNotNull(outXml);
+
+ int processInstanceId = 1;
+
+ cmd = "";
+ cmd += "<batch-execution lookup='ksession1'>\n";
+ cmd += " <signal-event process-instance-id= '" + processInstanceId + "' event-type='MyEvent'>";
+ cmd += " <string>MyValue</string>";
+ cmd += " </signal-event>";
+ cmd += "</batch-execution>\n";
+
+ outXml = new String((byte[])template.requestBodyAndHeader("direct:test-with-session", cmd, "jaxb-context", jaxbContext));
+
+ System.out.println(outXml);
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("direct:test-with-session").to("drools:sm/ksession1?dataFormat=drools-jaxb");
+ from("direct:test-no-session").to("drools:sm?dataFormat=drools-jaxb");
+ }
+ };
+ }
+
+ @Override
+ protected void configureDroolsContext() {
+ Person me = new Person();
+ me.setName("Hadrian");
+
+ String rule = "";
+ rule += "package org.drools \n";
+ rule += "import org.drools.pipeline.camel.Person \n";
+ rule += "global java.util.List list \n";
+ rule += "query persons \n";
+ rule += " $p : Person(name != null) \n";
+ rule += "end \n";
+ rule += "query personWithName(String param)\n";
+ rule += " $p : Person(name == param) \n";
+ rule += "end \n";
+ rule += "rule rule1 \n";
+ rule += " when \n";
+ rule += " $p : Person() \n";
+ rule += " \n";
+ rule += " then \n";
+ rule += " System.out.println(\"executed\"); \n";
+ rule += "end\n";
+
+ StatefulKnowledgeSession ksession = registerKnowledgeRuntime("ksession1", rule);
+ InsertObjectCommand cmd = new InsertObjectCommand(me);
+ cmd.setOutIdentifier("camel-rider");
+ cmd.setReturnObject(false);
+ ExecutionResults results = ksession.execute(cmd);
+ handle = ((FactHandle)results.getFactHandle("camel-rider")).toExternalForm();
+ }
+
+ @Override
+ protected StatefulKnowledgeSession registerKnowledgeRuntime(String identifier, String rule) {
+ KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
+
+ Options xjcOpts = new Options();
+ xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+
+ String classNames[] = null;
+
+ try {
+ classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource("person.xsd", getClass()),
+ kbuilder,
+ xjcOpts,
+ "xsd" );
+ } catch (IOException e) {
+ LOG.error("Errors while adding xsd model. ", kbuilder.getErrors());
+ }
+
+ assertFalse( kbuilder.hasErrors() );
+
+ if (rule != null && rule.length() > 0) {
+ kbuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL);
+
+ if (kbuilder.hasErrors()) {
+ LOG.info("Errors while adding rule. ", kbuilder.getErrors());
+ }
+ }
+
+ String process1 = "";
+ process1 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ process1 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ process1 += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ process1 += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ process1 += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ process1 += "\n";
+ process1 += " <header>\n";
+ process1 += " <imports>\n";
+ process1 += " <import name=\"org.drools.model.Person\" />\n";
+ process1 += " </imports>\n";
+ process1 += " <globals>\n";
+ process1 += " <global identifier=\"list\" type=\"java.util.List\" />\n";
+ process1 += " </globals>\n";
+ process1 += " <variables>\n";
+ process1 += " <variable name=\"person\" >\n";
+ process1 += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"Person\" />\n";
+ process1 += " </variable>\n";
+ process1 += " </variables>\n";
+ process1 += " </header>\n";
+ process1 += "\n";
+ process1 += " <nodes>\n";
+ process1 += " <start id=\"1\" name=\"Start\" />\n";
+ process1 += " <actionNode id=\"2\" name=\"MyActionNode\" >\n";
+ process1 += " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
+// process1 += "list.add(person.name);\n";
+ process1 += "</action>\n";
+ process1 += " </actionNode>\n";
+ process1 += " <end id=\"3\" name=\"End\" />\n";
+ process1 += " </nodes>\n";
+ process1 += "\n";
+ process1 += " <connections>\n";
+ process1 += " <connection from=\"1\" to=\"2\" />\n";
+ process1 += " <connection from=\"2\" to=\"3\" />\n";
+ process1 += " </connections>\n" + "\n";
+ process1 += "</process>";
+
+ kbuilder.add(ResourceFactory.newByteArrayResource(process1.getBytes()), ResourceType.DRF);
+
+ if (kbuilder.hasErrors()) {
+ System.out.println("Errors while adding process rule 1. " + kbuilder.getErrors());
+ }
+
+ assertFalse(kbuilder.hasErrors());
+
+ String process2 = "";
+ process2 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ process2 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ process2 += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ process2 += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ process2 += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+ process2 += "\n";
+ process2 += " <header>\n";
+ process2 += " <variables>\n";
+ process2 += " <variable name=\"MyVar\" >\n";
+ process2 += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ process2 += " <value>SomeText</value>\n";
+ process2 += " </variable>\n";
+ process2 += " </variables>\n";
+ process2 += " </header>\n";
+ process2 += "\n";
+ process2 += " <nodes>\n";
+ process2 += " <start id=\"1\" name=\"Start\" />\n";
+ process2 += " <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
+ process2 += " <eventFilters>\n";
+ process2 += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+ process2 += " </eventFilters>\n";
+ process2 += " </eventNode>\n";
+ process2 += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+ process2 += " <end id=\"4\" name=\"End\" />\n";
+ process2 += " </nodes>\n";
+ process2 += "\n";
+ process2 += " <connections>\n";
+ process2 += " <connection from=\"1\" to=\"3\" />\n";
+ process2 += " <connection from=\"2\" to=\"3\" />\n";
+ process2 += " <connection from=\"3\" to=\"4\" />\n";
+ process2 += " </connections>\n";
+ process2 += "\n";
+ process2 += "</process>";
+
+ kbuilder.add(ResourceFactory.newByteArrayResource(process2.getBytes()), ResourceType.DRF);
+
+ if (kbuilder.hasErrors()) {
+ LOG.info("Errors while adding process rule 2. ", kbuilder.getErrors());
+ }
+
+ assertFalse(kbuilder.hasErrors());
+
+ KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ // Add object model to classes array
+ List<String> allClasses = new ArrayList<String>(Arrays.asList(classNames));
+ allClasses.add("org.drools.pipeline.camel.Person");
+
+ try {
+ jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClasses.toArray(new String[allClasses.size()]), kbase );
+ } catch (Exception e) {
+ LOG.info("Errors while creating JAXB Context. ", e);
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+ serviceManager.register(identifier, session);
+ return session;
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithJaxbXSDModelTest.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,289 @@
+package org.drools.camel.component;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.lang.reflect.Method;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+
+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.BatchExecutionCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.common.InternalRuleBase;
+import org.drools.impl.KnowledgeBaseImpl;
+import org.drools.io.ResourceFactory;
+import org.drools.rule.DroolsCompositeClassLoader;
+import org.drools.runtime.ExecutionResults;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+import com.sun.tools.xjc.Language;
+import com.sun.tools.xjc.Options;
+
+/**
+ *
+ * @author Lucas Amador
+ * @author Pablo Nussembaum
+ *
+ */
+public class CamelEndpointWithJaxbXSDModelTest extends DroolsCamelTestSupport {
+
+ private JAXBContext jaxbContext;
+ private DroolsCompositeClassLoader classLoader;
+
+ public void testSessionInsert() throws Exception {
+ Class<?> personClass = classLoader.loadClass("org.drools.model.Person");
+ assertNotNull(personClass.getPackage());
+ Class<?> addressClass = classLoader.loadClass("org.drools.model.AddressType");
+ assertNotNull(addressClass.getPackage());
+ Object baunax = personClass.newInstance();
+ Object lucaz = personClass.newInstance();
+
+ Method setName = personClass.getMethod("setName", String.class);
+ setName.invoke(baunax, "baunax");
+ setName.invoke(lucaz, "lucaz");
+
+ Method setAddress = personClass.getMethod("setAddress", addressClass);
+ Method setStreet = addressClass.getMethod("setStreet", String.class);
+ Method setPostalCode = addressClass.getMethod("setPostalCode", BigInteger.class);
+ Object lucazAddress = addressClass.newInstance();
+ setStreet.invoke(lucazAddress, "Unknow 342");
+ setPostalCode.invoke(lucazAddress, new BigInteger("1234"));
+
+ Object baunaxAddress = addressClass.newInstance();
+ setStreet.invoke(baunaxAddress, "New Street 123");
+ setPostalCode.invoke(baunaxAddress, new BigInteger("5678"));
+
+ setAddress.invoke(lucaz, lucazAddress);
+ setAddress.invoke(baunax, baunaxAddress);
+
+ BatchExecutionCommand cmd = new BatchExecutionCommand();
+ cmd.setLookup("ksession1");
+ cmd.getCommands().add(new InsertObjectCommand(lucaz, "lucaz"));
+ cmd.getCommands().add(new InsertObjectCommand(baunax, "baunax"));
+ cmd.getCommands().add(new FireAllRulesCommand());
+
+ StringWriter xmlReq = new StringWriter();
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.setProperty("jaxb.formatted.output", true);
+ marshaller.marshal(cmd, xmlReq);
+
+ System.out.println(xmlReq.toString());
+
+ String xmlCmd = "";
+ xmlCmd += "<batch-execution lookup='ksession1'>\n";
+ xmlCmd += " <insert out-identifier='lucaz'>\n";
+ xmlCmd += " <object>\n";
+ xmlCmd += " <Person xmlns='http://drools.org/model' >\n";
+ xmlCmd += " <name>lucaz</name>\n";
+ xmlCmd += " <age>25</age>\n";
+ xmlCmd += " </Person>\n";
+ xmlCmd += " </object>\n";
+ xmlCmd += " </insert>\n";
+ xmlCmd += " <insert out-identifier='baunax'>\n";
+ xmlCmd += " <object>\n";
+ xmlCmd += " <Person xmlns='http://drools.org/model' >\n";
+ xmlCmd += " <name>baunax</name>\n";
+ xmlCmd += " <age>21</age>\n";
+ xmlCmd += " </Person>\n";
+ xmlCmd += " </object>\n";
+ xmlCmd += " </insert>\n";
+ xmlCmd += " <fire-all-rules />";
+ xmlCmd += "</batch-execution>\n";
+
+ byte[] xmlResp = (byte[]) template.requestBodyAndHeader("direct:test-with-session", xmlReq.toString(), "jaxb-context", jaxbContext);
+ assertNotNull(xmlResp);
+ System.out.println(new String(xmlResp));
+
+ ExecutionResults resp = (ExecutionResults) jaxbContext.createUnmarshaller().unmarshal(new ByteArrayInputStream(xmlResp));
+ assertNotNull(resp);
+
+ assertEquals(2, resp.getIdentifiers().size());
+ assertNotNull(resp.getValue("lucaz"));
+ assertNotNull(resp.getValue("baunax"));
+
+ assertNotNull(resp.getFactHandle("lucaz"));
+ assertNotNull(resp.getFactHandle("baunax"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ public void configure() throws Exception {
+ from("direct:test-with-session").to("drools:sm/ksession1?dataFormat=drools-jaxb");
+ from("direct:test-no-session").to("drools:sm?dataFormat=drools-jaxb");
+ }
+ };
+ }
+
+ @Override
+ protected void configureDroolsContext() {
+ String rule = "";
+ rule += "package org.drools \n";
+ rule += "import org.drools.model.Person \n";
+ rule += "global java.util.List list \n";
+ rule += "query persons \n";
+ rule += " $p : Person(name != null) \n";
+ rule += "end \n";
+ rule += "query personWithName(String param)\n";
+ rule += " $p : Person(name == param) \n";
+ rule += "end \n";
+ rule += "rule rule1 \n";
+ rule += " when \n";
+ rule += " $p : Person() \n";
+ rule += " \n";
+ rule += " then \n";
+ rule += " System.out.println(\"executed\"); \n";
+ rule += "end\n";
+
+ registerKnowledgeRuntime("ksession1", rule);
+ }
+
+ @Override
+ protected StatefulKnowledgeSession registerKnowledgeRuntime(String identifier, String rule) {
+ KnowledgeBuilder kbuilder = serviceManager.getKnowledgeBuilderFactoryService().newKnowledgeBuilder();
+
+ Options xjcOpts = new Options();
+ xjcOpts.setSchemaLanguage( Language.XMLSCHEMA );
+
+ String classNames[] = null;
+
+ try {
+ classNames = KnowledgeBuilderHelper.addXsdModel( ResourceFactory.newClassPathResource("personComplex.xsd", getClass()),
+ kbuilder,
+ xjcOpts,
+ "xsd" );
+ } catch (IOException e) {
+ LOG.error("Errors while adding xsd model. ", kbuilder.getErrors());
+ }
+
+ assertFalse( kbuilder.hasErrors() );
+
+ if (rule != null && rule.length() > 0) {
+ kbuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL);
+
+ if (kbuilder.hasErrors()) {
+ LOG.info("Errors while adding rule. ", kbuilder.getErrors());
+ }
+ }
+
+ String process1 = "";
+ process1 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ process1 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ process1 += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ process1 += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ process1 += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ process1 += "\n";
+ process1 += " <header>\n";
+ process1 += " <imports>\n";
+ process1 += " <import name=\"org.drools.model.Person\" />\n";
+ process1 += " </imports>\n";
+ process1 += " <globals>\n";
+ process1 += " <global identifier=\"list\" type=\"java.util.List\" />\n";
+ process1 += " </globals>\n";
+ process1 += " <variables>\n";
+ process1 += " <variable name=\"person\" >\n";
+ process1 += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"Person\" />\n";
+ process1 += " </variable>\n";
+ process1 += " </variables>\n";
+ process1 += " </header>\n";
+ process1 += "\n";
+ process1 += " <nodes>\n";
+ process1 += " <start id=\"1\" name=\"Start\" />\n";
+ process1 += " <actionNode id=\"2\" name=\"MyActionNode\" >\n";
+ process1 += " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
+ process1 += "list.add(person.name);\n";
+ process1 += "</action>\n";
+ process1 += " </actionNode>\n";
+ process1 += " <end id=\"3\" name=\"End\" />\n";
+ process1 += " </nodes>\n";
+ process1 += "\n";
+ process1 += " <connections>\n";
+ process1 += " <connection from=\"1\" to=\"2\" />\n";
+ process1 += " <connection from=\"2\" to=\"3\" />\n";
+ process1 += " </connections>\n" + "\n";
+ process1 += "</process>";
+
+ kbuilder.add(ResourceFactory.newByteArrayResource(process1.getBytes()), ResourceType.DRF);
+
+ if (kbuilder.hasErrors()) {
+ System.out.println("Errors while adding process rule 1. " + kbuilder.getErrors());
+ }
+
+ assertFalse(kbuilder.hasErrors());
+
+ String process2 = "";
+ process2 += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ process2 += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ process2 += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ process2 += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ process2 += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+ process2 += "\n";
+ process2 += " <header>\n";
+ process2 += " <variables>\n";
+ process2 += " <variable name=\"MyVar\" >\n";
+ process2 += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ process2 += " <value>SomeText</value>\n";
+ process2 += " </variable>\n";
+ process2 += " </variables>\n";
+ process2 += " </header>\n";
+ process2 += "\n";
+ process2 += " <nodes>\n";
+ process2 += " <start id=\"1\" name=\"Start\" />\n";
+ process2 += " <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
+ process2 += " <eventFilters>\n";
+ process2 += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+ process2 += " </eventFilters>\n";
+ process2 += " </eventNode>\n";
+ process2 += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+ process2 += " <end id=\"4\" name=\"End\" />\n";
+ process2 += " </nodes>\n";
+ process2 += "\n";
+ process2 += " <connections>\n";
+ process2 += " <connection from=\"1\" to=\"3\" />\n";
+ process2 += " <connection from=\"2\" to=\"3\" />\n";
+ process2 += " <connection from=\"3\" to=\"4\" />\n";
+ process2 += " </connections>\n";
+ process2 += "\n";
+ process2 += "</process>";
+
+ kbuilder.add(ResourceFactory.newByteArrayResource(process2.getBytes()), ResourceType.DRF);
+
+ if (kbuilder.hasErrors()) {
+ LOG.info("Errors while adding process rule 2. ", kbuilder.getErrors());
+ }
+
+ assertFalse(kbuilder.hasErrors());
+
+ KnowledgeBase kbase = serviceManager.getKnowledgeBaseFactoryService().newKnowledgeBase();
+
+ classLoader = ((InternalRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader();
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ // Add object model to classes array
+ List<String> allClasses = new ArrayList<String>(Arrays.asList(classNames));
+
+ try {
+ jaxbContext = KnowledgeBuilderHelper.newJAXBContext( allClasses.toArray(new String[allClasses.size()]), kbase );
+ } catch (Exception e) {
+ LOG.info("Errors while creating JAXB Context. ", e);
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+ serviceManager.register(identifier, session);
+ return session;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithMarshallersTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithMarshallersTest.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/CamelEndpointWithMarshallersTest.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -16,10 +16,7 @@
package org.drools.camel.component;
import org.apache.camel.builder.RouteBuilder;
-import org.drools.command.CommandFactory;
-import org.drools.command.runtime.rule.GetObjectCommand;
import org.drools.command.runtime.rule.InsertObjectCommand;
-import org.drools.common.DisconnectedFactHandle;
import org.drools.common.InternalFactHandle;
import org.drools.pipeline.camel.Person;
import org.drools.runtime.ExecutionResults;
Modified: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/DroolsCamelTestSupport.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/DroolsCamelTestSupport.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/camel/component/DroolsCamelTestSupport.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -38,8 +38,8 @@
import org.slf4j.LoggerFactory;
public abstract class DroolsCamelTestSupport extends ContextTestSupport {
- private static final Logger LOG = LoggerFactory.getLogger(DroolsCamelTestSupport.class);
- private ServiceManager serviceManager;
+ protected static final Logger LOG = LoggerFactory.getLogger(DroolsCamelTestSupport.class);
+ protected ServiceManager serviceManager;
public void setServiceManager(ServiceManager serviceManager) {
this.serviceManager = serviceManager;
Modified: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/CamelPipelineTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/CamelPipelineTest.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/CamelPipelineTest.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -140,10 +140,6 @@
assertXMLEqual(expectedXml,
outXml);
-
-
-
-
}
public void testCamelPipelineWithVSMAndSpring() throws Exception {
Modified: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/java/org/drools/pipeline/camel/Person.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -5,25 +5,50 @@
package org.drools.pipeline.camel;
+import javax.xml.bind.annotation.XmlRootElement;
+
/**
- *
+ *
* @author salaboy
*/
+ at XmlRootElement
public class Person {
- private String name;
- //private Address address;
+ private String name;
+ private Integer age;
- public Person() {
- }
+ public Person() {
+ }
+ public Person(String name) {
+ super();
+ this.name = name;
+ }
- public String getName() {
- return name;
- }
+ public Person(String name, int age) {
+ super();
+ this.name = name;
+ this.age = age;
+ }
- public void setName(String name) {
- this.name = name;
- }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public void setAge(Integer age) {
+ this.age = age;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ @Override
+ public String toString() {
+ return "Person [age=" + age + ", name=" + name + "]";
+ }
+
}
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org)
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools)
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel)
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component)
Deleted: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd
===================================================================
--- labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd 2010-02-16 23:42:19 UTC (rev 31699)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,24 +0,0 @@
-<xsd:schema
- xmlns:person="http://drools.org/model"
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://drools.org/model"
- elementFormDefault="qualified"
->
-
- <xsd:complexType name="person">
- <xsd:sequence>
- <xsd:element name="name" type="xsd:string" />
- <xsd:element name="age" type="xsd:integer" />
- <xsd:element name="address" type="person:addressType" minOccurs="1" maxOccurs="1" />
- </xsd:sequence>
- </xsd:complexType>
-
-
- <xsd:complexType name="addressType">
- <xsd:sequence>
- <xsd:element name="street" type="xsd:string" />
- <xsd:element name="postalCode" type="xsd:integer" />
- </xsd:sequence>
- </xsd:complexType>
-
-</xsd:schema>
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-camel/src/test/resources/org/drools/camel/component/person.xsd 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,24 @@
+<xsd:schema
+ xmlns:person="http://drools.org/model"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://drools.org/model"
+ elementFormDefault="qualified"
+>
+
+ <xsd:complexType name="person">
+ <xsd:sequence>
+ <xsd:element name="name" type="xsd:string" />
+ <xsd:element name="age" type="xsd:integer" />
+ <xsd:element name="address" type="person:addressType" minOccurs="1" maxOccurs="1" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+ <xsd:complexType name="addressType">
+ <xsd:sequence>
+ <xsd:element name="street" type="xsd:string" />
+ <xsd:element name="postalCode" type="xsd:integer" />
+ </xsd:sequence>
+ </xsd:complexType>
+
+</xsd:schema>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/pom.xml 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/pom.xml 2010-02-17 02:09:43 UTC (rev 31701)
@@ -31,6 +31,16 @@
<artifactId>jaxb-xjc</artifactId>
<version>2.0.3</version>
</dependency>
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>2.7.1</version>
+ </dependency>
</dependencies>
<repositories>
<repository>
Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/CommandTranslator.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,228 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.drools.command.Setter;
+import org.drools.command.impl.GenericCommand;
+import org.drools.command.runtime.BatchExecutionCommand;
+import org.drools.command.runtime.SetGlobalCommand;
+import org.drools.command.runtime.process.SignalEventCommand;
+import org.drools.command.runtime.process.StartProcessCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.command.runtime.rule.InsertElementsCommand;
+import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.command.runtime.rule.ModifyCommand;
+import org.drools.command.runtime.rule.QueryCommand;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ *
+ * @author Wolfgang Laun
+ */
+public class CommandTranslator {
+ private Map<Class<?>, CommandTransformer> class2trans;
+
+ public CommandTranslator(){
+ class2trans = new HashMap<Class<?>, CommandTransformer>();
+ class2trans.put(BatchExecutionCommand.class, new BatchExecutionTransformer());
+ class2trans.put(InsertElementsCommand.class, new InsertElementsTransformer());
+ class2trans.put(InsertObjectCommand.class, new InsertObjectTransformer());
+ class2trans.put(ModifyCommand.class, new ModifyObjectTransformer());
+ class2trans.put(QueryCommand.class, new QueryTransformer());
+ class2trans.put(SetGlobalCommand.class, new SetGlobalTransformer());
+ class2trans.put(SignalEventCommand.class, new SignalEventTransformer());
+ class2trans.put(StartProcessCommand.class, new StartProcessTransformer());
+ class2trans.put(FireAllRulesCommand.class, new FireAllRulesTransformer());
+ }
+
+ /**
+ * Transforms a list of XML elements representing Drools command objects
+ * to a list of <tt>Command<?></tt> objects. Application objects
+ * are unmarshalled, using an <tt>Unmarshaller</tt> object derived from
+ * the object's class.
+ *
+ * @param xmlCmds the list of XML elements representing Drools command objects
+ * @return
+ * @return a list of <tt>Command<?></tt> objects
+ */
+ public GenericCommand<?> transform(BatchExecutionCommand batchExecution, Unmarshaller unmarshaller) {
+ CommandTransformer commandTransformer = class2trans.get(batchExecution.getClass());
+ return commandTransformer.transform(this, batchExecution, unmarshaller);
+ }
+
+ protected CommandTransformer getCommandTransformer(Class<?> clazz) {
+ return class2trans.get(clazz);
+ }
+
+ protected Object makeObject(Node node, Unmarshaller unmarshaller) {
+ Object obj = null;
+ try {
+ obj = unmarshaller.unmarshal(node);
+ } catch (JAXBException e) {
+ // TODO: remove this
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+ return obj;
+ }
+}
+
+
+/**
+ * Abstract base class for all command transformers.
+ */
+abstract class CommandTransformer {
+ abstract GenericCommand<?> transform(CommandTranslator ct, Object o , Unmarshaller unmarshaller);
+}
+
+/**
+ * Class for transforming a BatchExecution command.
+ */
+class BatchExecutionTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator cmdTrans, Object o , Unmarshaller unmarshaller) {
+ BatchExecutionCommand be = (BatchExecutionCommand)o;
+ List<GenericCommand<?>> xmlCmds = be.getCommands();
+ for (ListIterator<GenericCommand<?>> i = xmlCmds.listIterator(); i.hasNext();) {
+ GenericCommand<?> cmd = i.next();
+ CommandTransformer ct = cmdTrans.getCommandTransformer(cmd.getClass());
+ if (ct != null) {
+ i.set(ct.transform(cmdTrans, cmd, unmarshaller));
+ }
+ }
+ return be;
+ }
+}
+
+/**
+ * Class for transforming an InsertElements command.
+ */
+class InsertElementsTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+ InsertElementsCommand insertElementsCmd = (InsertElementsCommand)o;
+ List<Object> objectsList = new ArrayList<Object>(insertElementsCmd.getObjects().size());
+
+ for (Object obj : insertElementsCmd.getObjects()) {
+ if (obj instanceof Node) {
+ objectsList.add(ct.makeObject((Node) obj, unmarshaller));
+ } else {
+ objectsList.add(obj);
+ }
+ }
+
+ insertElementsCmd.setObjects(objectsList);
+ return insertElementsCmd;
+ }
+}
+
+/**
+ * Class for transforming a InsertObject command.
+ */
+class InsertObjectTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+ InsertObjectCommand io = (InsertObjectCommand)o;
+ Object object = io.getObject();
+ if (object instanceof Element) {
+ Element el = (Element)object;
+ Object obj = ct.makeObject(el , unmarshaller);
+ io.setObject(obj);
+ }
+ return io;
+ }
+}
+
+/**
+ * Class for transforming a ModifyObject command.
+ */
+class ModifyObjectTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+ ModifyCommand mo = (ModifyCommand)o;
+ List<Setter> setters = mo.getSetters();
+ List<Setter> convertedSetters = new ArrayList<Setter>();
+ for (Object node : setters) {
+ Setter setter = (Setter) ct.makeObject((Node)node, unmarshaller);
+ convertedSetters.add(setter);
+ }
+ mo.setSetters(convertedSetters);
+ return mo;
+ }
+}
+
+/**
+ * Class for transforming a FireAllRules command.
+ */
+class FireAllRulesTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+ return (FireAllRulesCommand)o;
+ }
+}
+
+/**
+ * Class for transforming a Query command.
+ */
+class QueryTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+ QueryCommand q = (QueryCommand)o;
+ for (ListIterator<Object> i = q.getArguments().listIterator(); i.hasNext();) {
+ Object object = i.next();
+ if (object instanceof Element) {
+ i.set(ct.makeObject((Element) object, unmarshaller));
+ }
+ }
+ return q;
+ }
+}
+
+/**
+ * Class for transforming a SetGlobal command.
+ */
+class SetGlobalTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+ SetGlobalCommand sg = (SetGlobalCommand)o;
+ Object object = sg.getObject();
+ if (object instanceof Element) {
+ Element el = (Element)object;
+ Object obj = ct.makeObject(el , unmarshaller);
+ sg.setObject(obj);
+ }
+ return sg;
+ }
+}
+
+/**
+ * Class for transforming a SignalEvent command.
+ */
+class SignalEventTransformer extends CommandTransformer {
+ public GenericCommand<?> transform(CommandTranslator ct, Object o, Unmarshaller unmarshaller) {
+ SignalEventCommand se = (SignalEventCommand)o;
+ Object ev = se.getEvent();
+ if (ev != null) {
+ Object obj = ct.makeObject((Element)ev , unmarshaller);
+ se.setEvent(obj);
+ }
+ return se;
+ }
+}
+
+/**
+ * Class for transforming a StartProcess command.
+ */
+class StartProcessTransformer extends CommandTransformer {
+ public GenericCommand<?> transform( CommandTranslator ct, Object o, Unmarshaller unmarshaller ) {
+ StartProcessCommand sp = (StartProcessCommand)o;
+ for (Map.Entry<String, Object> entry: sp.getParameters().entrySet()) {
+ Object obj = entry.getValue();
+ if (obj instanceof Element) {
+ entry.setValue(ct.makeObject((Element) obj, unmarshaller));
+ }
+ }
+ return sp;
+ }
+}
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/DroolsJaxbHelperProviderImpl.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -24,21 +24,33 @@
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.Map.Entry;
import javax.xml.bind.JAXBContext;
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;
+import org.drools.command.runtime.BatchExecutionCommand;
+import org.drools.command.runtime.GetGlobalCommand;
+import org.drools.command.runtime.SetGlobalCommand;
+import org.drools.command.runtime.process.AbortWorkItemCommand;
+import org.drools.command.runtime.process.SignalEventCommand;
+import org.drools.command.runtime.process.StartProcessCommand;
+import org.drools.command.runtime.rule.FireAllRulesCommand;
+import org.drools.command.runtime.rule.InsertElementsCommand;
+import org.drools.command.runtime.rule.InsertObjectCommand;
+import org.drools.command.runtime.rule.ModifyCommand;
+import org.drools.command.runtime.rule.QueryCommand;
+import org.drools.command.runtime.rule.RetractCommand;
+import org.drools.command.runtime.rule.ModifyCommand.SetterImpl;
+import org.drools.common.DefaultFactHandle;
+import org.drools.common.DisconnectedFactHandle;
import org.drools.common.InternalRuleBase;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageRegistry;
@@ -46,6 +58,10 @@
import org.drools.io.Resource;
import org.drools.lang.descr.PackageDescr;
import org.drools.rule.builder.dialect.java.JavaDialect;
+import org.drools.runtime.impl.BatchExecutionImpl;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.rule.impl.FlatQueryResults;
+import org.drools.xml.jaxb.util.JaxbListWrapper;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;
@@ -57,11 +73,32 @@
import com.sun.tools.xjc.ModelLoader;
import com.sun.tools.xjc.Options;
import com.sun.tools.xjc.model.Model;
-import com.sun.tools.xjc.outline.Outline;
public class DroolsJaxbHelperProviderImpl
implements
DroolsJaxbHelperProvider {
+
+ private static final String[] JAXB_ANNOTATED_CMD = {BatchExecutionCommand.class.getName(),
+ SetGlobalCommand.class.getName(),
+ GetGlobalCommand.class.getName(),
+ FireAllRulesCommand.class.getName(),
+ InsertElementsCommand.class.getName(),
+ InsertObjectCommand.class.getName(),
+ ModifyCommand.class.getName(),
+ SetterImpl.class.getName(),
+ QueryCommand.class.getName(),
+ RetractCommand.class.getName(),
+ AbortWorkItemCommand.class.getName(),
+ SignalEventCommand.class.getName(),
+ StartProcessCommand.class.getName(),
+ BatchExecutionImpl.class.getName(),
+ ExecutionResultImpl.class.getName() ,
+ DefaultFactHandle.class.getName(),
+ JaxbListWrapper.class.getName(),
+ DisconnectedFactHandle.class.getName(),
+ FlatQueryResults.class.getName()
+ };
+
public String[] addXsdModel(Resource resource,
KnowledgeBuilder kbuilder,
Options xjcOpts,
@@ -86,17 +123,18 @@
new JCodeModel(),
errorReceiver );
- final Outline outline = model.generateCode( xjcOpts,
- errorReceiver );
+ model.generateCode( xjcOpts, errorReceiver );
MapVfsCodeWriter codeWriter = new MapVfsCodeWriter();
model.codeModel.build( xjcOpts.createCodeWriter( codeWriter ) );
- Set<JavaDialect> dialects = new HashSet<JavaDialect>();
List<String> classNames = new ArrayList<String>();
for ( Entry<String, byte[]> entry : codeWriter.getMap().entrySet() ) {
String name = entry.getKey();
-
+ //if (name.endsWith("ObjectFactory.java")) {
+ // continue;
+ //}
+
String pkgName = null;
int dotPos = name.lastIndexOf( '.' );
pkgName = name.substring( 0,
@@ -119,7 +157,6 @@
}
JavaDialect dialect = (JavaDialect) pkgReg.getDialectCompiletimeRegistry().getDialect( "java" );
- dialects.add( dialect );
dialect.addSrc( convertToResource( entry.getKey() ),
entry.getValue() );
}
@@ -127,7 +164,7 @@
pkgBuilder.compileAll();
pkgBuilder.updateResults();
- return (String[]) classNames.toArray( new String[classNames.size()] );
+ return classNames.toArray( new String[classNames.size()] );
}
public JAXBContext newJAXBContext(String[] classNames,
@@ -140,21 +177,24 @@
public JAXBContext newJAXBContext(String[] classNames,
Map<String, ? > properties,
KnowledgeBase kbase) throws JAXBException {
- ClassLoader classLoader = ((InternalRuleBase) ((KnowledgeBaseImpl) kbase).getRuleBase()).getRootClassLoader();
-
- Class[] classes = new Class[classNames.length];
- int i = 0;
- try {
- for ( i = 0; i < classNames.length; i++ ) {
- classes[i] = classLoader.loadClass( classNames[i] );
- }
- } catch ( ClassNotFoundException e ) {
- throw new JAXBException( "Unable to resolve class '" + classNames[i] + "'",
- e );
- }
-
- return JAXBContext.newInstance( classes,
- properties );
+ ClassLoader classLoader = ((InternalRuleBase) ((KnowledgeBaseImpl) kbase)
+ .getRuleBase()).getRootClassLoader();
+ int i = 0;
+ try {
+ Class<?>[] classes = new Class[classNames.length
+ + JAXB_ANNOTATED_CMD.length];
+
+ for (i = 0; i < classNames.length; i++) {
+ classes[i] = classLoader.loadClass(classNames[i]);
+ }
+ int j = 0;
+ for (i = classNames.length; i < classes.length; i++, j++) {
+ classes[i] = classLoader.loadClass(JAXB_ANNOTATED_CMD[j]);
+ }
+ return JAXBContext.newInstance(classes, properties);
+ } catch (ClassNotFoundException e) {
+ throw new JAXBException("Unable to resolve class '" + classNames[i] + "'", e);
+ }
}
private static String convertToResource(String string) {
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbFromXmlTransformer.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,63 +1,61 @@
-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.JAXBElement;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.Source;
-
-import org.drools.io.Resource;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.pipeline.impl.BaseEmitter;
-import org.drools.runtime.pipeline.impl.BaseStage;
-import org.xml.sax.InputSource;
-
-public class JaxbFromXmlTransformer extends BaseEmitter
- implements
- Transformer {
- private Unmarshaller unmarshaller;
-
- public JaxbFromXmlTransformer(Unmarshaller unmarshaller) {
- this.unmarshaller = unmarshaller;
- }
-
- public void receive(Object object,
- PipelineContext context) {
- Object result = null;
- try {
- if ( object instanceof File ) {
- result = this.unmarshaller.unmarshal( (File) object );
- } else if ( object instanceof InputStream ) {
- result = this.unmarshaller.unmarshal( (InputStream) object );
- } else if ( object instanceof Reader ) {
- result = this.unmarshaller.unmarshal( (Reader) object );
- } else if ( object instanceof Source ) {
- result = this.unmarshaller.unmarshal( (Source) object );
- } else if ( object instanceof InputSource ) {
- result = this.unmarshaller.unmarshal( (InputSource) object );
- } else if ( object instanceof Resource ) {
- result = this.unmarshaller.unmarshal( (( Resource ) object).getReader() );
- } else if ( object instanceof String ) {
- result = 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 ( result instanceof JAXBElement ) {
- result = ((JAXBElement) object).getValue();
- }
-
- emit( result,
- context );
- }
-
-}
+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.JAXBElement;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.Source;
+
+import org.drools.io.Resource;
+import org.drools.runtime.pipeline.PipelineContext;
+import org.drools.runtime.pipeline.Transformer;
+import org.xml.sax.InputSource;
+
+public class JaxbFromXmlTransformer extends BaseEmitter
+ implements
+ Transformer {
+ private Unmarshaller unmarshaller;
+
+ public JaxbFromXmlTransformer(Unmarshaller unmarshaller) {
+ this.unmarshaller = unmarshaller;
+ }
+
+ public void receive(Object object,
+ PipelineContext context) {
+ Object result = null;
+ try {
+ if ( object instanceof File ) {
+ result = this.unmarshaller.unmarshal( (File) object );
+ } else if ( object instanceof!
InputStream ) {
+ result = this.unmarshaller.unmarshal( (InputStream) object );
+ } else if ( object instanceof Reader ) {
+ result = this.unmarshaller.unmarshal( (Reader) object );
+ } else if ( object instanceof Source ) {
+ result = this.unmarshaller.unmarshal( (Source) object );
+ } else if ( object instanceof InputSource ) {
+ result = this.unmarshaller.unmarshal( (InputSource) object );
+ } else if ( object instanceof Resource ) {
+ result = this.unmarshaller.unmarshal( (( Resource ) object).getReader() );
+ } else if ( object instanceof String ) {
+ result = 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( t!
his,
+
object,
+ e );
+ }
+
+ if ( result instanceof JAXBElement ) {
+ result = ((JAXBElement) object).getValue();
+ }
+
+ emit( result,
+ context );
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/JaxbToXmlTransformer.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -1,22 +1,11 @@
package org.drools.runtime.pipeline.impl;
-import java.io.File;
-import java.io.InputStream;
-import java.io.Reader;
import java.io.StringWriter;
-import javax.xml.bind.JAXBElement;
import javax.xml.bind.Marshaller;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.Source;
-import org.drools.io.Resource;
-import org.drools.runtime.pipeline.JaxbTransformerProvider;
import org.drools.runtime.pipeline.PipelineContext;
import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.pipeline.impl.BaseEmitter;
-import org.drools.runtime.pipeline.impl.BaseStage;
-import org.xml.sax.InputSource;
public class JaxbToXmlTransformer extends BaseEmitter
implements
Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ListMapping.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,86 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+public class ListMapping {
+
+ public static void main(String[] args) throws Exception {
+ Object asd = new Person("lucaz");
+ Field fieldName = asd.getClass().getDeclaredField("name");
+ fieldName.setAccessible(true);
+ String fieldValue = (String) fieldName.get(asd);
+ System.out.println("fieldValue = " + fieldValue);
+
+// Object object = fieldName.get(asd);
+// System.out.println(object);
+
+// Course course = new Course();
+//
+// course.addPerson(new Person("lucas"));
+// course.addPerson(new Person("jose"));
+//
+// Class<?>[] classes = {Person.class, Course.class};
+//
+// JAXBContext jaxb = JAXBContext.newInstance(classes);
+//
+// Marshaller xmlConverter = jaxb.createMarshaller();
+// xmlConverter.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+// xmlConverter.marshal(course, System.out);
+
+ }
+
+}
+
+ at XmlRootElement
+
+class Course {
+
+// @XmlElementWrapper(name="persons")
+ @XmlElement(name="person")
+ private List<Person> persons = new ArrayList<Person>();
+
+ public Course() {
+ }
+
+ public void addPerson(Person person) {
+ persons.add(person);
+ }
+
+ public List<Person> getPersons() {
+ return this.persons;
+ }
+
+}
+
+ at XmlRootElement(name="person")
+class Person {
+
+ @XmlAttribute
+ private String name;
+
+ public Person() {
+ }
+
+ public Person(String name) {
+ this.setName(name);
+ }
+
+ @Override
+ public String toString() {
+ return getName();
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
Copied: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java (from rev 31699, labs/jbossrules/branches/camel_jaxb_marshaller2-lucaz/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java)
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/src/main/java/org/drools/runtime/pipeline/impl/ResultTranslator.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -0,0 +1,96 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.transform.TransformerException;
+
+import org.drools.FactHandle;
+import org.drools.base.ClassObjectType;
+import org.drools.base.DroolsQuery;
+import org.drools.common.DisconnectedFactHandle;
+import org.drools.rule.Declaration;
+import org.drools.runtime.impl.ExecutionResultImpl;
+import org.drools.runtime.rule.QueryResultsRow;
+import org.drools.runtime.rule.impl.FlatQueryResults;
+import org.drools.runtime.rule.impl.NativeQueryResults;
+import org.drools.spi.ObjectType;
+import org.drools.xml.jaxb.util.JaxbListWrapper;
+
+public class ResultTranslator {
+
+ private Object convert(Object obj) {
+ if (obj instanceof FactHandle && !(obj instanceof DisconnectedFactHandle)) {
+ return new DisconnectedFactHandle(((FactHandle) obj).toExternalForm());
+ }
+
+ if (obj instanceof NativeQueryResults) {
+ NativeQueryResults nativeQueryResults = (NativeQueryResults) obj;
+ List<Declaration> declrs = new ArrayList<Declaration>();
+ HashMap<String, Integer> identifiers = new HashMap<String, Integer>( );
+
+ for ( String identifier : nativeQueryResults.getIdentifiers() ) {
+ // we don't want to marshall the query parameters
+ Declaration declr = nativeQueryResults.getDeclarations().get( identifier );
+ ObjectType objectType = declr.getPattern().getObjectType();
+ if ( objectType instanceof ClassObjectType &&
+ ((ClassObjectType) objectType).getClassType() == DroolsQuery.class ) {
+ continue;
+ }
+ declrs.add(declr);
+ identifiers.put(identifier, declrs.size() - 1);
+ }
+
+ ArrayList<ArrayList<Object>> results = new ArrayList<ArrayList<Object>>( nativeQueryResults.size() );
+ ArrayList<ArrayList<org.drools.runtime.rule.FactHandle>> factHandles = new ArrayList<ArrayList<org.drools.runtime.rule.FactHandle>> ( nativeQueryResults.size() );
+ for (QueryResultsRow row : nativeQueryResults) {
+ ArrayList<Object> objectList = new ArrayList<Object>();
+ ArrayList<org.drools.runtime.rule.FactHandle> factHandleList = new ArrayList<org.drools.runtime.rule.FactHandle>();
+ for (int i = 0; i < declrs.size(); i++) {
+ objectList.add(convert(row.get(declrs.get(i).getIdentifier())));
+ factHandleList.add(new DisconnectedFactHandle(row.getFactHandle(declrs.get(i).getIdentifier()).toExternalForm()));
+ }
+ factHandles.add(factHandleList);
+ results.add(objectList);
+ }
+
+ return new FlatQueryResults(identifiers, results, factHandles);
+ }
+
+ Class<? extends Object> vClass = obj.getClass();
+ 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(convert(item));
+ }
+ return wrapper;
+ }
+ return obj;
+ }
+
+ public String transform( ExecutionResultImpl executionResult, Marshaller marshaller ) throws JAXBException, TransformerException{
+
+ //TODO {bauna} remove this try
+ try {
+ StringWriter writer = new StringWriter();
+ for (Map.Entry<String, Object> entry : executionResult.getFactHandles().entrySet()) {
+ entry.setValue(convert(entry.getValue()));
+ }
+
+ for (Map.Entry<String, Object> entry : executionResult.getResults().entrySet()) {
+ entry.setValue(convert(entry.getValue()));
+ }
+ marshaller.marshal(executionResult, writer);
+ return writer.toString();
+ } catch (Throwable e) {
+ e.printStackTrace();
+ throw new RuntimeException(e);
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java 2010-02-17 01:37:27 UTC (rev 31700)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/main/java/org/drools/runtime/pipeline/impl/XStreamFromXmlTransformer.java 2010-02-17 02:09:43 UTC (rev 31701)
@@ -3,14 +3,10 @@
import java.io.InputStream;
import java.io.Reader;
-import javax.xml.transform.Source;
-
import org.drools.io.Resource;
import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.SmooksTransformerProvider;
import org.drools.runtime.pipeline.Transformer;
-import org.drools.runtime.pipeline.XStreamTransformerProvider;
-import org.drools.runtime.pipeline.impl.BaseEmitter;
+
import com.thoughtworks.xstream.XStream;
public class XStreamFromXmlTransformer extends BaseEmitter
More information about the jboss-svn-commits
mailing list