[jboss-svn-commits] JBL Code SVN: r34243 - in labs/jbossrules/trunk: drools-camel/src/test/java/org/drools/camel/component and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 28 01:26:11 EDT 2010
Author: mark.proctor at jboss.com
Date: 2010-07-28 01:26:10 -0400 (Wed, 28 Jul 2010)
New Revision: 34243
Modified:
labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java
labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java
labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
Log:
JBRULES-2347 Camel
-refactoring xstream usage to use shared implementation in core
-moved xstreambatchexecutiontest to camel and updated it to use camel pipeline
Modified: labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java 2010-07-28 04:39:28 UTC (rev 34242)
+++ labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamJson.java 2010-07-28 05:26:10 UTC (rev 34243)
@@ -17,58 +17,36 @@
package org.drools.camel.component;
import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
import org.apache.camel.model.dataformat.XStreamDataFormat;
-import org.drools.command.Command;
-import org.drools.command.CommandFactory;
-import org.drools.command.Setter;
-import org.drools.command.impl.GenericCommand;
-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.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.GetObjectsCommand;
-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.common.DefaultFactHandle;
-import org.drools.runtime.ExecutionResults;
import org.drools.runtime.help.impl.CommandsObjectContainer;
import org.drools.runtime.help.impl.ObjectsObjectContainer;
import org.drools.runtime.help.impl.ParameterContainer;
import org.drools.runtime.help.impl.RowItemContainer;
import org.drools.runtime.help.impl.WorkItemResultsContainer;
-import org.drools.runtime.impl.ExecutionResultImpl;
-import org.drools.runtime.rule.FactHandle;
-import org.drools.runtime.rule.QueryResults;
-import org.drools.runtime.rule.QueryResultsRow;
-import org.drools.runtime.rule.impl.FlatQueryResults;
+import org.drools.runtime.help.impl.XStreamJSon.CommandsContainerConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonAbortWorkItemConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonBatchExecutionCommandConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonBatchExecutionResultConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonCompleteWorkItemConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonFactHandleConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonFireAllRulesConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonGetGlobalConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonGetObjectConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonGetObjectsConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonInsertConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonInsertElementsConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonModifyConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonQueryConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonQueryResultsConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonRetractConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonSetGlobalConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonSignalEventConverter;
+import org.drools.runtime.help.impl.XStreamJSon.JSonStartProcessConvert;
+import org.drools.runtime.help.impl.XStreamJSon.RowItemConverter;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.converters.Converter;
-import com.thoughtworks.xstream.converters.MarshallingContext;
-import com.thoughtworks.xstream.converters.UnmarshallingContext;
-import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter;
-import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
-import com.thoughtworks.xstream.core.util.HierarchicalStreams;
-import com.thoughtworks.xstream.io.ExtendedHierarchicalStreamWriterHelper;
-import com.thoughtworks.xstream.io.HierarchicalStreamReader;
-import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
-import com.thoughtworks.xstream.mapper.Mapper;
-
public class XStreamJson {
public static XStreamDataFormat newJSonMarshaller(XStreamDataFormat xstreamDataFormat) {
xstreamDataFormat.setDriver( "json" );
@@ -119,1266 +97,4 @@
return xstreamDataFormat;
}
- public static class CommandsContainerConverter extends AbstractCollectionConverter {
- public CommandsContainerConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public boolean canConvert(Class type) {
- return CommandsObjectContainer.class.isAssignableFrom( type );
-
- }
-
- @Override
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- CommandsObjectContainer container = (CommandsObjectContainer) object;
-
- writeItem( container.getContainedObject(),
- context,
- writer );
- }
-
- @Override
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- throw new UnsupportedOperationException();
- }
-
- }
-
- public static class RowItemConverter extends AbstractCollectionConverter {
- public RowItemConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public boolean canConvert(Class type) {
- return RowItemContainer.class.isAssignableFrom( type );
-
- }
-
- @Override
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- RowItemContainer container = (RowItemContainer) object;
-
- writer.startNode( "external-form" );
- writer.setValue( container.getFactHandle().toExternalForm() );
- writer.endNode();
-
- writer.startNode( "object" );
- writeItem( container.getObject(),
- context,
- writer );
- writer.endNode();
- }
-
- @Override
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String externalForm = null;
- Object object = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "external-form".equals( nodeName ) ) {
- externalForm = reader.getValue();
- } else if ( "object".equals( nodeName ) ) {
- reader.moveDown();
- object = readItem( reader,
- context,
- null );
- reader.moveUp();
- }
- reader.moveUp();
- }
- return new RowItemContainer( new DefaultFactHandle( externalForm ),
- object );
- }
-
- }
-
- // public static class ModifyEntriesContainerConverter extends AbstractCollectionConverter {
- // public ModifyEntriesContainerConverter(Mapper mapper) {
- // super( mapper );
- // }
- //
- // public boolean canConvert(Class type) {
- // return ModifyEntriesContainer.class.isAssignableFrom( type );
- //
- // }
- //
- // @Override
- // public void marshal(Object object,
- // HierarchicalStreamWriter writer,
- // MarshallingContext context) {
- // ModifyEntriesContainer container = (ModifyEntriesContainer) object;
- //
- // writer.startNode( "accessor" );
- // writer.setValue( container.getAccessor() );
- // writer.endNode();
- //
- // writer.startNode( "value" );
- // writer.setValue( container.getValue() );
- // writer.endNode();
- // }
- //
- // @Override
- // public Object unmarshal(HierarchicalStreamReader reader,
- // UnmarshallingContext context) {
- // throw new UnsupportedOperationException();
- // }
- //
- // }
-
- public static class JSonBatchExecutionCommandConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonBatchExecutionCommandConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- BatchExecutionCommand cmds = (BatchExecutionCommand) object;
- if ( cmds.getLookup() != null ) {
- writer.startNode( "lookup" );
- writer.setValue( cmds.getLookup() );
- writer.endNode();
- }
- List<GenericCommand< ? >> list = cmds.getCommands();
-
- for ( GenericCommand cmd : list ) {
- writeItem( new CommandsObjectContainer( cmd ),
- context,
- writer );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- List<GenericCommand< ? >> list = new ArrayList<GenericCommand< ? >>();
- String lookup = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- if ( "commands".equals( reader.getNodeName() ) ) {
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- GenericCommand cmd = (GenericCommand) readItem( reader,
- context,
- null );
- list.add( cmd );
- reader.moveUp();
- }
- } else if ( "lookup".equals( reader.getNodeName() ) ) {
- lookup = reader.getValue();
- } else {
- throw new IllegalArgumentException( "batch-execution does not support the child element name=''" + reader.getNodeName() + "' value=" + reader.getValue() + "'" );
- }
- reader.moveUp();
- }
- return new BatchExecutionCommand( list,
- lookup );
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( BatchExecutionCommand.class );
- }
- }
-
- public static class JSonInsertConverter extends BaseConverter
- implements
- Converter {
-
- public JSonInsertConverter(XStream xstream) {
- super( xstream );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- InsertObjectCommand cmd = (InsertObjectCommand) object;
- if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
-
- writer.startNode( "return-object" );
- writer.setValue( Boolean.toString( cmd.isReturnObject() ) );
- writer.endNode();
- }
- writeValue( writer,
- context,
- "object",
- cmd.getObject() );
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- InsertObjectCommand cmd = new InsertObjectCommand();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "out-identifier".equals( nodeName ) ) {
- cmd.setOutIdentifier( reader.getValue() );
- } else if ( "return-object".equals( nodeName ) ) {
- cmd.setReturnObject( Boolean.parseBoolean( reader.getValue() ) );
- } else if ( "object".equals( nodeName ) ) {
- cmd.setObject( readValue( reader,
- context,
- cmd.getObject(),
- "object" ) );
- }
- reader.moveUp();
-
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( InsertObjectCommand.class );
- }
-
- }
-
- public static class JSonFactHandleConverter extends AbstractCollectionConverter
- implements
- Converter {
- public JSonFactHandleConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public boolean canConvert(Class aClass) {
- return FactHandle.class.isAssignableFrom( aClass );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext marshallingContext) {
- FactHandle fh = (FactHandle) object;
- writer.startNode( "external-form" );
- writer.setValue( fh.toExternalForm() );
- writer.endNode();
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext unmarshallingContext) {
- reader.moveDown();
- DefaultFactHandle factHandle = new DefaultFactHandle( reader.getValue() );
- reader.moveUp();
- return factHandle;
- }
- }
-
- public static class JSonFireAllRulesConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonFireAllRulesConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- FireAllRulesCommand cmd = (FireAllRulesCommand) object;
-
- if ( cmd.getMax() != -1 ) {
- writer.startNode( "max" );
- writer.setValue( Integer.toString( cmd.getMax() ) );
- writer.endNode();
- }
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String max = null;
- String outIdentifier = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- if ( "max".equals( reader.getNodeName() ) ) {
- max = reader.getValue();
- } else if ( "out-identifier".equals( reader.getNodeName() ) ) {
- outIdentifier = reader.getValue();
- } else {
- throw new IllegalArgumentException( "fire-all-rules does not support the child element name=''" + reader.getNodeName() + "' value=" + reader.getValue() + "'" );
- }
- reader.moveUp();
- }
-
- FireAllRulesCommand cmd = null;
-
- if ( max != null ) {
- cmd = new FireAllRulesCommand( Integer.parseInt( max ) );
- } else {
- cmd = new FireAllRulesCommand();
- }
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier(outIdentifier);
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( FireAllRulesCommand.class );
- }
- }
-
- public static class JSonGetObjectConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonGetObjectConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetObjectCommand cmd = (GetObjectCommand) object;
- writer.startNode( "fact-handle" );
- writer.setValue( cmd.getFactHandle().toExternalForm() );
- writer.endNode();
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- FactHandle factHandle = null;
- String outIdentifier = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String name = reader.getNodeName();
- if ( "fact-handle".equals( name ) ) {
- factHandle = new DefaultFactHandle( reader.getValue() );
- } else if ( "out-identifier".equals( "out-identifier" ) ) {
- outIdentifier = reader.getValue();
- }
- reader.moveUp();
- }
-
- GetObjectCommand cmd = new GetObjectCommand( factHandle );
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier( outIdentifier );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetObjectCommand.class );
- }
- }
-
- public static class JSonRetractConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonRetractConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- RetractCommand cmd = (RetractCommand) object;
- writer.startNode( "fact-handle" );
- writer.setValue( cmd.getFactHandle().toExternalForm() );
- writer.endNode();
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- reader.moveDown();
- FactHandle factHandle = new DefaultFactHandle( reader.getValue() );
- reader.moveUp();
-
- Command cmd = CommandFactory.newRetract( factHandle );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( RetractCommand.class );
- }
- }
-
- public static class JSonModifyConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonModifyConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- ModifyCommand cmd = (ModifyCommand) object;
-
- writer.startNode( "fact-handle" );
- writer.setValue( cmd.getFactHandle().toExternalForm() );
- writer.endNode();
-
- List<Setter> setters = cmd.getSetters();
- for ( Setter setter : setters ) {
- writeItem( setter,
- context,
- writer );
-
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- reader.moveDown();
- FactHandle factHandle = new DefaultFactHandle( reader.getValue() );
- reader.moveUp();
-
- List<Setter> setters = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
-
- reader.moveDown();
- String accessor = reader.getValue();
- reader.moveUp();
-
- reader.moveDown();
- String value = reader.getValue();
- reader.moveUp();
-
- Setter setter = CommandFactory.newSetter( accessor,
- value );
- setters.add( setter );
-
- reader.moveUp();
- }
-
- Command cmd = CommandFactory.newModify( factHandle,
- setters );
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( ModifyCommand.class );
- }
-
- }
-
- public static class JSonInsertElementsConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonInsertElementsConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- InsertElementsCommand cmd = (InsertElementsCommand) object;
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
-
- writer.startNode( "return-objects" );
- writer.setValue( Boolean.toString( cmd.isReturnObject() ) );
- writer.endNode();
-
- }
-
- for ( Object element : cmd.getObjects() ) {
- writeItem( new ObjectsObjectContainer( element ),
- context,
- writer );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- List objects = new ArrayList();
- String outIdentifier = null;
- String returnObjects = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "objects".equals( nodeName ) ) {
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object o = readItem( reader,
- context,
- null );
- objects.add( o );
- reader.moveUp();
- }
- } else if ( "out-identifier".equals( nodeName ) ) {
- outIdentifier = reader.getValue();
- } else if ( "return-objects".equals( nodeName ) ) {
- returnObjects = reader.getValue();
- } else {
- throw new IllegalArgumentException( "insert-elements does not support the child element name=''" + reader.getNodeName() + "' value=" + reader.getValue() + "'" );
- }
- reader.moveUp();
- }
- InsertElementsCommand cmd = new InsertElementsCommand( objects );
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier( outIdentifier );
- if ( outIdentifier != null ) {
- cmd.setReturnObject( Boolean.parseBoolean( returnObjects ) );
- }
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( InsertElementsCommand.class );
- }
- }
-
- public static class JSonBatchExecutionResultConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonBatchExecutionResultConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- ExecutionResults result = (ExecutionResults) object;
- writer.startNode( "results" );
- if ( !result.getIdentifiers().isEmpty() ) {
- for ( String identifier : result.getIdentifiers() ) {
- writer.startNode( "result" );
-
- writer.startNode( "identifier" );
- writer.setValue( identifier );
- writer.endNode();
-
- writer.startNode( "value" );
- Object value = result.getValue( identifier );
- writeItem( value,
- context,
- writer );
- writer.endNode();
-
- writer.endNode();
- }
- }
-
- for ( String identifier : ((ExecutionResultImpl) result).getFactHandles().keySet() ) {
- Object handle = result.getFactHandle( identifier );
- if ( handle instanceof FactHandle ) {
- writer.startNode( "fact-handle" );
-
- writer.startNode( "identifier" );
- writer.setValue( identifier );
- writer.endNode();
-
- writer.startNode( "external-form" );
- writer.setValue( ((FactHandle) handle).toExternalForm() );
- writer.endNode();
-
- writer.endNode();
- } else if ( handle instanceof Collection ) {
- writer.startNode( "fact-handles" );
-
- writer.startNode( "identifier" );
- writer.setValue( identifier );
- writer.endNode();
-
- //writer.startNode( "xxx" );
- for ( FactHandle factHandle : (Collection<FactHandle>) handle ) {
- writeItem( factHandle.toExternalForm(),
- context,
- writer );
- }
- //writer.endNode();
-
- writer.endNode();
- }
- }
-
- writer.endNode();
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- ExecutionResultImpl result = new ExecutionResultImpl();
- Map results = result.getResults();
- Map facts = result.getFactHandles();
-
- reader.moveDown();
- if ( "results".equals( reader.getNodeName() ) ) {
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
-
- if ( reader.getNodeName().equals( "result" ) ) {
- reader.moveDown();
- String identifier = reader.getValue();
- reader.moveUp();
-
- reader.moveDown();
- reader.moveDown();
- Object value = readItem( reader,
- context,
- null );
- results.put( identifier,
- value );
- reader.moveUp();
- reader.moveUp();
- } else if ( reader.getNodeName().equals( "fact-handle" ) ) {
- reader.moveDown();
- String identifier = reader.getValue();
- reader.moveUp();
-
- reader.moveDown();
- String externalForm = reader.getValue();
- reader.moveUp();
-
- facts.put( identifier,
- new DefaultFactHandle( externalForm ) );
- } else if ( reader.getNodeName().equals( "fact-handles" ) ) {
- List list = new ArrayList();
- String identifier = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- identifier = reader.getValue();
- reader.moveUp();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- FactHandle factHandle = new DefaultFactHandle( (String) readItem( reader,
- context,
- null ) );
- list.add( factHandle );
- reader.moveUp();
- }
- }
- facts.put( identifier,
- list );
- } else {
- throw new IllegalArgumentException( "Element '" + reader.getNodeName() + "' is not supported here" );
- }
- reader.moveUp();
- }
- } else {
- throw new IllegalArgumentException( "Element '" + reader.getNodeName() + "' is not supported here" );
- }
- reader.moveUp();
-
- return result;
- }
-
- public boolean canConvert(Class clazz) {
- return ExecutionResults.class.isAssignableFrom( clazz );
- }
- }
-
- public static abstract class BaseConverter {
- protected Mapper mapper;
- protected ReflectionProvider reflectionProvider;
-
- public BaseConverter(XStream xstream) {
- this.mapper = xstream.getMapper();
- this.reflectionProvider = xstream.getReflectionProvider();
- }
-
- protected void writeValue(HierarchicalStreamWriter writer,
- MarshallingContext context,
- String fieldName,
- Object object) {
- writer.startNode( fieldName );
- String name = this.mapper.serializedClass( object.getClass() );
- ExtendedHierarchicalStreamWriterHelper.startNode( writer,
- name,
- Mapper.Null.class );
- context.convertAnother( object );
- writer.endNode();
- writer.endNode();
- }
-
- protected Object readValue(HierarchicalStreamReader reader,
- UnmarshallingContext context,
- Object object,
- Object fieldName) {
- reader.moveDown();
- Class type = HierarchicalStreams.readClassType( reader,
- this.mapper );
- Object o = context.convertAnother( null,
- type );
-
- reader.moveUp();
- return o;
- }
- }
-
- public static class JSonSetGlobalConverter extends BaseConverter
- implements
- Converter {
-
- public JSonSetGlobalConverter(XStream xstream) {
- super( xstream );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- SetGlobalCommand cmd = (SetGlobalCommand) object;
-
- writer.startNode( "identifier" );
- writer.setValue( cmd.getIdentifier() );
- writer.endNode();
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
- } else if ( cmd.isOut() ) {
- writer.startNode( "out" );
- writer.setValue( Boolean.toString( cmd.isOut() ) );
- writer.endNode();
- }
- writeValue( writer,
- context,
- "object",
- cmd.getObject() );
-
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifier = null;
- String out = null;
- String outIdentifier = null;
- Object object = null;
- SetGlobalCommand cmd = new SetGlobalCommand();
-
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "identifier".equals( nodeName ) ) {
- identifier = reader.getValue();
- } else if ( "out".equals( nodeName ) ) {
- out = reader.getValue();
- } else if ( "out-identifier".equals( nodeName ) ) {
- outIdentifier = reader.getValue();
- } else if ( "object".equals( nodeName ) ) {
- cmd.setObject( readValue( reader,
- context,
- cmd.getObject(),
- "object" ) );
- }
- reader.moveUp();
- }
-
- cmd.setIdentifier( identifier );
-
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier( outIdentifier );
- } else if ( out != null ) {
- cmd.setOut( Boolean.parseBoolean( out ) );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( SetGlobalCommand.class );
- }
-
- }
-
- public static class JSonGetGlobalConverter extends BaseConverter
- implements
- Converter {
-
- public JSonGetGlobalConverter(XStream xstream) {
- super( xstream );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetGlobalCommand cmd = (GetGlobalCommand) object;
-
- writer.startNode( "identifier" );
- writer.setValue( cmd.getIdentifier() );
- writer.endNode();
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
- }
-
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifier = null;
- String outIdentifier = null;
- GetGlobalCommand cmd = new GetGlobalCommand();
-
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "identifier".equals( nodeName ) ) {
- identifier = reader.getValue();
- } else if ( "out-identifier".equals( nodeName ) ) {
- outIdentifier = reader.getValue();
- }
- reader.moveUp();
- }
-
- cmd.setIdentifier( identifier );
-
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier( outIdentifier );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetGlobalCommand.class );
- }
- }
-
- public static class JSonGetObjectsConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonGetObjectsConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetObjectsCommand cmd = (GetObjectsCommand) object;
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String outIdentifier = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- if ( "out-identifier".equals( reader.getNodeName() ) ) {
- outIdentifier = reader.getValue();
- }
- reader.moveUp();
- }
-
- GetObjectsCommand cmd = new GetObjectsCommand();
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier( outIdentifier );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetObjectsCommand.class );
- }
- }
-
- public static class JSonQueryConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonQueryConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- QueryCommand cmd = (QueryCommand) object;
-
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
- writer.endNode();
-
- writer.startNode( "name" );
- writer.setValue( cmd.getName() );
- writer.endNode();
-
- if ( cmd.getArguments() != null && cmd.getArguments().size() > 0 ) {
- writer.startNode( "args" );
- for ( Object arg : cmd.getArguments() ) {
- writeItem( arg,
- context,
- writer );
- }
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- List<String> outs = new ArrayList<String>();
-
- String outIdentifier = null;
- String name = null;
- List<Object> args = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "out-identifier".equals( nodeName ) ) {
- outIdentifier = reader.getValue();
- } else if ( "name".equals( nodeName ) ) {
- name = reader.getValue();
- } else if ( "args".equals( nodeName ) ) {
- reader.moveDown();
- args = new ArrayList<Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object arg = readItem( reader,
- context,
- null );
- args.add( arg );
- reader.moveUp();
- }
- reader.moveUp();
- }
- reader.moveUp();
- }
-
- QueryCommand cmd = new QueryCommand( outIdentifier,
- name,
- (args != null) ? args.toArray( new Object[args.size()] ) : null );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( QueryCommand.class );
- }
- }
-
- public static class JSonQueryResultsConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonQueryResultsConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- QueryResults results = (QueryResults) object;
-
- // write out identifiers
- String[] identifiers = results.getIdentifiers();
-
- writer.startNode( "identifiers" );
- for ( int i = 0; i < identifiers.length; i++ ) {
- writeItem( identifiers[i],
- context,
- writer );
- }
- writer.endNode();
-
- for ( QueryResultsRow result : results ) {
- writer.startNode( "row" );
- for ( int i = 0; i < identifiers.length; i++ ) {
- Object value = result.get( identifiers[i] );
- FactHandle factHandle = result.getFactHandle( identifiers[i] );
- writeItem( new RowItemContainer( factHandle,
- value ),
- context,
- writer );
- }
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- reader.moveDown();
- List<String> list = new ArrayList<String>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- list.add( (String) readItem( reader,
- context,
- null ) );
- reader.moveUp();
- }
- reader.moveUp();
-
- HashMap<String, Integer> identifiers = new HashMap<String, Integer>();
- for ( int i = 0; i < list.size(); i++ ) {
- identifiers.put( list.get( i ),
- i );
- }
-
- ArrayList<ArrayList<Object>> results = new ArrayList();
- ArrayList<ArrayList<FactHandle>> resultHandles = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- ArrayList objects = new ArrayList();
- ArrayList<FactHandle> handles = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- RowItemContainer container = (RowItemContainer) readItem( reader,
- context,
- null );
-
- objects.add( container.getObject() );
- handles.add( container.getFactHandle() );
- reader.moveUp();
- }
- results.add( objects );
- resultHandles.add( handles );
- reader.moveUp();
- }
-
- return new FlatQueryResults( identifiers,
- results,
- resultHandles );
- }
-
- public boolean canConvert(Class clazz) {
- return QueryResults.class.isAssignableFrom( clazz );
- }
- }
-
- public static class JSonStartProcessConvert extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonStartProcessConvert(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- StartProcessCommand cmd = (StartProcessCommand) object;
- writer.startNode( "process-id" );
- writer.setValue( cmd.getProcessId() );
- writer.endNode();
-
- for ( Entry<String, Object> entry : cmd.getParameters().entrySet() ) {
- writeItem( new ParameterContainer( entry.getKey(),
- entry.getValue() ),
- context,
- writer );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- reader.moveDown();
- String processId = reader.getValue();
- reader.moveUp();
-
- HashMap<String, Object> params = new HashMap<String, Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- ParameterContainer parameterContainer = (ParameterContainer) readItem( reader,
- context,
- null );
- params.put( parameterContainer.getIdentifier(),
- parameterContainer.getObject() );
- reader.moveUp();
- }
-
- StartProcessCommand cmd = new StartProcessCommand();
- cmd.setProcessId( processId );
- cmd.setParameters( params );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( StartProcessCommand.class );
- }
- }
-
- public static class JSonSignalEventConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonSignalEventConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- SignalEventCommand cmd = (SignalEventCommand) object;
- long processInstanceId = cmd.getProcessInstanceId();
- String eventType = cmd.getEventType();
- Object event = cmd.getEvent();
-
- if ( processInstanceId != -1 ) {
- writer.startNode( "process-instance-id" );
- writer.setValue( Long.toString( processInstanceId ) );
- writer.endNode();
- }
-
- writer.addAttribute( "event-type",
- eventType );
-
- writer.startNode( "event-type" );
- writer.setValue( eventType );
- writer.endNode();
-
- writer.startNode( "object" );
- writeItem( event,
- context,
- writer );
- writer.endNode();
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String processInstanceId = null;
- String eventType = null;
- Object event = null;
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "process-instance-id".equals( nodeName ) ) {
- processInstanceId = reader.getValue();
- } else if ( "event-type".equals( nodeName ) ) {
- eventType = reader.getValue();
- } else if ( "object".equals( nodeName ) ) {
- reader.moveDown();
- event = readItem( reader,
- context,
- null );
- reader.moveUp();
- }
- reader.moveUp();
- }
-
- Command cmd;
- if ( processInstanceId != null ) {
- cmd = CommandFactory.newSignalEvent( Long.parseLong( processInstanceId ),
- eventType,
- event );
- } else {
- cmd = CommandFactory.newSignalEvent( eventType,
- event );
- }
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( SignalEventCommand.class );
- }
-
- }
-
- public static class JSonCompleteWorkItemConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonCompleteWorkItemConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- CompleteWorkItemCommand cmd = (CompleteWorkItemCommand) object;
-
- writer.startNode( "id" );
- writer.setValue( Long.toString( cmd.getWorkItemId() ) );
- writer.endNode();
-
- for ( Entry<String, Object> entry : cmd.getResults().entrySet() ) {
- writeItem( new WorkItemResultsContainer( entry.getKey(),
- entry.getValue() ),
- context,
- writer );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String id = null;
- Map<String, Object> results = new HashMap<String, Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String nodeName = reader.getNodeName();
- if ( "id".equals( nodeName ) ) {
- id = reader.getValue();
- } else if ( "results".equals( nodeName ) ) {
- while ( reader.hasMoreChildren() ) {
- WorkItemResultsContainer res = (WorkItemResultsContainer) readItem( reader,
- context,
- null );
- results.put( res.getIdentifier(),
- res.getObject() );
- }
- }
- reader.moveUp();
- }
-
- return new CompleteWorkItemCommand( Long.parseLong( id ),
- results );
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( CompleteWorkItemCommand.class );
- }
- }
-
- public static class JSonAbortWorkItemConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public JSonAbortWorkItemConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- AbortWorkItemCommand cmd = (AbortWorkItemCommand) object;
- writer.startNode( "id" );
- writer.setValue( Long.toString( cmd.getWorkItemId() ) );
- writer.endNode();
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- reader.moveDown();
- String id = reader.getValue();
- reader.moveUp();
-
- Command cmd = CommandFactory.newAbortWorkItem( Long.parseLong( id ) );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( AbortWorkItemCommand.class );
- }
- }
}
Modified: labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java 2010-07-28 04:39:28 UTC (rev 34242)
+++ labs/jbossrules/trunk/drools-camel/src/main/java/org/drools/camel/component/XStreamXml.java 2010-07-28 05:26:10 UTC (rev 34243)
@@ -17,54 +17,30 @@
package org.drools.camel.component;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import org.apache.camel.model.dataformat.XStreamDataFormat;
-import org.drools.base.ClassObjectType;
-import org.drools.base.DroolsQuery;
-import org.drools.command.Command;
-import org.drools.command.CommandFactory;
-import org.drools.command.Setter;
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.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.GetObjectsCommand;
-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.common.DefaultFactHandle;
-import org.drools.rule.Declaration;
-import org.drools.runtime.ExecutionResults;
-import org.drools.runtime.impl.ExecutionResultImpl;
-import org.drools.runtime.rule.FactHandle;
-import org.drools.runtime.rule.QueryResults;
-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.runtime.help.impl.XStreamXML.AbortWorkItemConverter;
+import org.drools.runtime.help.impl.XStreamXML.BatchExecutionResultConverter;
+import org.drools.runtime.help.impl.XStreamXML.CompleteWorkItemConverter;
+import org.drools.runtime.help.impl.XStreamXML.FactHandleConverter;
+import org.drools.runtime.help.impl.XStreamXML.FireAllRulesConverter;
+import org.drools.runtime.help.impl.XStreamXML.GetGlobalConverter;
+import org.drools.runtime.help.impl.XStreamXML.GetObjectConverter;
+import org.drools.runtime.help.impl.XStreamXML.GetObjectsConverter;
+import org.drools.runtime.help.impl.XStreamXML.InsertConverter;
+import org.drools.runtime.help.impl.XStreamXML.InsertElementsConverter;
+import org.drools.runtime.help.impl.XStreamXML.ModifyConverter;
+import org.drools.runtime.help.impl.XStreamXML.QueryConverter;
+import org.drools.runtime.help.impl.XStreamXML.QueryResultsConverter;
+import org.drools.runtime.help.impl.XStreamXML.RetractConverter;
+import org.drools.runtime.help.impl.XStreamXML.SetGlobalConverter;
+import org.drools.runtime.help.impl.XStreamXML.SignalEventConverter;
+import org.drools.runtime.help.impl.XStreamXML.StartProcessConvert;
-import com.thoughtworks.xstream.XStream;
-import com.thoughtworks.xstream.converters.Converter;
-import com.thoughtworks.xstream.converters.MarshallingContext;
-import com.thoughtworks.xstream.converters.UnmarshallingContext;
-import com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter;
-import com.thoughtworks.xstream.io.HierarchicalStreamReader;
-import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
-import com.thoughtworks.xstream.mapper.Mapper;
-
public class XStreamXml {
public static XStreamDataFormat newXStreamMarshaller(XStreamDataFormat xstreamDataFormat) {
@@ -93,6 +69,7 @@
converters.add( InsertElementsConverter.class.getName() );
converters.add( FireAllRulesConverter.class.getName() );
converters.add( StartProcessConvert.class.getName() );
+ converters.add( SignalEventConverter.class.getName() );
converters.add( CompleteWorkItemConverter.class.getName() );
converters.add( AbortWorkItemConverter.class.getName() );
converters.add( QueryConverter.class.getName() );
@@ -101,902 +78,11 @@
converters.add( GetObjectsConverter.class.getName() );
converters.add( BatchExecutionResultConverter.class.getName() );
converters.add( QueryResultsConverter.class.getName() );
- converters.add( FactHandleConverter.class.getName() );
+ converters.add( FactHandleConverter.class.getName() );
xstreamDataFormat.setConverters( converters );
return xstreamDataFormat;
}
-
-
- public static class InsertConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public InsertConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- InsertObjectCommand cmd = (InsertObjectCommand) object;
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
-
- writer.addAttribute( "return-object",
- Boolean.toString( cmd.isReturnObject() ) );
-
- }
- writeItem( cmd.getObject(),
- context,
- writer );
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifierOut = reader.getAttribute( "out-identifier" );
- String returnObject = reader.getAttribute( "return-object" );
-
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
- InsertObjectCommand cmd = new InsertObjectCommand( object );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- if ( returnObject != null ) {
- cmd.setReturnObject( Boolean.parseBoolean( returnObject ) );
- }
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( InsertObjectCommand.class );
- }
-
- }
-
- public static class FactHandleConverter
- implements
- Converter {
- private Mapper mapper;
-
- public FactHandleConverter(XStream xstream) {
- this.mapper = mapper;
- }
-
- public boolean canConvert(Class aClass) {
- return FactHandle.class.isAssignableFrom( aClass );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext marshallingContext) {
- FactHandle fh = (FactHandle) object;
- //writer.startNode("fact-handle");
- writer.addAttribute( "external-form",
- fh.toExternalForm() );
- //writer.endNode();
- }
-
- public Object unmarshal(HierarchicalStreamReader hierarchicalStreamReader,
- UnmarshallingContext unmarshallingContext) {
- throw new UnsupportedOperationException( "Unable to unmarshal fact handles." );
- }
- }
-
- public static class ModifyConverter
- implements
- Converter {
-
- public ModifyConverter(XStream xstream) {
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- ModifyCommand cmd = (ModifyCommand) object;
-
- writer.addAttribute( "fact-handle",
- cmd.getFactHandle().toExternalForm() );
-
- for ( Setter setter : cmd.getSetters() ) {
- writer.startNode( "set" );
- writer.addAttribute( "accessor",
- setter.getAccessor() );
- writer.addAttribute( "value",
- setter.getValue() );
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
-
- List<Setter> setters = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Setter setter = CommandFactory.newSetter( reader.getAttribute( "accessor" ),
- reader.getAttribute( "value" ) );
- setters.add( setter );
- reader.moveUp();
- }
-
- Command cmd = CommandFactory.newModify( factHandle,
- setters );
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( ModifyCommand.class );
- }
-
- }
-
- public static class RetractConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public RetractConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- RetractCommand cmd = (RetractCommand) object;
-
- writer.addAttribute( "fact-handle",
- cmd.getFactHandle().toExternalForm() );
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
-
- Command cmd = CommandFactory.newRetract( factHandle );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( RetractCommand.class );
- }
- }
-
- public static class InsertElementsConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public InsertElementsConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- InsertElementsCommand cmd = (InsertElementsCommand) object;
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
-
- writer.addAttribute( "return-objects",
- Boolean.toString( cmd.isReturnObject() ) );
-
- }
-
- for ( Object element : cmd.getObjects() ) {
- writeItem( element,
- context,
- writer );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifierOut = reader.getAttribute( "out-identifier" );
- String returnObject = reader.getAttribute( "return-objects" );
-
- List objects = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
- objects.add( object );
- }
-
- InsertElementsCommand cmd = new InsertElementsCommand( objects );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- if ( returnObject != null ) {
- cmd.setReturnObject( Boolean.parseBoolean( returnObject ) );
- }
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( InsertElementsCommand.class );
- }
-
- }
-
- public static class SetGlobalConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public SetGlobalConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- SetGlobalCommand cmd = (SetGlobalCommand) object;
-
- writer.addAttribute( "identifier",
- cmd.getIdentifier() );
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- } else if ( cmd.isOut() ) {
- writer.addAttribute( "out",
- Boolean.toString( cmd.isOut() ) );
- }
-
- writeItem( cmd.getObject(),
- context,
- writer );
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifier = reader.getAttribute( "identifier" );
- String out = reader.getAttribute( "out" );
- String identifierOut = reader.getAttribute( "out-identifier" );
-
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
- SetGlobalCommand cmd = new SetGlobalCommand( identifier,
- object );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- } else if ( out != null ) {
- cmd.setOut( Boolean.parseBoolean( out ) );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( SetGlobalCommand.class );
- }
- }
-
- public static class GetObjectConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public GetObjectConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetObjectCommand cmd = (GetObjectCommand) object;
-
- writer.addAttribute( "fact-handle",
- cmd.getFactHandle().toExternalForm() );
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
- String identifierOut = reader.getAttribute( "out-identifier" );
-
- GetObjectCommand cmd = new GetObjectCommand( factHandle );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetObjectCommand.class );
- }
- }
-
- public static class GetGlobalConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public GetGlobalConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetGlobalCommand cmd = (GetGlobalCommand) object;
-
- writer.addAttribute( "identifier",
- cmd.getIdentifier() );
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifier = reader.getAttribute( "identifier" );
- String identifierOut = reader.getAttribute( "out-identifier" );
-
- GetGlobalCommand cmd = new GetGlobalCommand( identifier );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetGlobalCommand.class );
- }
- }
-
- public static class GetObjectsConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public GetObjectsConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetObjectsCommand cmd = (GetObjectsCommand) object;
-
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifierOut = reader.getAttribute( "out-identifier" );
-
- GetObjectsCommand cmd = new GetObjectsCommand();
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- }
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetObjectsCommand.class );
- }
- }
-
- public static class FireAllRulesConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public FireAllRulesConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- FireAllRulesCommand cmd = (FireAllRulesCommand) object;
-
- if ( cmd.getMax() != -1 ) {
- writer.addAttribute( "max",
- Integer.toString( cmd.getMax() ) );
- }
-
- if ( cmd.getOutIdentifier() != null) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier());
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String max = reader.getAttribute( "max" );
- String outIdentifier = reader.getAttribute( "out-identifier" );
-
- FireAllRulesCommand cmd = null;
-
- if ( max != null ) {
- cmd = new FireAllRulesCommand( Integer.parseInt( max ) );
- } else {
- cmd = new FireAllRulesCommand();
- }
-
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier( outIdentifier );
- }
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( FireAllRulesCommand.class );
- }
- }
-
- public static class QueryConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public QueryConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- QueryCommand cmd = (QueryCommand) object;
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- writer.addAttribute( "name",
- cmd.getName() );
- if ( cmd.getArguments() != null ) {
- for ( Object arg : cmd.getArguments() ) {
- writeItem( arg,
- context,
- writer );
- }
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- List<String> outs = new ArrayList<String>();
-
- // Query cmd = null;
- String outIdentifier = reader.getAttribute( "out-identifier" );
- String name = reader.getAttribute( "name" );
- List<Object> args = new ArrayList<Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object arg = readItem( reader,
- context,
- null );
- args.add( arg );
- reader.moveUp();
- }
- QueryCommand cmd = new QueryCommand( outIdentifier,
- name,
- args.toArray( new Object[args.size()] ) );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( QueryCommand.class );
- }
- }
-
- public static class StartProcessConvert extends AbstractCollectionConverter
- implements
- Converter {
-
- public StartProcessConvert(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- StartProcessCommand cmd = (StartProcessCommand) object;
- writer.addAttribute( "processId",
- cmd.getProcessId() );
-
- for ( Entry<String, Object> entry : cmd.getParameters().entrySet() ) {
- writer.startNode( "parameter" );
- writer.addAttribute( "identifier",
- entry.getKey() );
- writeItem( entry.getValue(),
- context,
- writer );
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String processId = reader.getAttribute( "processId" );
-
- HashMap<String, Object> params = new HashMap<String, Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String identifier = reader.getAttribute( "identifier" );
- reader.moveDown();
- Object value = readItem( reader,
- context,
- null );
- reader.moveUp();
- params.put( identifier,
- value );
- reader.moveUp();
- }
- StartProcessCommand cmd = new StartProcessCommand();
- cmd.setProcessId( processId );
- cmd.setParameters( params );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( StartProcessCommand.class );
- }
- }
-
- public static class SignalEventConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public SignalEventConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- SignalEventCommand cmd = (SignalEventCommand) object;
- long processInstanceId = cmd.getProcessInstanceId();
- String eventType = cmd.getEventType();
- Object event = cmd.getEvent();
-
- if ( processInstanceId != -1 ) {
- writer.addAttribute( "process-instance-id",
- Long.toString( processInstanceId ) );
- }
-
- writer.addAttribute( "event-type",
- eventType );
-
- writeItem( event,
- context,
- writer );
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String processInstanceId = reader.getAttribute( "process-instance-id" );
- String eventType = reader.getAttribute( "event-type" );
-
- reader.moveDown();
- Object event = readItem( reader,
- context,
- null );
- reader.moveUp();
-
- Command cmd;
- if ( processInstanceId != null ) {
- cmd = CommandFactory.newSignalEvent( Long.parseLong( processInstanceId ),
- eventType,
- event );
- } else {
- cmd = CommandFactory.newSignalEvent( eventType,
- event );
- }
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( SignalEventCommand.class );
- }
-
- }
-
- public static class CompleteWorkItemConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public CompleteWorkItemConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- CompleteWorkItemCommand cmd = (CompleteWorkItemCommand) object;
- writer.addAttribute( "id",
- Long.toString( cmd.getWorkItemId() ) );
-
- for ( Entry<String, Object> entry : cmd.getResults().entrySet() ) {
- writer.startNode( "result" );
- writer.addAttribute( "identifier",
- entry.getKey() );
- writeItem( entry.getValue(),
- context,
- writer );
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String id = reader.getAttribute( "id" );
-
- Map<String, Object> results = new HashMap<String, Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String identifier = reader.getAttribute( "identifier" );
- reader.moveDown();
- Object value = readItem( reader,
- context,
- null );
- reader.moveUp();
- results.put( identifier,
- value );
- reader.moveUp();
- }
-
- Command cmd = CommandFactory.newCompleteWorkItem( Long.parseLong( id ),
- results );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( CompleteWorkItemCommand.class );
- }
- }
-
- public static class AbortWorkItemConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public AbortWorkItemConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- AbortWorkItemCommand cmd = (AbortWorkItemCommand) object;
- writer.addAttribute( "id",
- Long.toString( cmd.getWorkItemId() ) );
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String id = reader.getAttribute( "id" );
- Command cmd = CommandFactory.newAbortWorkItem( Long.parseLong( id ) );
-
- return cmd;
- }
-
- public boolean canConvert(Class clazz) {
- return clazz.equals( AbortWorkItemCommand.class );
- }
- }
-
- public static class BatchExecutionResultConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public BatchExecutionResultConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- ExecutionResults result = (ExecutionResults) object;
- for ( String identifier : result.getIdentifiers() ) {
- writer.startNode( "result" );
- writer.addAttribute( "identifier",
- identifier );
- Object value = result.getValue( identifier );
- writeItem( value,
- context,
- writer );
- writer.endNode();
- }
-
- for ( String identifier : ((ExecutionResultImpl) result).getFactHandles().keySet() ) {
- Object handle = result.getFactHandle( identifier );
- if ( handle instanceof FactHandle ) {
- writer.startNode( "fact-handle" );
- writer.addAttribute( "identifier",
- identifier );
- writer.addAttribute( "external-form",
- ((FactHandle) handle).toExternalForm() );
-
- writer.endNode();
- } else if ( handle instanceof Collection ) {
- writer.startNode( "fact-handles" );
- writer.addAttribute( "identifier",
- identifier );
- for ( FactHandle factHandle : (Collection<FactHandle>) handle ) {
- writer.startNode( "fact-handle" );
- writer.addAttribute( "external-form",
- ((FactHandle) factHandle).toExternalForm() );
- writer.endNode();
- }
-
- writer.endNode();
- }
-
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- ExecutionResultImpl result = new ExecutionResultImpl();
- Map results = result.getResults();
- Map facts = result.getFactHandles();
-
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- if ( reader.getNodeName().equals( "result" ) ) {
- String identifier = reader.getAttribute( "identifier" );
- reader.moveDown();
- Object value = readItem( reader,
- context,
- null );
- results.put( identifier,
- value );
- reader.moveUp();
- reader.moveUp();
- } else if ( reader.getNodeName().equals( "fact-handle" ) ) {
- String identifier = reader.getAttribute( "identifier" );
- facts.put( identifier,
- new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
- } else if ( reader.getNodeName().equals( "fact-handles" ) ) {
- String identifier = reader.getAttribute( "identifier" );
- List<FactHandle> list = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- list.add( new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
- reader.moveUp();
- }
- facts.put( identifier,
- list );
- } else {
- throw new IllegalArgumentException( "Element '" + reader.getNodeName() + "' is not supported here" );
- }
- }
-
- return result;
- }
-
- public boolean canConvert(Class clazz) {
- return ExecutionResults.class.isAssignableFrom( clazz );
- }
- }
-
- public static class QueryResultsConverter extends AbstractCollectionConverter
- implements
- Converter {
-
- public QueryResultsConverter(XStream xstream) {
- super( xstream.getMapper() );
- }
-
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- QueryResults results = (QueryResults) object;
-
- // write out identifiers
- List<String> originalIds = Arrays.asList( results.getIdentifiers() );
- List<String> actualIds = new ArrayList();
- if ( results instanceof NativeQueryResults ) {
- for ( String identifier : originalIds ) {
- // we don't want to marshall the query parameters
- Declaration declr = ((NativeQueryResults) results).getDeclarations().get( identifier );
- ObjectType objectType = declr.getPattern().getObjectType();
- if ( objectType instanceof ClassObjectType ) {
- if ( ((ClassObjectType) objectType).getClassType() == DroolsQuery.class ) {
- continue;
- }
- }
- actualIds.add( identifier );
- }
- }
-
- String[] identifiers = actualIds.toArray( new String[actualIds.size()] );
-
- writer.startNode( "identifiers" );
- for ( int i = 0; i < identifiers.length; i++ ) {
- writer.startNode( "identifier" );
- writer.setValue( identifiers[i] );
- writer.endNode();
- }
- writer.endNode();
-
- for ( QueryResultsRow result : results ) {
- writer.startNode( "row" );
- for ( int i = 0; i < identifiers.length; i++ ) {
- Object value = result.get( identifiers[i] );
- FactHandle factHandle = result.getFactHandle( identifiers[i] );
- writeItem( value,
- context,
- writer );
- writer.startNode( "fact-handle" );
- writer.addAttribute( "external-form",
- ((FactHandle) factHandle).toExternalForm() );
- writer.endNode();
- }
- writer.endNode();
- }
- }
-
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- reader.moveDown();
- List<String> list = new ArrayList<String>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- list.add( reader.getValue() );
- reader.moveUp();
- }
- reader.moveUp();
-
- HashMap<String, Integer> identifiers = new HashMap<String, Integer>();
- for ( int i = 0; i < list.size(); i++ ) {
- identifiers.put( list.get( i ),
- i );
- }
-
- ArrayList<ArrayList<Object>> results = new ArrayList();
- ArrayList<ArrayList<FactHandle>> resultHandles = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- ArrayList objects = new ArrayList();
- ArrayList<FactHandle> handles = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
-
- reader.moveDown();
- FactHandle handle = new DefaultFactHandle( reader.getAttribute( "external-form" ) );
- reader.moveUp();
-
- objects.add( object );
- handles.add( handle );
- }
- results.add( objects );
- resultHandles.add( handles );
- reader.moveUp();
- }
-
- return new FlatQueryResults( identifiers,
- results,
- resultHandles );
- }
-
- public boolean canConvert(Class clazz) {
- return QueryResults.class.isAssignableFrom( clazz );
- }
- }
+
}
+
Modified: labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java 2010-07-28 04:39:28 UTC (rev 34242)
+++ labs/jbossrules/trunk/drools-camel/src/test/java/org/drools/camel/component/XStreamBatchExecutionTest.java 2010-07-28 05:26:10 UTC (rev 34243)
@@ -27,6 +27,7 @@
import org.drools.KnowledgeBaseFactory;
import org.drools.KnowledgeBaseFactoryService;
import org.drools.Person;
+import org.drools.TestVariable;
import org.drools.builder.DirectoryLookupFactoryService;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
@@ -81,6 +82,7 @@
return new RouteBuilder() {
public void configure() throws Exception {
from("direct:exec").policy( new DroolsPolicy() ).unmarshal( "xstream" ).to("drools://node/ksession1").marshal( "xstream" );
+ from("direct:execWithLookup").policy( new DroolsPolicy() ).unmarshal( "xstream" ).to("drools://node").marshal( "xstream" );
from("direct:unmarshal").policy( new DroolsPolicy() ).unmarshal( "xstream" );
from("direct:marshal").policy( new DroolsPolicy() ).marshal( "xstream" );
}
@@ -182,7 +184,7 @@
inXml += " <fire-all-rules />";
inXml += "</batch-execution>";
- StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
setExec( ksession );
String outXml = template.requestBody("direct:exec", inXml, String.class);
@@ -249,7 +251,7 @@
inXml += " <fire-all-rules />";
inXml += "</batch-execution>";
- StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
setExec( ksession );
String outXml = template.requestBody("direct:exec", inXml, String.class);
@@ -304,7 +306,7 @@
inXml += " <fire-all-rules />";
inXml += "</batch-execution>";
- StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
setExec( ksession );
String outXml = template.requestBody("direct:exec", inXml, String.class);
@@ -350,7 +352,7 @@
inXml += " <fire-all-rules />";
inXml += "</batch-execution>";
- StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
setExec( ksession );
String outXml = template.requestBody("direct:exec", inXml, String.class);
@@ -396,7 +398,7 @@
inXml += " <fire-all-rules />";
inXml += "</batch-execution>";
- StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
setExec( ksession );
String outXml = template.requestBody("direct:exec", inXml, String.class);
@@ -447,7 +449,7 @@
inXml += " <fire-all-rules />";
inXml += "</batch-execution>";
- StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
setExec( ksession );
String outXml = template.requestBody("direct:exec", inXml, String.class);
@@ -545,7 +547,7 @@
inXml += " </insert-elements>";
inXml += "</batch-execution>";
- StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatelessKnowledgeSession ksession = getStatelessKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
setExec( ksession );
String outXml = template.requestBody("direct:exec", inXml, String.class);
@@ -605,7 +607,7 @@
inXml += " <get-global identifier='list' out-identifier='out-list'/>";
inXml += "</batch-execution>";
- StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
FactHandle fh = ksession.insert( new Person( "mic",
42 ) );
List<FactHandle> list = new ArrayList<FactHandle>();
@@ -626,1345 +628,1239 @@
outXml );
}
-//
-// public void testInsertElementsWithReturnObjects() throws Exception {
-// String str = "";
-// str += "package org.drools \n";
-// str += "import org.drools.Cheese \n";
-// str += "global java.util.List list \n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Cheese() \n";
-// str += " \n";
-// str += " then \n";
-// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
-// str += " list.add( $c );";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <set-global identifier='list' out='true' >";
-// inXml += " <list/>";
-// inXml += " </set-global>";
-// inXml += " <insert-elements out-identifier='myfacts' return-objects='true'>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>25</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>30</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert-elements>";
-// inXml += " <fire-all-rules/>";
-// inXml += "</batch-execution>";
-//
-// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipelineStateful( ksession ).insert( inXml,
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// Collection< ? extends FactHandle> factHandles = ksession.getFactHandles();
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier='list'>\n";
-// expectedXml += " <list>\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>35</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>30</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " </list>\n";
-// expectedXml += " </result>\n";
-//
-// expectedXml += " <result identifier=\"myfacts\">\n";
-// expectedXml += " <list>\n";
-// expectedXml += " <org.drools.Cheese reference=\"../../../result/list/org.drools.Cheese[2]\"/>\n";
-// expectedXml += " <org.drools.Cheese reference=\"../../../result/list/org.drools.Cheese\"/>\n";
-// expectedXml += " </list>\n";
-// expectedXml += " </result>\n";
-// expectedXml += " <fact-handles identifier=\"myfacts\">\n";
-// for ( FactHandle factHandle : factHandles ) {
-// if ( ((Cheese) ksession.getObject( factHandle )).getPrice() == 30 ) {
-// expectedXml += " <fact-handle external-form=\"" + factHandle.toExternalForm() + "\"/>\n";
-// }
-// }
-//
-// for ( FactHandle factHandle : factHandles ) {
-// if ( ((Cheese) ksession.getObject( factHandle )).getPrice() == 35 ) {
-// expectedXml += " <fact-handle external-form=\"" + factHandle.toExternalForm() + "\"/>\n";
-// }
-// }
-// expectedXml += " </fact-handles>\n";
-//
-// expectedXml += "</execution-results>\n";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-//
-// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-//
-// List list = (List) result.getValue( "list" );
-// Cheese stilton25 = new Cheese( "stilton",
-// 30 );
-// Cheese stilton30 = new Cheese( "stilton",
-// 35 );
-//
-// Set expectedList = new HashSet();
-// expectedList.add( stilton25 );
-// expectedList.add( stilton30 );
-//
-// assertEquals( expectedList,
-// new HashSet( list ) );
-// }
-//
-// public void testSetGlobal() throws Exception {
-// String str = "";
-// str += "package org.drools \n";
-// str += "import org.drools.Cheese \n";
-// str += "global java.util.List list1 \n";
-// str += "global java.util.List list2 \n";
-// str += "global java.util.List list3 \n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Cheese() \n";
-// str += " \n";
-// str += " then \n";
-// str += " $c.setPrice( 30 ); \n";
-// str += " list1.add( $c ); \n";
-// str += " list2.add( $c ); \n";
-// str += " list3.add( $c ); \n";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <set-global identifier='list1'>";
-// inXml += " <list/>";
-// inXml += " </set-global>";
-// inXml += " <set-global identifier='list2' out='true'>";
-// inXml += " <list/>";
-// inXml += " </set-global>";
-// inXml += " <set-global identifier='list3' out-identifier='outList3'>";
-// inXml += " <list/>";
-// inXml += " </set-global>";
-// inXml += " <insert>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>5</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += "</batch-execution>";
-//
-// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipeline( ksession ).insert( inXml,
-// resultHandler );
-//
-// String outXml = (String) resultHandler.getObject();
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier='list2'>\n";
-// expectedXml += " <list>\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>30</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " </list>\n";
-// expectedXml += " </result>\n";
-// expectedXml += " <result identifier='outList3'>\n";
-// expectedXml += " <list>\n";
-// expectedXml += " <org.drools.Cheese reference='../../../result/list/org.drools.Cheese'/>\n";
-// expectedXml += " </list>\n";
-// expectedXml += " </result>\n";
-// expectedXml += "</execution-results>\n";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-//
-// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-// Cheese stilton = new Cheese( "stilton",
-// 30 );
-//
-// assertNull( result.getValue( "list1" ) );
-//
-// List list2 = (List) result.getValue( "list2" );
-// assertEquals( 1,
-// list2.size() );
-// assertEquals( stilton,
-// list2.get( 0 ) );
-//
-// List list3 = (List) result.getValue( "outList3" );
-// assertEquals( 1,
-// list3.size() );
-// assertEquals( stilton,
-// list3.get( 0 ) );
-// }
-//
-// public void testGetGlobal() throws Exception {
-// String str = "";
-// str += "package org.drools \n";
-// str += "import org.drools.Cheese \n";
-// str += "global java.util.List list \n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Cheese() \n";
-// str += " \n";
-// str += " then \n";
-// str += " list.add( $c ); \n";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <set-global identifier='list'>";
-// inXml += " <list/>";
-// inXml += " </set-global>";
-// inXml += " <insert>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>25</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += " <get-global identifier='list' out-identifier='out-list'/>";
-// inXml += "</batch-execution>";
-//
-// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipeline( ksession ).insert( inXml,
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier=\"out-list\">\n";
-// expectedXml += " <list>\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>25</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " </list>\n";
-// expectedXml += " </result>\n";
-// expectedXml += "</execution-results>\n";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-// }
-//
-// public void testGetObjects() throws Exception {
-// String str = "";
-// str += "package org.drools \n";
-// str += "import org.drools.Cheese \n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Cheese() \n";
-// str += " \n";
-// str += " then \n";
-// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <insert-elements>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>25</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>30</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert-elements>";
-// inXml += " <get-objects out-identifier='list' />";
-// inXml += "</batch-execution>";
-//
-// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipeline( ksession ).insert( inXml,
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>";
-// expectedXml += " <result identifier='list'>";
-// expectedXml += " <list>";
-// expectedXml += " <org.drools.Cheese>";
-// expectedXml += " <type>stilton</type>";
-// expectedXml += " <price>30</price>";
-// expectedXml += " <oldPrice>0</oldPrice>";
-// expectedXml += " </org.drools.Cheese>";
-// expectedXml += " <org.drools.Cheese>";
-// expectedXml += " <type>stilton</type>";
-// expectedXml += " <price>35</price>";
-// expectedXml += " <oldPrice>0</oldPrice>";
-// expectedXml += " </org.drools.Cheese>";
-// expectedXml += " </list>";
-// expectedXml += " </result>";
-// expectedXml += "</execution-results>";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-//
-// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-// List list = (List) result.getValue( "list" );
-// Cheese stilton25 = new Cheese( "stilton",
-// 30 );
-// Cheese stilton30 = new Cheese( "stilton",
-// 35 );
-//
-// Set expectedList = new HashSet();
-// expectedList.add( stilton25 );
-// expectedList.add( stilton30 );
-//
-// assertEquals( expectedList,
-// new HashSet( list ) );
-// }
-//
-// public void testQuery() throws Exception {
-// String str = "";
-// str += "package org.drools.test \n";
-// str += "import org.drools.Cheese \n";
-// str += "query cheeses \n";
-// str += " stilton : Cheese(type == 'stilton') \n";
-// str += " cheddar : Cheese(type == 'cheddar', price == stilton.price) \n";
-// str += "end\n";
-// str += "query cheesesWithParams(String a, String b) \n";
-// str += " stilton : Cheese(type == a) \n";
-// str += " cheddar : Cheese(type == b, price == stilton.price) \n";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <insert>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>1</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += " <insert>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>2</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += " <insert>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>cheddar</type>";
-// inXml += " <price>1</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += " <insert>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>cheddar</type>";
-// inXml += " <price>2</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += " <query out-identifier='cheeses' name='cheeses'/>";
-// inXml += " <query out-identifier='cheeses2' name='cheesesWithParams'>";
-// inXml += " <string>stilton</string>";
-// inXml += " <string>cheddar</string>";
-// inXml += " </query>";
-// inXml += "</batch-execution>";
-//
-// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipelineStateful( ksession ).insert( inXml,
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// Iterator<QueryResultsRow> it1 = ksession.getQueryResults( "cheeses" ).iterator();
-// Iterator<QueryResultsRow> it2 = ksession.getQueryResults( "cheesesWithParams",
-// new String[]{"stilton", "cheddar"} ).iterator();
-// QueryResultsRow row = null;
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier='cheeses'>\n";
-// expectedXml += " <query-results>\n";
-// expectedXml += " <identifiers>\n";
-// expectedXml += " <identifier>stilton</identifier>\n";
-// expectedXml += " <identifier>cheddar</identifier>\n";
-// expectedXml += " </identifiers>\n";
-// expectedXml += " <row>\n";
-// row = it1.next();
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>1</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>cheddar</type>\n";
-// expectedXml += " <price>1</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
-// expectedXml += " </row>\n";
-// expectedXml += " <row>\n";
-// row = it1.next();
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>2</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>cheddar</type>\n";
-// expectedXml += " <price>2</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
-// expectedXml += " </row>\n";
-// expectedXml += " </query-results>\n";
-// expectedXml += " </result>\n";
-// expectedXml += " <result identifier='cheeses2'>\n";
-// expectedXml += " <query-results>\n";
-// expectedXml += " <identifiers>\n";
-// expectedXml += " <identifier>stilton</identifier>\n";
-// expectedXml += " <identifier>cheddar</identifier>\n";
-// expectedXml += " </identifiers>\n";
-// expectedXml += " <row>\n";
-// row = it2.next();
-// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese\"/>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
-// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese[2]\"/>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
-// expectedXml += " </row>\n";
-// expectedXml += " <row>\n";
-// row = it2.next();
-// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese\"/>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
-// expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese[2]\"/>\n";
-// expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
-// expectedXml += " </row>\n";
-// expectedXml += " </query-results>\n";
-// expectedXml += " </result>\n";
-// expectedXml += "</execution-results>\n";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-//
-// ExecutionResults batchResult = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-//
-// Cheese stilton1 = new Cheese( "stilton",
-// 1 );
-// Cheese cheddar1 = new Cheese( "cheddar",
-// 1 );
-// Cheese stilton2 = new Cheese( "stilton",
-// 2 );
-// Cheese cheddar2 = new Cheese( "cheddar",
-// 2 );
-//
-// Set set = new HashSet();
-// List list = new ArrayList();
-// list.add( stilton1 );
-// list.add( cheddar1 );
-// set.add( list );
-//
-// list = new ArrayList();
-// list.add( stilton2 );
-// list.add( cheddar2 );
-// set.add( list );
-//
-// org.drools.runtime.rule.QueryResults results = (org.drools.runtime.rule.QueryResults) batchResult.getValue( "cheeses" );
-// assertEquals( 2,
-// results.size() );
-// assertEquals( 2,
-// results.getIdentifiers().length );
-// Set newSet = new HashSet();
-// for ( org.drools.runtime.rule.QueryResultsRow result : results ) {
-// list = new ArrayList();
-// list.add( result.get( "stilton" ) );
-// list.add( result.get( "cheddar" ) );
-// newSet.add( list );
-// }
-// assertEquals( set,
-// newSet );
-// }
-//
-// public void testManualFireAllRules() throws Exception {
-// String str = "";
-// str += "package org.drools \n";
-// str += "import org.drools.Cheese \n";
-// str += "global java.util.List list \n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Cheese() \n";
-// str += " \n";
-// str += " then \n";
-// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
-// str += " list.add( $c );";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <set-global identifier='list' out='true'>";
-// inXml += " <list/>";
-// inXml += " </set-global>";
-// inXml += " <insert-elements>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>25</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>30</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert-elements>";
-// inXml += " <fire-all-rules />";
-// inXml += " <insert out-identifier='outBrie'>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>brie</type>";
-// inXml += " <price>10</price>";
-// inXml += " <oldPrice>5</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += "</batch-execution>";
-//
-// StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipeline( ksession ).insert( inXml,
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// FactHandle factHandle = (FactHandle) ((ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml )).getFactHandle( "outBrie" );
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier='list'>\n";
-// expectedXml += " <list>\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>35</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <price>30</price>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " </list>\n";
-// expectedXml += " </result>\n";
-// expectedXml += " <result identifier='outBrie'>\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>brie</type>\n";
-// expectedXml += " <price>10</price>\n";
-// expectedXml += " <oldPrice>5</oldPrice>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " </result>\n";
-// expectedXml += " <fact-handle identifier=\"outBrie\" external-form=\"" + factHandle.toExternalForm() + "\" /> \n";
-// expectedXml += "</execution-results>\n";
-// assertXMLEqual( expectedXml,
-// outXml );
-//
-// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-//
-// // brie should not have been added to the list
-// List list = (List) result.getValue( "list" );
-// Cheese stilton25 = new Cheese( "stilton",
-// 30 );
-// Cheese stilton30 = new Cheese( "stilton",
-// 35 );
-//
-// Set expectedList = new HashSet();
-// expectedList.add( stilton25 );
-// expectedList.add( stilton30 );
-//
-// assertEquals( expectedList,
-// new HashSet( list ) );
-//
-// // brie should not have changed
-// Cheese brie10 = new Cheese( "brie",
-// 10 );
-// brie10.setOldPrice( 5 );
-// assertEquals( brie10,
-// result.getValue( "outBrie" ) );
-// }
-//
-// public void testProcess() throws SAXException,
-// IOException {
-// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-//
-// String str = "";
-// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
-// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
-// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
-// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
-// str += "\n";
-// str += " <header>\n";
-// str += " <imports>\n";
-// str += " <import name=\"org.drools.TestVariable\" />\n";
-// str += " </imports>\n";
-// str += " <globals>\n";
-// str += " <global identifier=\"list\" type=\"java.util.List\" />\n";
-// str += " </globals>\n";
-// str += " <variables>\n";
-// str += " <variable name=\"person\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"TestVariable\" />\n";
-// str += " </variable>\n";
-// str += " </variables>\n";
-// str += " </header>\n";
-// str += "\n";
-// str += " <nodes>\n";
-// str += " <start id=\"1\" name=\"Start\" />\n";
-// str += " <actionNode id=\"2\" name=\"MyActionNode\" >\n";
-// str += " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
-// str += "list.add(person.name);\n";
-// str += "</action>\n";
-// str += " </actionNode>\n";
-// str += " <end id=\"3\" name=\"End\" />\n";
-// str += " </nodes>\n";
-// str += "\n";
-// str += " <connections>\n";
-// str += " <connection from=\"1\" to=\"2\" />\n";
-// str += " <connection from=\"2\" to=\"3\" />\n";
-// str += " </connections>\n" + "\n";
-// str += "</process>";
-//
-// Reader source = new StringReader( str );
-// kbuilder.add( ResourceFactory.newReaderResource( source ),
-// ResourceType.DRF );
-// if ( kbuilder.hasErrors() ) {
-// fail( kbuilder.getErrors().toString() );
-// }
-//
-// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-//
-// StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-// List<String> list = new ArrayList<String>();
-// ksession.setGlobal( "list",
-// list );
-// TestVariable person = new TestVariable( "John Doe" );
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <start-process processId='org.drools.actions'>";
-// inXml += " <parameter identifier='person'>";
-// inXml += " <org.drools.TestVariable>";
-// inXml += " <name>John Doe</name>";
-// inXml += " </org.drools.TestVariable>";
-// inXml += " </parameter>";
-// inXml += " </start-process>";
-// inXml += " <get-global identifier='list' out-identifier='out-list'/>";
-// inXml += "</batch-execution>";
-//
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipeline( ksession ).insert( inXml,
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// assertEquals( 1,
-// list.size() );
-// assertEquals( "John Doe",
-// list.get( 0 ) );
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier=\"out-list\">\n";
-// expectedXml += " <list>\n";
-// expectedXml += " <string>John Doe</string>\n";
-// expectedXml += " </list>\n";
-// expectedXml += " </result>\n";
-// expectedXml += "</execution-results>\n";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-// }
-//
-// public void testProcessInstanceSignalEvent() throws Exception {
-// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-// String str = "";
-// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
-// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
-// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
-// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
-// str += "\n";
-// str += " <header>\n";
-// str += " <variables>\n";
-// str += " <variable name=\"MyVar\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>SomeText</value>\n";
-// str += " </variable>\n";
-// str += " </variables>\n";
-// str += " </header>\n";
-// str += "\n";
-// str += " <nodes>\n";
-// str += " <start id=\"1\" name=\"Start\" />\n";
-// str += " <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
-// str += " <eventFilters>\n";
-// str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
-// str += " </eventFilters>\n";
-// str += " </eventNode>\n";
-// str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
-// str += " <end id=\"4\" name=\"End\" />\n";
-// str += " </nodes>\n";
-// str += "\n";
-// str += " <connections>\n";
-// str += " <connection from=\"1\" to=\"3\" />\n";
-// str += " <connection from=\"2\" to=\"3\" />\n";
-// str += " <connection from=\"3\" to=\"4\" />\n";
-// str += " </connections>\n";
-// str += "\n";
-// str += "</process>";
-//
-// kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
-// ResourceType.DRF );
-//
-// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-//
-// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-//
-// ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
-// assertEquals( ProcessInstance.STATE_ACTIVE,
-// processInstance.getState() );
-//
-// String inXml = "";
-// inXml += "<signal-event process-instance-id= '" + processInstance.getId() + "' event-type='MyEvent'>";
-// inXml += " <string>MyValue</string>";
-// inXml += "</signal-event>";
-//
-// getPipelineStateful( ksession ).insert( inXml,
-// new ResultHandlerImpl() );
-//
-// assertEquals( ProcessInstance.STATE_COMPLETED,
-// processInstance.getState() );
-// assertEquals( "MyValue",
-// ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
-// }
-//
-// public void testProcessRuntimeSignalEvent() throws Exception {
-// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-// String str = "";
-// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
-// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
-// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
-// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
-// str += "\n";
-// str += " <header>\n";
-// str += " <variables>\n";
-// str += " <variable name=\"MyVar\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>SomeText</value>\n";
-// str += " </variable>\n";
-// str += " </variables>\n";
-// str += " </header>\n";
-// str += "\n";
-// str += " <nodes>\n";
-// str += " <start id=\"1\" name=\"Start\" />\n";
-// str += " <eventNode id=\"2\" name=\"Event\" scope=\"external\" variableName=\"MyVar\" >\n";
-// str += " <eventFilters>\n";
-// str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
-// str += " </eventFilters>\n";
-// str += " </eventNode>\n";
-// str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
-// str += " <end id=\"4\" name=\"End\" />\n";
-// str += " </nodes>\n";
-// str += "\n";
-// str += " <connections>\n";
-// str += " <connection from=\"1\" to=\"3\" />\n";
-// str += " <connection from=\"2\" to=\"3\" />\n";
-// str += " <connection from=\"3\" to=\"4\" />\n";
-// str += " </connections>\n";
-// str += "\n";
-// str += "</process>";
-//
-// kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
-// ResourceType.DRF );
-//
-// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-//
-// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-//
-// ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
-// assertEquals( ProcessInstance.STATE_ACTIVE,
-// processInstance.getState() );
-//
-// String inXml = "";
-// inXml += "<signal-event event-type='MyEvent'>";
-// inXml += " <string>MyValue</string>";
-// inXml += "</signal-event>";
-//
-// getPipelineStateful( ksession ).insert( inXml,
-// new ResultHandlerImpl() );
-//
-// assertEquals( ProcessInstance.STATE_COMPLETED,
-// processInstance.getState() );
-// assertEquals( "MyValue",
-// ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
-// }
-//
-// public void testCompleteWorkItem() {
-// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-//
-// String str = "";
-// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
-// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
-// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
-// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
-// str += "\n";
-// str += " <header>\n";
-// str += " <variables>\n";
-// str += " <variable name=\"UserName\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>John Doe</value>\n";
-// str += " </variable>\n";
-// str += " <variable name=\"Person\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"org.drools.Person\" />\n";
-// str += " </variable>\n";
-// str += " <variable name=\"MyObject\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
-// str += " </variable>\n";
-// str += " <variable name=\"Number\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.IntegerDataType\" />\n";
-// str += " </variable>\n";
-// str += " </variables>\n";
-// str += " </header>\n";
-// str += "\n";
-// str += " <nodes>\n";
-// str += " <start id=\"1\" name=\"Start\" />\n";
-// str += " <workItem id=\"2\" name=\"HumanTask\" >\n";
-// str += " <work name=\"Human Task\" >\n";
-// str += " <parameter name=\"ActorId\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>#{UserName}</value>\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Content\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>#{Person.name}</value>\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"TaskName\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>Do something</value>\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Priority\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Comment\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Attachment\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
-// str += " </parameter>\n";
-// str += " </work>\n";
-// str += " <mapping type=\"in\" from=\"MyObject\" to=\"Attachment\" />";
-// str += " <mapping type=\"in\" from=\"Person.name\" to=\"Comment\" />";
-// str += " <mapping type=\"out\" from=\"Result\" to=\"MyObject\" />";
-// str += " <mapping type=\"out\" from=\"Result.length()\" to=\"Number\" />";
-// str += " </workItem>\n";
-// str += " <end id=\"3\" name=\"End\" />\n";
-// str += " </nodes>\n";
-// str += "\n";
-// str += " <connections>\n";
-// str += " <connection from=\"1\" to=\"2\" />\n";
-// str += " <connection from=\"2\" to=\"3\" />\n";
-// str += " </connections>\n";
-// str += "\n";
-// str += "</process>";
-//
-// Reader source = new StringReader( str );
-// kbuilder.add( ResourceFactory.newReaderResource( source ),
-// ResourceType.DRF );
-//
-// Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
-// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-// kbase.addKnowledgePackages( kpkgs );
-// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-//
-// TestWorkItemHandler handler = new TestWorkItemHandler();
-// ksession.getWorkItemManager().registerWorkItemHandler( "Human Task",
-// handler );
-// Map<String, Object> parameters = new HashMap<String, Object>();
-// parameters.put( "UserName",
-// "John Doe" );
-// Person person = new Person();
-// person.setName( "John Doe" );
-// parameters.put( "Person",
-// person );
-// WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
-// parameters );
-// assertEquals( ProcessInstance.STATE_ACTIVE,
-// processInstance.getState() );
-// WorkItem workItem = handler.getWorkItem();
-// assertNotNull( workItem );
-// assertEquals( "John Doe",
-// workItem.getParameter( "ActorId" ) );
-// assertEquals( "John Doe",
-// workItem.getParameter( "Content" ) );
-// assertEquals( "John Doe",
-// workItem.getParameter( "Comment" ) );
-//
-// assertEquals( WorkItem.PENDING,
-// workItem.getState() );
-//
-// String inXml = "";
-// inXml = "<complete-work-item id='" + workItem.getId() + "' />";
-// getPipelineStateful( ksession ).insert( inXml,
-// new ResultHandlerImpl() );
-//
-// assertEquals( WorkItem.COMPLETED,
-// workItem.getState() );
-//
-// assertEquals( ProcessInstance.STATE_COMPLETED,
-// processInstance.getState() );
-//
-// parameters = new HashMap<String, Object>();
-// parameters.put( "UserName",
-// "Jane Doe" );
-// parameters.put( "MyObject",
-// "SomeString" );
-// person = new Person();
-// person.setName( "Jane Doe" );
-// parameters.put( "Person",
-// person );
-// processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
-// parameters );
-// assertEquals( ProcessInstance.STATE_ACTIVE,
-// processInstance.getState() );
-// workItem = handler.getWorkItem();
-// assertNotNull( workItem );
-// assertEquals( "Jane Doe",
-// workItem.getParameter( "ActorId" ) );
-// assertEquals( "SomeString",
-// workItem.getParameter( "Attachment" ) );
-// assertEquals( "Jane Doe",
-// workItem.getParameter( "Content" ) );
-// assertEquals( "Jane Doe",
-// workItem.getParameter( "Comment" ) );
-//
-// assertEquals( WorkItem.PENDING,
-// workItem.getState() );
-//
-// inXml = "";
-// inXml += "<complete-work-item id='" + workItem.getId() + "' >";
-// inXml += " <result identifier='Result'>";
-// inXml += " <string>SomeOtherString</string>";
-// inXml += " </result>";
-// inXml += "</complete-work-item>";
-// getPipelineStateful( ksession ).insert( inXml,
-// new ResultHandlerImpl() );
-//
-// assertEquals( WorkItem.COMPLETED,
-// workItem.getState() );
-//
-// assertEquals( ProcessInstance.STATE_COMPLETED,
-// processInstance.getState() );
-// assertEquals( "SomeOtherString",
-// processInstance.getVariable( "MyObject" ) );
-// assertEquals( 15,
-// processInstance.getVariable( "Number" ) );
-// }
-//
-// public void testAbortWorkItem() {
-// KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
-//
-// String str = "";
-// str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
-// str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
-// str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
-// str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
-// str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
-// str += "\n";
-// str += " <header>\n";
-// str += " <variables>\n";
-// str += " <variable name=\"UserName\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>John Doe</value>\n";
-// str += " </variable>\n";
-// str += " <variable name=\"Person\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"org.drools.Person\" />\n";
-// str += " </variable>\n";
-// str += " <variable name=\"MyObject\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
-// str += " </variable>\n";
-// str += " <variable name=\"Number\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.IntegerDataType\" />\n";
-// str += " </variable>\n";
-// str += " </variables>\n";
-// str += " </header>\n";
-// str += "\n";
-// str += " <nodes>\n";
-// str += " <start id=\"1\" name=\"Start\" />\n";
-// str += " <workItem id=\"2\" name=\"HumanTask\" >\n";
-// str += " <work name=\"Human Task\" >\n";
-// str += " <parameter name=\"ActorId\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>#{UserName}</value>\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Content\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>#{Person.name}</value>\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"TaskName\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " <value>Do something</value>\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Priority\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Comment\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
-// str += " </parameter>\n";
-// str += " <parameter name=\"Attachment\" >\n";
-// str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
-// str += " </parameter>\n";
-// str += " </work>\n";
-// str += " <mapping type=\"in\" from=\"MyObject\" to=\"Attachment\" />";
-// str += " <mapping type=\"in\" from=\"Person.name\" to=\"Comment\" />";
-// str += " <mapping type=\"out\" from=\"Result\" to=\"MyObject\" />";
-// str += " <mapping type=\"out\" from=\"Result.length()\" to=\"Number\" />";
-// str += " </workItem>\n";
-// str += " <end id=\"3\" name=\"End\" />\n";
-// str += " </nodes>\n";
-// str += "\n";
-// str += " <connections>\n";
-// str += " <connection from=\"1\" to=\"2\" />\n";
-// str += " <connection from=\"2\" to=\"3\" />\n";
-// str += " </connections>\n";
-// str += "\n";
-// str += "</process>";
-//
-// Reader source = new StringReader( str );
-// kbuilder.add( ResourceFactory.newReaderResource( source ),
-// ResourceType.DRF );
-//
-// Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
-// KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
-// kbase.addKnowledgePackages( kpkgs );
-// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
-//
-// TestWorkItemHandler handler = new TestWorkItemHandler();
-// ksession.getWorkItemManager().registerWorkItemHandler( "Human Task",
-// handler );
-// Map<String, Object> parameters = new HashMap<String, Object>();
-// parameters.put( "UserName",
-// "John Doe" );
-// Person person = new Person();
-// person.setName( "John Doe" );
-// parameters.put( "Person",
-// person );
-// WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
-// parameters );
-// assertEquals( ProcessInstance.STATE_ACTIVE,
-// processInstance.getState() );
-// WorkItem workItem = handler.getWorkItem();
-// assertNotNull( workItem );
-//
-// assertEquals( WorkItem.PENDING,
-// workItem.getState() );
-//
-// String inXml = "<abort-work-item id='" + workItem.getId() + "' />";
-// getPipelineStateful( ksession ).insert( inXml,
-// new ResultHandlerImpl() );
-//
-// assertEquals( WorkItem.ABORTED,
-// workItem.getState() );
-// }
-//
-// public static class TestWorkItemHandler
-// implements
-// WorkItemHandler {
-// private WorkItem workItem;
-//
-// public void executeWorkItem(WorkItem workItem,
-// WorkItemManager manager) {
-// this.workItem = workItem;
-// }
-//
-// public void abortWorkItem(WorkItem workItem,
-// WorkItemManager manager) {
-// }
-//
-// public WorkItem getWorkItem() {
-// return workItem;
-// }
-// }
-//
-// public void testInsertObjectWithDeclaredFact() throws Exception {
-// String str = "";
-// str += "package org.foo \n";
-// str += "declare Whee \n\ttype: String\n\tprice: Integer\n\toldPrice: Integer\nend\n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Whee() \n";
-// str += " \n";
-// str += " then \n";
-// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <insert out-identifier='outStilton'>";
-// inXml += " <org.foo.Whee>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>25</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.foo.Whee>";
-// inXml += " </insert>";
-// inXml += " <fire-all-rules />";
-// inXml += "</batch-execution>";
-//
-// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipelineStateful( ksession ).insert( inXml,
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// ClassLoader cl = ((InternalRuleBase) ((StatefulKnowledgeSessionImpl) ksession).getRuleBase()).getRootClassLoader();
-// XStream xstream = BatchExecutionHelper.newXStreamMarshaller();
-// xstream.setClassLoader( cl );
-// FactHandle factHandle = (FactHandle) ((ExecutionResults) xstream.fromXML( outXml )).getFactHandle( "outStilton" );
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier=\"outStilton\">\n";
-// expectedXml += " <org.foo.Whee>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " <price>30</price>\n";
-// expectedXml += " </org.foo.Whee>\n";
-// expectedXml += " </result>\n";
-// expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + factHandle.toExternalForm() + "\" /> \n";
-// expectedXml += "</execution-results>\n";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-//
-// }
-//
-// public void testInsertObjectStateful() throws Exception {
-// String str = "";
-// str += "package org.foo \n";
-// str += "declare Whee \n\ttype: String\n\tprice: Integer\n\toldPrice: Integer\nend\n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Whee(price < 30) \n";
-// str += " \n";
-// str += " then \n";
-// str += " $c.setPrice( $c.getPrice() + 5 ); \n update($c);\n";
-// str += "end\n";
-// str += "query results\n";
-// str += " w: Whee(price == 30)";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <insert>";
-// inXml += " <org.foo.Whee>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>25</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.foo.Whee>";
-// inXml += " </insert>";
-// inXml += "</batch-execution>";
-//
-// StatefulKnowledgeSession ksession = getSessionStateful( ResourceFactory.newByteArrayResource( str.getBytes() ) );
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipelineStateful( ksession ).insert( inXml,
-// resultHandler );
-//
-// getPipelineStateful( ksession ).insert( "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
-// resultHandler );
-// String outXml = (String) resultHandler.getObject();
-//
-// //we have not fired the rules yet
-// assertFalse( outXml.indexOf( "<price>30</price>" ) > -1 );
-//
-// //lets send a command to execute them then
-// inXml = "";
-// inXml += "<batch-execution>";
-// inXml += " <fire-all-rules max='100'/>";
-// inXml += "</batch-execution>";
-// getPipelineStateful( ksession ).insert( inXml,
-// resultHandler );
-// //ksession.fireAllRules();
-//
-// //ok lets try that again...
-// getPipelineStateful( ksession ).insert( "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>",
-// resultHandler );
-// outXml = (String) resultHandler.getObject();
-// assertTrue( outXml.indexOf( "<price>30</price>" ) > -1 );
-// }
-//
-// public void testVsmPipeline() throws Exception {
-// String str = "";
-// str += "package org.drools \n";
-// str += "import org.drools.Cheese \n";
-// str += "rule rule1 \n";
-// str += " when \n";
-// str += " $c : Cheese() \n";
-// str += " \n";
-// str += " then \n";
-// str += " $c.setPrice( $c.getPrice() + 5 ); \n";
-// str += "end\n";
-//
-// String inXml = "";
-// inXml += "<batch-execution lookup=\"ksession1\" >";
-// inXml += " <insert out-identifier='outStilton'>";
-// inXml += " <org.drools.Cheese>";
-// inXml += " <type>stilton</type>";
-// inXml += " <price>25</price>";
-// inXml += " <oldPrice>0</oldPrice>";
-// inXml += " </org.drools.Cheese>";
-// inXml += " </insert>";
-// inXml += " <fire-all-rules />";
-// inXml += "</batch-execution>";
-//
-// LocalConnection connection = new LocalConnection();
-// ExecutionNode node = connection.getExecutionNode(null);
-//
-// StatefulKnowledgeSession ksession = getExecutionNodeSessionStateful(node, ResourceFactory.newByteArrayResource( str.getBytes() ) );
-//
-// node.get(DirectoryLookupFactoryService.class).register("ksession1", ksession);
-//
-// XStreamResolverStrategy xstreamStrategy = new XStreamResolverStrategy() {
-// public XStream lookup(String name) {
-// return BatchExecutionHelper.newXStreamMarshaller();
-// }
-// };
-//
-// ResultHandlerImpl resultHandler = new ResultHandlerImpl();
-// getPipelineSessionStateful(node, xstreamStrategy).insert(inXml, resultHandler);
-// String outXml = (String) resultHandler.getObject();
-//
-// ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
-// Cheese stilton = (Cheese) result.getValue( "outStilton" );
-// assertEquals( 30,
-// stilton.getPrice() );
-//
-// FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
-// stilton = (Cheese) ksession.getObject( factHandle );
-// assertEquals( 30,
-// stilton.getPrice() );
-//
-// String expectedXml = "";
-// expectedXml += "<execution-results>\n";
-// expectedXml += " <result identifier=\"outStilton\">\n";
-// expectedXml += " <org.drools.Cheese>\n";
-// expectedXml += " <type>stilton</type>\n";
-// expectedXml += " <oldPrice>0</oldPrice>\n";
-// expectedXml += " <price>30</price>\n";
-// expectedXml += " </org.drools.Cheese>\n";
-// expectedXml += " </result>\n";
-// expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n";
-// expectedXml += "</execution-results>\n";
-//
-// assertXMLEqual( expectedXml,
-// outXml );
-// }
-//
-// private Pipeline getPipeline(StatelessKnowledgeSession ksession) {
-// Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-//
-// Action assignResult = PipelineFactory.newAssignObjectAsResult();
-// assignResult.setReceiver( executeResultHandler );
-//
-// Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
-// outTransformer.setReceiver( assignResult );
-//
-// KnowledgeRuntimeCommand batchExecution = PipelineFactory.newCommandExecutor();
-// batchExecution.setReceiver( outTransformer );
-//
-// Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
-// inTransformer.setReceiver( batchExecution );
-//
-// Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
-// pipeline.setReceiver( inTransformer );
-//
-// return pipeline;
-// }
-//
-// private Pipeline getPipelineSessionStateful(ExecutionNode node, XStreamResolverStrategy xstreamResolverStrategy) {
-// Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-//
-// Action assignResult = PipelineFactory.newAssignObjectAsResult();
-// assignResult.setReceiver( executeResultHandler );
-//
-// //Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
-// Transformer outTransformer = new XStreamToXmlGridTransformer();
-// outTransformer.setReceiver( assignResult );
-//
-// KnowledgeRuntimeCommand batchExecution = PipelineFactory.newCommandExecutor();
-// batchExecution.setReceiver( outTransformer );
-//
-// //Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
-// Transformer inTransformer = new XStreamFromXmlGridTransformer( xstreamResolverStrategy );
-// inTransformer.setReceiver( batchExecution );
-//
-//// Transformer domTransformer = new ToXmlNodeTransformer();
-//// domTransformer.setReceiver( inTransformer );
-//
-// //Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-// Pipeline pipeline = new ExecutionNodePipelineImpl( node );
-//
-// pipeline.setReceiver( inTransformer );
-//
-// return pipeline;
-// }
-//
-// private Pipeline getPipelineStateful(StatefulKnowledgeSession ksession) {
-// Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-//
-// Action assignResult = PipelineFactory.newAssignObjectAsResult();
-// assignResult.setReceiver( executeResultHandler );
-//
-// Transformer outTransformer = PipelineFactory.newXStreamToXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
-// outTransformer.setReceiver( assignResult );
-//
-// KnowledgeRuntimeCommand batchExecution = PipelineFactory.newCommandExecutor();
-// batchExecution.setReceiver( outTransformer );
-//
-// Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
-// inTransformer.setReceiver( batchExecution );
-//
-// Pipeline pipeline = PipelineFactory.newStatefulKnowledgeSessionPipeline( ksession );
-// pipeline.setReceiver( inTransformer );
-//
-// return pipeline;
-// }
-//
-// public static class ResultHandlerImpl
-// implements
-// ResultHandler {
-// Object object;
-//
-// public void handleResult(Object object) {
-// this.object = object;
-// }
-//
-// public Object getObject() {
-// return this.object;
-// }
-// }
-//
- private StatelessKnowledgeSession getSession2(Resource resource) throws Exception {
+
+ public void testInsertElementsWithReturnObjects() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += " list.add( $c );";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <set-global identifier='list' out='true' >";
+ inXml += " <list/>";
+ inXml += " </set-global>";
+ inXml += " <insert-elements out-identifier='myfacts' return-objects='true'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>30</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert-elements>";
+ inXml += " <fire-all-rules/>";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ Collection< ? extends FactHandle> factHandles = ksession.getFactHandles();
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier='list'>\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>35</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+
+ expectedXml += " <result identifier=\"myfacts\">\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <org.drools.Cheese reference=\"../../../result/list/org.drools.Cheese[2]\"/>\n";
+ expectedXml += " <org.drools.Cheese reference=\"../../../result/list/org.drools.Cheese\"/>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <fact-handles identifier=\"myfacts\">\n";
+ for ( FactHandle factHandle : factHandles ) {
+ if ( ((Cheese) ksession.getObject( factHandle )).getPrice() == 30 ) {
+ expectedXml += " <fact-handle external-form=\"" + factHandle.toExternalForm() + "\"/>\n";
+ }
+ }
+
+ for ( FactHandle factHandle : factHandles ) {
+ if ( ((Cheese) ksession.getObject( factHandle )).getPrice() == 35 ) {
+ expectedXml += " <fact-handle external-form=\"" + factHandle.toExternalForm() + "\"/>\n";
+ }
+ }
+ expectedXml += " </fact-handles>\n";
+
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+
+ List list = (List) result.getValue( "list" );
+ Cheese stilton25 = new Cheese( "stilton",
+ 30 );
+ Cheese stilton30 = new Cheese( "stilton",
+ 35 );
+
+ Set expectedList = new HashSet();
+ expectedList.add( stilton25 );
+ expectedList.add( stilton30 );
+
+ assertEquals( expectedList,
+ new HashSet( list ) );
+ }
+
+ public void testSetGlobal() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "global java.util.List list1 \n";
+ str += "global java.util.List list2 \n";
+ str += "global java.util.List list3 \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( 30 ); \n";
+ str += " list1.add( $c ); \n";
+ str += " list2.add( $c ); \n";
+ str += " list3.add( $c ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <set-global identifier='list1'>";
+ inXml += " <list/>";
+ inXml += " </set-global>";
+ inXml += " <set-global identifier='list2' out='true'>";
+ inXml += " <list/>";
+ inXml += " </set-global>";
+ inXml += " <set-global identifier='list3' out-identifier='outList3'>";
+ inXml += " <list/>";
+ inXml += " </set-global>";
+ inXml += " <insert>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>5</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += "</batch-execution>";
+
+ StatelessKnowledgeSession ksession = getStatelessKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier='list2'>\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <result identifier='outList3'>\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <org.drools.Cheese reference='../../../result/list/org.drools.Cheese'/>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+ Cheese stilton = new Cheese( "stilton",
+ 30 );
+
+ assertNull( result.getValue( "list1" ) );
+
+ List list2 = (List) result.getValue( "list2" );
+ assertEquals( 1,
+ list2.size() );
+ assertEquals( stilton,
+ list2.get( 0 ) );
+
+ List list3 = (List) result.getValue( "outList3" );
+ assertEquals( 1,
+ list3.size() );
+ assertEquals( stilton,
+ list3.get( 0 ) );
+ }
+
+ public void testGetGlobal() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " list.add( $c ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <set-global identifier='list'>";
+ inXml += " <list/>";
+ inXml += " </set-global>";
+ inXml += " <insert>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <get-global identifier='list' out-identifier='out-list'/>";
+ inXml += "</batch-execution>";
+
+ StatelessKnowledgeSession ksession = getStatelessKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier=\"out-list\">\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>25</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+ }
+
+ public void testGetObjects() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert-elements>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>30</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert-elements>";
+ inXml += " <get-objects out-identifier='list' />";
+ inXml += "</batch-execution>";
+
+ StatelessKnowledgeSession ksession = getStatelessKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>";
+ expectedXml += " <result identifier='list'>";
+ expectedXml += " <list>";
+ expectedXml += " <org.drools.Cheese>";
+ expectedXml += " <type>stilton</type>";
+ expectedXml += " <price>30</price>";
+ expectedXml += " <oldPrice>0</oldPrice>";
+ expectedXml += " </org.drools.Cheese>";
+ expectedXml += " <org.drools.Cheese>";
+ expectedXml += " <type>stilton</type>";
+ expectedXml += " <price>35</price>";
+ expectedXml += " <oldPrice>0</oldPrice>";
+ expectedXml += " </org.drools.Cheese>";
+ expectedXml += " </list>";
+ expectedXml += " </result>";
+ expectedXml += "</execution-results>";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+ List list = (List) result.getValue( "list" );
+ Cheese stilton25 = new Cheese( "stilton",
+ 30 );
+ Cheese stilton30 = new Cheese( "stilton",
+ 35 );
+
+ Set expectedList = new HashSet();
+ expectedList.add( stilton25 );
+ expectedList.add( stilton30 );
+
+ assertEquals( expectedList,
+ new HashSet( list ) );
+ }
+
+ public void testQuery() throws Exception {
+ String str = "";
+ str += "package org.drools.test \n";
+ str += "import org.drools.Cheese \n";
+ str += "query cheeses \n";
+ str += " stilton : Cheese(type == 'stilton') \n";
+ str += " cheddar : Cheese(type == 'cheddar', price == stilton.price) \n";
+ str += "end\n";
+ str += "query cheesesWithParams(String a, String b) \n";
+ str += " stilton : Cheese(type == a) \n";
+ str += " cheddar : Cheese(type == b, price == stilton.price) \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>1</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <insert>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>2</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <insert>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>cheddar</type>";
+ inXml += " <price>1</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <insert>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>cheddar</type>";
+ inXml += " <price>2</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <query out-identifier='cheeses' name='cheeses'/>";
+ inXml += " <query out-identifier='cheeses2' name='cheesesWithParams'>";
+ inXml += " <string>stilton</string>";
+ inXml += " <string>cheddar</string>";
+ inXml += " </query>";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ Iterator<QueryResultsRow> it1 = ksession.getQueryResults( "cheeses" ).iterator();
+ Iterator<QueryResultsRow> it2 = ksession.getQueryResults( "cheesesWithParams",
+ new String[]{"stilton", "cheddar"} ).iterator();
+ QueryResultsRow row = null;
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier='cheeses'>\n";
+ expectedXml += " <query-results>\n";
+ expectedXml += " <identifiers>\n";
+ expectedXml += " <identifier>stilton</identifier>\n";
+ expectedXml += " <identifier>cheddar</identifier>\n";
+ expectedXml += " </identifiers>\n";
+ expectedXml += " <row>\n";
+ row = it1.next();
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>1</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>cheddar</type>\n";
+ expectedXml += " <price>1</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+ expectedXml += " </row>\n";
+ expectedXml += " <row>\n";
+ row = it1.next();
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>2</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>cheddar</type>\n";
+ expectedXml += " <price>2</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+ expectedXml += " </row>\n";
+ expectedXml += " </query-results>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <result identifier='cheeses2'>\n";
+ expectedXml += " <query-results>\n";
+ expectedXml += " <identifiers>\n";
+ expectedXml += " <identifier>stilton</identifier>\n";
+ expectedXml += " <identifier>cheddar</identifier>\n";
+ expectedXml += " </identifiers>\n";
+ expectedXml += " <row>\n";
+ row = it2.next();
+ expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese\"/>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+ expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row/org.drools.Cheese[2]\"/>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+ expectedXml += " </row>\n";
+ expectedXml += " <row>\n";
+ row = it2.next();
+ expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese\"/>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "stilton" ).toExternalForm() + "' />";
+ expectedXml += " <org.drools.Cheese reference=\"../../../../result/query-results/row[2]/org.drools.Cheese[2]\"/>\n";
+ expectedXml += " <fact-handle external-form='" + row.getFactHandle( "cheddar" ).toExternalForm() + "' />";
+ expectedXml += " </row>\n";
+ expectedXml += " </query-results>\n";
+ expectedXml += " </result>\n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ ExecutionResults batchResult = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+
+ Cheese stilton1 = new Cheese( "stilton",
+ 1 );
+ Cheese cheddar1 = new Cheese( "cheddar",
+ 1 );
+ Cheese stilton2 = new Cheese( "stilton",
+ 2 );
+ Cheese cheddar2 = new Cheese( "cheddar",
+ 2 );
+
+ Set set = new HashSet();
+ List list = new ArrayList();
+ list.add( stilton1 );
+ list.add( cheddar1 );
+ set.add( list );
+
+ list = new ArrayList();
+ list.add( stilton2 );
+ list.add( cheddar2 );
+ set.add( list );
+
+ org.drools.runtime.rule.QueryResults results = (org.drools.runtime.rule.QueryResults) batchResult.getValue( "cheeses" );
+ assertEquals( 2,
+ results.size() );
+ assertEquals( 2,
+ results.getIdentifiers().length );
+ Set newSet = new HashSet();
+ for ( org.drools.runtime.rule.QueryResultsRow result : results ) {
+ list = new ArrayList();
+ list.add( result.get( "stilton" ) );
+ list.add( result.get( "cheddar" ) );
+ newSet.add( list );
+ }
+ assertEquals( set,
+ newSet );
+ }
+
+ public void testManualFireAllRules() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += " list.add( $c );";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <set-global identifier='list' out='true'>";
+ inXml += " <list/>";
+ inXml += " </set-global>";
+ inXml += " <insert-elements>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>30</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert-elements>";
+ inXml += " <fire-all-rules />";
+ inXml += " <insert out-identifier='outBrie'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>brie</type>";
+ inXml += " <price>10</price>";
+ inXml += " <oldPrice>5</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += "</batch-execution>";
+
+ StatelessKnowledgeSession ksession = getStatelessKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ FactHandle factHandle = (FactHandle) ((ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml )).getFactHandle( "outBrie" );
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier='list'>\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>35</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <result identifier='outBrie'>\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>brie</type>\n";
+ expectedXml += " <price>10</price>\n";
+ expectedXml += " <oldPrice>5</oldPrice>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <fact-handle identifier=\"outBrie\" external-form=\"" + factHandle.toExternalForm() + "\" /> \n";
+ expectedXml += "</execution-results>\n";
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ ExecutionResults result = (ExecutionResults) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+
+ // brie should not have been added to the list
+ List list = (List) result.getValue( "list" );
+ Cheese stilton25 = new Cheese( "stilton",
+ 30 );
+ Cheese stilton30 = new Cheese( "stilton",
+ 35 );
+
+ Set expectedList = new HashSet();
+ expectedList.add( stilton25 );
+ expectedList.add( stilton30 );
+
+ assertEquals( expectedList,
+ new HashSet( list ) );
+
+ // brie should not have changed
+ Cheese brie10 = new Cheese( "brie",
+ 10 );
+ brie10.setOldPrice( 5 );
+ assertEquals( brie10,
+ result.getValue( "outBrie" ) );
+ }
+
+ public void testProcess() throws SAXException,
+ IOException {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <imports>\n";
+ str += " <import name=\"org.drools.TestVariable\" />\n";
+ str += " </imports>\n";
+ str += " <globals>\n";
+ str += " <global identifier=\"list\" type=\"java.util.List\" />\n";
+ str += " </globals>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"person\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"TestVariable\" />\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <actionNode id=\"2\" name=\"MyActionNode\" >\n";
+ str += " <action type=\"expression\" dialect=\"mvel\" >System.out.println(\"Triggered\");\n";
+ str += "list.add(person.name);\n";
+ str += "</action>\n";
+ str += " </actionNode>\n";
+ str += " <end id=\"3\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"2\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " </connections>\n" + "\n";
+ str += "</process>";
+
+ Reader source = new StringReader( str );
+ kbuilder.add( ResourceFactory.newReaderResource( source ),
+ ResourceType.DRF );
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+ setExec( ksession );
+ List<String> list = new ArrayList<String>();
+ ksession.setGlobal( "list",
+ list );
+ TestVariable person = new TestVariable( "John Doe" );
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <start-process processId='org.drools.actions'>";
+ inXml += " <parameter identifier='person'>";
+ inXml += " <org.drools.TestVariable>";
+ inXml += " <name>John Doe</name>";
+ inXml += " </org.drools.TestVariable>";
+ inXml += " </parameter>";
+ inXml += " </start-process>";
+ inXml += " <get-global identifier='list' out-identifier='out-list'/>";
+ inXml += "</batch-execution>";
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertEquals( 1,
+ list.size() );
+ assertEquals( "John Doe",
+ list.get( 0 ) );
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier=\"out-list\">\n";
+ expectedXml += " <list>\n";
+ expectedXml += " <string>John Doe</string>\n";
+ expectedXml += " </list>\n";
+ expectedXml += " </result>\n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+ }
+
+ public void testProcessInstanceSignalEvent() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"MyVar\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>SomeText</value>\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <eventNode id=\"2\" name=\"Event\" variableName=\"MyVar\" >\n";
+ str += " <eventFilters>\n";
+ str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+ str += " </eventFilters>\n";
+ str += " </eventNode>\n";
+ str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+ str += " <end id=\"4\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"3\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " <connection from=\"3\" to=\"4\" />\n";
+ str += " </connections>\n";
+ str += "\n";
+ str += "</process>";
+
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRF );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+
+ String inXml = "";
+ inXml += "<signal-event process-instance-id= '" + processInstance.getId() + "' event-type='MyEvent'>";
+ inXml += " <string>MyValue</string>";
+ inXml += "</signal-event>";
+
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertEquals( ProcessInstance.STATE_COMPLETED,
+ processInstance.getState() );
+ assertEquals( "MyValue",
+ ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
+ }
+
+ public void testProcessRuntimeSignalEvent() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.event\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"MyVar\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>SomeText</value>\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <eventNode id=\"2\" name=\"Event\" scope=\"external\" variableName=\"MyVar\" >\n";
+ str += " <eventFilters>\n";
+ str += " <eventFilter type=\"eventType\" eventType=\"MyEvent\" />\n";
+ str += " </eventFilters>\n";
+ str += " </eventNode>\n";
+ str += " <join id=\"3\" name=\"Join\" type=\"1\" />\n";
+ str += " <end id=\"4\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"3\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " <connection from=\"3\" to=\"4\" />\n";
+ str += " </connections>\n";
+ str += "\n";
+ str += "</process>";
+
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRF );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ ProcessInstance processInstance = ksession.startProcess( "org.drools.event" );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+
+ String inXml = "";
+ inXml += "<signal-event event-type='MyEvent'>";
+ inXml += " <string>MyValue</string>";
+ inXml += "</signal-event>";
+
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertEquals( ProcessInstance.STATE_COMPLETED,
+ processInstance.getState() );
+ assertEquals( "MyValue",
+ ((VariableScopeInstance) ((org.drools.process.instance.ProcessInstance) processInstance).getContextInstance( VariableScope.VARIABLE_SCOPE )).getVariable( "MyVar" ) );
+ }
+
+ public void testCompleteWorkItem() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"UserName\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>John Doe</value>\n";
+ str += " </variable>\n";
+ str += " <variable name=\"Person\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"org.drools.Person\" />\n";
+ str += " </variable>\n";
+ str += " <variable name=\"MyObject\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+ str += " </variable>\n";
+ str += " <variable name=\"Number\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.IntegerDataType\" />\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <workItem id=\"2\" name=\"HumanTask\" >\n";
+ str += " <work name=\"Human Task\" >\n";
+ str += " <parameter name=\"ActorId\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>#{UserName}</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Content\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>#{Person.name}</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"TaskName\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>Do something</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Priority\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Comment\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Attachment\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+ str += " </parameter>\n";
+ str += " </work>\n";
+ str += " <mapping type=\"in\" from=\"MyObject\" to=\"Attachment\" />";
+ str += " <mapping type=\"in\" from=\"Person.name\" to=\"Comment\" />";
+ str += " <mapping type=\"out\" from=\"Result\" to=\"MyObject\" />";
+ str += " <mapping type=\"out\" from=\"Result.length()\" to=\"Number\" />";
+ str += " </workItem>\n";
+ str += " <end id=\"3\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"2\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " </connections>\n";
+ str += "\n";
+ str += "</process>";
+
+ Reader source = new StringReader( str );
+ kbuilder.add( ResourceFactory.newReaderResource( source ),
+ ResourceType.DRF );
+
+ Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kpkgs );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ TestWorkItemHandler handler = new TestWorkItemHandler();
+ ksession.getWorkItemManager().registerWorkItemHandler( "Human Task",
+ handler );
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put( "UserName",
+ "John Doe" );
+ Person person = new Person();
+ person.setName( "John Doe" );
+ parameters.put( "Person",
+ person );
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
+ parameters );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ assertEquals( "John Doe",
+ workItem.getParameter( "ActorId" ) );
+ assertEquals( "John Doe",
+ workItem.getParameter( "Content" ) );
+ assertEquals( "John Doe",
+ workItem.getParameter( "Comment" ) );
+
+ assertEquals( WorkItem.PENDING,
+ workItem.getState() );
+
+ String inXml = "";
+ inXml = "<complete-work-item id='" + workItem.getId() + "' />";
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertEquals( WorkItem.COMPLETED,
+ workItem.getState() );
+
+ assertEquals( ProcessInstance.STATE_COMPLETED,
+ processInstance.getState() );
+
+ parameters = new HashMap<String, Object>();
+ parameters.put( "UserName",
+ "Jane Doe" );
+ parameters.put( "MyObject",
+ "SomeString" );
+ person = new Person();
+ person.setName( "Jane Doe" );
+ parameters.put( "Person",
+ person );
+ processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
+ parameters );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+ workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+ assertEquals( "Jane Doe",
+ workItem.getParameter( "ActorId" ) );
+ assertEquals( "SomeString",
+ workItem.getParameter( "Attachment" ) );
+ assertEquals( "Jane Doe",
+ workItem.getParameter( "Content" ) );
+ assertEquals( "Jane Doe",
+ workItem.getParameter( "Comment" ) );
+
+ assertEquals( WorkItem.PENDING,
+ workItem.getState() );
+
+ inXml = "";
+ inXml += "<complete-work-item id='" + workItem.getId() + "' >";
+ inXml += " <result identifier='Result'>";
+ inXml += " <string>SomeOtherString</string>";
+ inXml += " </result>";
+ inXml += "</complete-work-item>";
+
+ outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertEquals( WorkItem.COMPLETED,
+ workItem.getState() );
+
+ assertEquals( ProcessInstance.STATE_COMPLETED,
+ processInstance.getState() );
+ assertEquals( "SomeOtherString",
+ processInstance.getVariable( "MyObject" ) );
+ assertEquals( 15,
+ processInstance.getVariable( "Number" ) );
+ }
+
+ public void testAbortWorkItem() {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+ String str = "";
+ str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
+ str += "<process xmlns=\"http://drools.org/drools-5.0/process\"\n";
+ str += " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"\n";
+ str += " xs:schemaLocation=\"http://drools.org/drools-5.0/process drools-processes-5.0.xsd\"\n";
+ str += " type=\"RuleFlow\" name=\"flow\" id=\"org.drools.actions\" package-name=\"org.drools\" version=\"1\" >\n";
+ str += "\n";
+ str += " <header>\n";
+ str += " <variables>\n";
+ str += " <variable name=\"UserName\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>John Doe</value>\n";
+ str += " </variable>\n";
+ str += " <variable name=\"Person\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"org.drools.Person\" />\n";
+ str += " </variable>\n";
+ str += " <variable name=\"MyObject\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+ str += " </variable>\n";
+ str += " <variable name=\"Number\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.IntegerDataType\" />\n";
+ str += " </variable>\n";
+ str += " </variables>\n";
+ str += " </header>\n";
+ str += "\n";
+ str += " <nodes>\n";
+ str += " <start id=\"1\" name=\"Start\" />\n";
+ str += " <workItem id=\"2\" name=\"HumanTask\" >\n";
+ str += " <work name=\"Human Task\" >\n";
+ str += " <parameter name=\"ActorId\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>#{UserName}</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Content\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>#{Person.name}</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"TaskName\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " <value>Do something</value>\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Priority\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Comment\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.StringDataType\" />\n";
+ str += " </parameter>\n";
+ str += " <parameter name=\"Attachment\" >\n";
+ str += " <type name=\"org.drools.process.core.datatype.impl.type.ObjectDataType\" className=\"java.lang.Object\" />\n";
+ str += " </parameter>\n";
+ str += " </work>\n";
+ str += " <mapping type=\"in\" from=\"MyObject\" to=\"Attachment\" />";
+ str += " <mapping type=\"in\" from=\"Person.name\" to=\"Comment\" />";
+ str += " <mapping type=\"out\" from=\"Result\" to=\"MyObject\" />";
+ str += " <mapping type=\"out\" from=\"Result.length()\" to=\"Number\" />";
+ str += " </workItem>\n";
+ str += " <end id=\"3\" name=\"End\" />\n";
+ str += " </nodes>\n";
+ str += "\n";
+ str += " <connections>\n";
+ str += " <connection from=\"1\" to=\"2\" />\n";
+ str += " <connection from=\"2\" to=\"3\" />\n";
+ str += " </connections>\n";
+ str += "\n";
+ str += "</process>";
+
+ Reader source = new StringReader( str );
+ kbuilder.add( ResourceFactory.newReaderResource( source ),
+ ResourceType.DRF );
+
+ Collection<KnowledgePackage> kpkgs = kbuilder.getKnowledgePackages();
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kpkgs );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ TestWorkItemHandler handler = new TestWorkItemHandler();
+ ksession.getWorkItemManager().registerWorkItemHandler( "Human Task",
+ handler );
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put( "UserName",
+ "John Doe" );
+ Person person = new Person();
+ person.setName( "John Doe" );
+ parameters.put( "Person",
+ person );
+ WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess( "org.drools.actions",
+ parameters );
+ assertEquals( ProcessInstance.STATE_ACTIVE,
+ processInstance.getState() );
+ WorkItem workItem = handler.getWorkItem();
+ assertNotNull( workItem );
+
+ assertEquals( WorkItem.PENDING,
+ workItem.getState() );
+
+ String inXml = "<abort-work-item id='" + workItem.getId() + "' />";
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ assertEquals( WorkItem.ABORTED,
+ workItem.getState() );
+ }
+
+ public static class TestWorkItemHandler
+ implements
+ WorkItemHandler {
+ private WorkItem workItem;
+
+ public void executeWorkItem(WorkItem workItem,
+ WorkItemManager manager) {
+ this.workItem = workItem;
+ }
+
+ public void abortWorkItem(WorkItem workItem,
+ WorkItemManager manager) {
+ }
+
+ public WorkItem getWorkItem() {
+ return workItem;
+ }
+ }
+
+ public void testInsertObjectWithDeclaredFact() throws Exception {
+ String str = "";
+ str += "package org.foo \n";
+ str += "declare Whee \n\ttype: String\n\tprice: Integer\n\toldPrice: Integer\nend\n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Whee() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert out-identifier='outStilton'>";
+ inXml += " <org.foo.Whee>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.foo.Whee>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+
+ ClassLoader cl = ((InternalRuleBase) ((StatefulKnowledgeSessionImpl) ksession).getRuleBase()).getRootClassLoader();
+ XStream xstream = BatchExecutionHelper.newXStreamMarshaller();
+ xstream.setClassLoader( cl );
+ FactHandle factHandle = (FactHandle) ((ExecutionResults) xstream.fromXML( outXml )).getFactHandle( "outStilton" );
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier=\"outStilton\">\n";
+ expectedXml += " <org.foo.Whee>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " </org.foo.Whee>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + factHandle.toExternalForm() + "\" /> \n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+
+ }
+
+ public void testInsertObjectStateful() throws Exception {
+ String str = "";
+ str += "package org.foo \n";
+ str += "declare Whee \n\ttype: String\n\tprice: Integer\n\toldPrice: Integer\nend\n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Whee(price < 30) \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n update($c);\n";
+ str += "end\n";
+ str += "query results\n";
+ str += " w: Whee(price == 30)";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <insert>";
+ inXml += " <org.foo.Whee>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.foo.Whee>";
+ inXml += " </insert>";
+ inXml += "</batch-execution>";
+
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:exec", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+
+ outXml = template.requestBody("direct:exec", "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>", String.class);
+
+ //we have not fired the rules yet
+ assertFalse( outXml.indexOf( "<price>30</price>" ) > -1 );
+
+ //lets send a command to execute them then
+ inXml = "";
+ inXml += "<batch-execution>";
+ inXml += " <fire-all-rules max='100'/>";
+ inXml += "</batch-execution>";
+ template.requestBody("direct:exec", inXml, String.class);
+ //ksession.fireAllRules();
+
+ //ok lets try that again...
+ outXml = template.requestBody("direct:exec", "<batch-execution><query out-identifier='matchingthings' name='results'/></batch-execution>", String.class);
+ assertTrue( outXml.indexOf( "<price>30</price>" ) > -1 );
+ }
+
+ public void testExecutionNodeLookup() throws Exception {
+ String str = "";
+ str += "package org.drools \n";
+ str += "import org.drools.Cheese \n";
+ str += "rule rule1 \n";
+ str += " when \n";
+ str += " $c : Cheese() \n";
+ str += " \n";
+ str += " then \n";
+ str += " $c.setPrice( $c.getPrice() + 5 ); \n";
+ str += "end\n";
+
+ String inXml = "";
+ inXml += "<batch-execution lookup=\"ksession1\" >";
+ inXml += " <insert out-identifier='outStilton'>";
+ inXml += " <org.drools.Cheese>";
+ inXml += " <type>stilton</type>";
+ inXml += " <price>25</price>";
+ inXml += " <oldPrice>0</oldPrice>";
+ inXml += " </org.drools.Cheese>";
+ inXml += " </insert>";
+ inXml += " <fire-all-rules />";
+ inXml += "</batch-execution>";
+
+
+ StatefulKnowledgeSession ksession = getStatefulKnowledgeSession( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ setExec( ksession );
+
+ String outXml = template.requestBody("direct:execWithLookup", inXml, String.class);
+ ExecutionResults result = template.requestBody("direct:unmarshal", outXml, ExecutionResults.class);
+ Cheese stilton = (Cheese) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ FactHandle factHandle = (FactHandle) result.getFactHandle( "outStilton" );
+ stilton = (Cheese) ksession.getObject( factHandle );
+ assertEquals( 30,
+ stilton.getPrice() );
+
+ String expectedXml = "";
+ expectedXml += "<execution-results>\n";
+ expectedXml += " <result identifier=\"outStilton\">\n";
+ expectedXml += " <org.drools.Cheese>\n";
+ expectedXml += " <type>stilton</type>\n";
+ expectedXml += " <oldPrice>0</oldPrice>\n";
+ expectedXml += " <price>30</price>\n";
+ expectedXml += " </org.drools.Cheese>\n";
+ expectedXml += " </result>\n";
+ expectedXml += " <fact-handle identifier=\"outStilton\" external-form=\"" + ((InternalFactHandle) result.getFactHandle( "outStilton" )).toExternalForm() + "\" /> \n";
+ expectedXml += "</execution-results>\n";
+
+ assertXMLEqual( expectedXml,
+ outXml );
+ }
+
+ private StatelessKnowledgeSession getStatelessKnowledgeSession(Resource resource) throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( resource,
ResourceType.DRL );
@@ -1983,7 +1879,7 @@
return session;
}
- private StatefulKnowledgeSession getSessionStateful(Resource resource) throws Exception {
+ private StatefulKnowledgeSession getStatefulKnowledgeSession(Resource resource) throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( resource,
ResourceType.DRL );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java 2010-07-28 04:39:28 UTC (rev 34242)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamJSon.java 2010-07-28 05:26:10 UTC (rev 34243)
@@ -83,36 +83,33 @@
xstream.setMode( XStream.NO_REFERENCES );
- xstream.registerConverter( new JSonFactHandleConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonBatchExecutionResultConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonInsertConverter( xstream.getMapper(),
- xstream.getReflectionProvider() ) );
- xstream.registerConverter( new JSonFireAllRulesConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonBatchExecutionCommandConverter( xstream.getMapper() ) );
- xstream.registerConverter( new CommandsContainerConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonGetObjectConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonRetractConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonModifyConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonSetGlobalConverter( xstream.getMapper(),
- xstream.getReflectionProvider() ) );
- xstream.registerConverter( new JSonInsertElementsConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonGetGlobalConverter( xstream.getMapper(),
- xstream.getReflectionProvider() ) );
- xstream.registerConverter( new JSonGetObjectsConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonQueryConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonQueryResultsConverter( xstream.getMapper() ) );
- xstream.registerConverter( new RowItemConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonStartProcessConvert( xstream.getMapper() ) );
- xstream.registerConverter( new JSonSignalEventConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonCompleteWorkItemConverter( xstream.getMapper() ) );
- xstream.registerConverter( new JSonAbortWorkItemConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new JSonFactHandleConverter( xstream ) );
+ xstream.registerConverter( new JSonBatchExecutionResultConverter( xstream ) );
+ xstream.registerConverter( new JSonInsertConverter( xstream ) );
+ xstream.registerConverter( new JSonFireAllRulesConverter( xstream ) );
+ xstream.registerConverter( new JSonBatchExecutionCommandConverter( xstream ) );
+ xstream.registerConverter( new CommandsContainerConverter( xstream ) );
+ xstream.registerConverter( new JSonGetObjectConverter( xstream ) );
+ xstream.registerConverter( new JSonRetractConverter( xstream ) );
+ xstream.registerConverter( new JSonModifyConverter( xstream ) );
+ xstream.registerConverter( new JSonSetGlobalConverter( xstream ) );
+ xstream.registerConverter( new JSonInsertElementsConverter( xstream ) );
+ xstream.registerConverter( new JSonGetGlobalConverter( xstream ) );
+ xstream.registerConverter( new JSonGetObjectsConverter( xstream ) );
+ xstream.registerConverter( new JSonQueryConverter( xstream ) );
+ xstream.registerConverter( new JSonQueryResultsConverter( xstream ) );
+ xstream.registerConverter( new RowItemConverter( xstream ) );
+ xstream.registerConverter( new JSonStartProcessConvert( xstream ) );
+ xstream.registerConverter( new JSonSignalEventConverter( xstream ) );
+ xstream.registerConverter( new JSonCompleteWorkItemConverter( xstream ) );
+ xstream.registerConverter( new JSonAbortWorkItemConverter( xstream ) );
return xstream;
}
public static class CommandsContainerConverter extends AbstractCollectionConverter {
- public CommandsContainerConverter(Mapper mapper) {
- super( mapper );
+ public CommandsContainerConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public boolean canConvert(Class type) {
@@ -140,8 +137,8 @@
}
public static class RowItemConverter extends AbstractCollectionConverter {
- public RowItemConverter(Mapper mapper) {
- super( mapper );
+ public RowItemConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public boolean canConvert(Class type) {
@@ -228,8 +225,8 @@
implements
Converter {
- public JSonBatchExecutionCommandConverter(Mapper mapper) {
- super( mapper );
+ public JSonBatchExecutionCommandConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -285,10 +282,8 @@
implements
Converter {
- public JSonInsertConverter(Mapper mapper,
- ReflectionProvider reflectionProvider) {
- super( mapper,
- reflectionProvider );
+ public JSonInsertConverter(XStream xstream) {
+ super( xstream );
}
public void marshal(Object object,
@@ -341,8 +336,8 @@
public static class JSonFactHandleConverter extends AbstractCollectionConverter
implements
Converter {
- public JSonFactHandleConverter(Mapper mapper) {
- super( mapper );
+ public JSonFactHandleConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public boolean canConvert(Class aClass) {
@@ -371,8 +366,8 @@
implements
Converter {
- public JSonFireAllRulesConverter(Mapper mapper) {
- super( mapper );
+ public JSonFireAllRulesConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -387,8 +382,8 @@
}
if ( cmd.getOutIdentifier() != null ) {
- writer.startNode( "out-identifier" );
- writer.setValue( cmd.getOutIdentifier() );
+ writer.startNode( "out-identifier" );
+ writer.setValue( cmd.getOutIdentifier() );
writer.endNode();
}
}
@@ -402,7 +397,7 @@
if ( "max".equals( reader.getNodeName() ) ) {
max = reader.getValue();
} else if ( "out-identifier".equals( reader.getNodeName() ) ) {
- outIdentifier = reader.getValue();
+ outIdentifier = reader.getValue();
} else {
throw new IllegalArgumentException( "fire-all-rules does not support the child element name=''" + reader.getNodeName() + "' value=" + reader.getValue() + "'" );
}
@@ -417,7 +412,7 @@
cmd = new FireAllRulesCommand();
}
if ( outIdentifier != null ) {
- cmd.setOutIdentifier(outIdentifier);
+ cmd.setOutIdentifier(outIdentifier);
}
return cmd;
}
@@ -431,8 +426,8 @@
implements
Converter {
- public JSonGetObjectConverter(Mapper mapper) {
- super( mapper );
+ public JSonGetObjectConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -481,8 +476,8 @@
implements
Converter {
- public JSonRetractConverter(Mapper mapper) {
- super( mapper );
+ public JSonRetractConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -514,8 +509,8 @@
implements
Converter {
- public JSonModifyConverter(Mapper mapper) {
- super( mapper );
+ public JSonModifyConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -576,8 +571,8 @@
implements
Converter {
- public JSonInsertElementsConverter(Mapper mapper) {
- super( mapper );
+ public JSonInsertElementsConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -648,8 +643,8 @@
implements
Converter {
- public JSonBatchExecutionResultConverter(Mapper mapper) {
- super( mapper );
+ public JSonBatchExecutionResultConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -788,11 +783,9 @@
protected Mapper mapper;
protected ReflectionProvider reflectionProvider;
- public BaseConverter(Mapper mapper,
- ReflectionProvider reflectionProvider) {
- super();
- this.mapper = mapper;
- this.reflectionProvider = reflectionProvider;
+ public BaseConverter(XStream xstream) {
+ this.mapper = xstream.getMapper();
+ this.reflectionProvider = xstream.getReflectionProvider();
}
protected void writeValue(HierarchicalStreamWriter writer,
@@ -828,10 +821,8 @@
implements
Converter {
- public JSonSetGlobalConverter(Mapper mapper,
- ReflectionProvider reflectionProvider) {
- super( mapper,
- reflectionProvider );
+ public JSonSetGlobalConverter(XStream xstream) {
+ super( xstream );
}
public void marshal(Object object,
@@ -905,10 +896,8 @@
implements
Converter {
- public JSonGetGlobalConverter(Mapper mapper,
- ReflectionProvider reflectionProvider) {
- super( mapper,
- reflectionProvider );
+ public JSonGetGlobalConverter(XStream xstream) {
+ super( xstream );
}
public void marshal(Object object,
@@ -962,8 +951,8 @@
implements
Converter {
- public JSonGetObjectsConverter(Mapper mapper) {
- super( mapper );
+ public JSonGetObjectsConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -1005,8 +994,8 @@
implements
Converter {
- public JSonQueryConverter(Mapper mapper) {
- super( mapper );
+ public JSonQueryConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -1079,8 +1068,8 @@
implements
Converter {
- public JSonQueryResultsConverter(Mapper mapper) {
- super( mapper );
+ public JSonQueryResultsConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -1167,8 +1156,8 @@
implements
Converter {
- public JSonStartProcessConvert(Mapper mapper) {
- super( mapper );
+ public JSonStartProcessConvert(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -1220,8 +1209,8 @@
implements
Converter {
- public JSonSignalEventConverter(Mapper mapper) {
- super( mapper );
+ public JSonSignalEventConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -1297,8 +1286,8 @@
implements
Converter {
- public JSonCompleteWorkItemConverter(Mapper mapper) {
- super( mapper );
+ public JSonCompleteWorkItemConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
@@ -1352,8 +1341,8 @@
implements
Converter {
- public JSonAbortWorkItemConverter(Mapper mapper) {
- super( mapper );
+ public JSonAbortWorkItemConverter(XStream xstream) {
+ super( xstream.getMapper() );
}
public void marshal(Object object,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java 2010-07-28 04:39:28 UTC (rev 34242)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/XStreamXML.java 2010-07-28 05:26:10 UTC (rev 34243)
@@ -74,918 +74,917 @@
xstream.addImplicitCollection( BatchExecutionCommand.class,
"commands" );
- xstream.registerConverter( new InsertConverter( xstream.getMapper() ) );
- xstream.registerConverter( new RetractConverter( xstream.getMapper() ) );
- xstream.registerConverter( new ModifyConverter( xstream.getMapper() ) );
- xstream.registerConverter( new GetObjectConverter( xstream.getMapper() ) );
- xstream.registerConverter( new InsertElementsConverter( xstream.getMapper() ) );
- xstream.registerConverter( new FireAllRulesConverter( xstream.getMapper() ) );
- xstream.registerConverter( new StartProcessConvert( xstream.getMapper() ) );
- xstream.registerConverter( new SignalEventConverter( xstream.getMapper() ) );
- xstream.registerConverter( new CompleteWorkItemConverter( xstream.getMapper() ) );
- xstream.registerConverter( new AbortWorkItemConverter( xstream.getMapper() ) );
- xstream.registerConverter( new QueryConverter( xstream.getMapper() ) );
- xstream.registerConverter( new SetGlobalConverter( xstream.getMapper() ) );
- xstream.registerConverter( new GetGlobalConverter( xstream.getMapper() ) );
- xstream.registerConverter( new GetObjectsConverter( xstream.getMapper() ) );
- xstream.registerConverter( new BatchExecutionResultConverter( xstream.getMapper() ) );
- xstream.registerConverter( new QueryResultsConverter( xstream.getMapper() ) );
- xstream.registerConverter( new FactHandleConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new InsertConverter( xstream ) );
+ xstream.registerConverter( new RetractConverter( xstream ) );
+ xstream.registerConverter( new ModifyConverter( xstream ) );
+ xstream.registerConverter( new GetObjectConverter( xstream ) );
+ xstream.registerConverter( new InsertElementsConverter( xstream ) );
+ xstream.registerConverter( new FireAllRulesConverter( xstream ) );
+ xstream.registerConverter( new StartProcessConvert( xstream ) );
+ xstream.registerConverter( new SignalEventConverter( xstream ) );
+ xstream.registerConverter( new CompleteWorkItemConverter( xstream ) );
+ xstream.registerConverter( new AbortWorkItemConverter( xstream ) );
+ xstream.registerConverter( new QueryConverter( xstream ) );
+ xstream.registerConverter( new SetGlobalConverter( xstream ) );
+ xstream.registerConverter( new GetGlobalConverter( xstream ) );
+ xstream.registerConverter( new GetObjectsConverter( xstream ) );
+ xstream.registerConverter( new BatchExecutionResultConverter( xstream ) );
+ xstream.registerConverter( new QueryResultsConverter( xstream ) );
+ xstream.registerConverter( new FactHandleConverter( xstream ) );
return xstream;
}
- public static class InsertConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public static class InsertConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public InsertConverter(Mapper mapper) {
- super( mapper );
- }
+ public InsertConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- InsertObjectCommand cmd = (InsertObjectCommand) object;
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ InsertObjectCommand cmd = (InsertObjectCommand) object;
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
- writer.addAttribute( "return-object",
- Boolean.toString( cmd.isReturnObject() ) );
+ writer.addAttribute( "return-object",
+ Boolean.toString( cmd.isReturnObject() ) );
- }
- writeItem( cmd.getObject(),
- context,
- writer );
- }
+ }
+ writeItem( cmd.getObject(),
+ context,
+ writer );
+ }
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifierOut = reader.getAttribute( "out-identifier" );
- String returnObject = reader.getAttribute( "return-object" );
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String identifierOut = reader.getAttribute( "out-identifier" );
+ String returnObject = reader.getAttribute( "return-object" );
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
- InsertObjectCommand cmd = new InsertObjectCommand( object );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- if ( returnObject != null ) {
- cmd.setReturnObject( Boolean.parseBoolean( returnObject ) );
- }
- }
- return cmd;
- }
+ reader.moveDown();
+ Object object = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
+ InsertObjectCommand cmd = new InsertObjectCommand( object );
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ if ( returnObject != null ) {
+ cmd.setReturnObject( Boolean.parseBoolean( returnObject ) );
+ }
+ }
+ return cmd;
+ }
- public boolean canConvert(Class clazz) {
- return clazz.equals( InsertObjectCommand.class );
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( InsertObjectCommand.class );
+ }
- }
+}
- public static class FactHandleConverter
- implements
- Converter {
- private Mapper mapper;
+public static class FactHandleConverter
+ implements
+ Converter {
+ private Mapper mapper;
- public FactHandleConverter(Mapper mapper) {
- this.mapper = mapper;
- }
+ public FactHandleConverter(XStream xstream) {
+ this.mapper = mapper;
+ }
- public boolean canConvert(Class aClass) {
- return FactHandle.class.isAssignableFrom( aClass );
- }
+ public boolean canConvert(Class aClass) {
+ return FactHandle.class.isAssignableFrom( aClass );
+ }
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext marshallingContext) {
- FactHandle fh = (FactHandle) object;
- //writer.startNode("fact-handle");
- writer.addAttribute( "external-form",
- fh.toExternalForm() );
- //writer.endNode();
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext marshallingContext) {
+ FactHandle fh = (FactHandle) object;
+ //writer.startNode("fact-handle");
+ writer.addAttribute( "external-form",
+ fh.toExternalForm() );
+ //writer.endNode();
+ }
- public Object unmarshal(HierarchicalStreamReader hierarchicalStreamReader,
- UnmarshallingContext unmarshallingContext) {
- throw new UnsupportedOperationException( "Unable to unmarshal fact handles." );
- }
- }
+ public Object unmarshal(HierarchicalStreamReader hierarchicalStreamReader,
+ UnmarshallingContext unmarshallingContext) {
+ throw new UnsupportedOperationException( "Unable to unmarshal fact handles." );
+ }
+}
- public static class ModifyConverter
- implements
- Converter {
+public static class ModifyConverter
+ implements
+ Converter {
- public ModifyConverter(Mapper mapper) {
+ public ModifyConverter(XStream xstream) {
+ }
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ ModifyCommand cmd = (ModifyCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- ModifyCommand cmd = (ModifyCommand) object;
+ writer.addAttribute( "fact-handle",
+ cmd.getFactHandle().toExternalForm() );
- writer.addAttribute( "fact-handle",
- cmd.getFactHandle().toExternalForm() );
+ for ( Setter setter : cmd.getSetters() ) {
+ writer.startNode( "set" );
+ writer.addAttribute( "accessor",
+ setter.getAccessor() );
+ writer.addAttribute( "value",
+ setter.getValue() );
+ writer.endNode();
+ }
+ }
- for ( Setter setter : cmd.getSetters() ) {
- writer.startNode( "set" );
- writer.addAttribute( "accessor",
- setter.getAccessor() );
- writer.addAttribute( "value",
- setter.getValue() );
- writer.endNode();
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
+ List<Setter> setters = new ArrayList();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ Setter setter = CommandFactory.newSetter( reader.getAttribute( "accessor" ),
+ reader.getAttribute( "value" ) );
+ setters.add( setter );
+ reader.moveUp();
+ }
- List<Setter> setters = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Setter setter = CommandFactory.newSetter( reader.getAttribute( "accessor" ),
- reader.getAttribute( "value" ) );
- setters.add( setter );
- reader.moveUp();
- }
+ Command cmd = CommandFactory.newModify( factHandle,
+ setters );
+ return cmd;
+ }
- Command cmd = CommandFactory.newModify( factHandle,
- setters );
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( ModifyCommand.class );
+ }
- public boolean canConvert(Class clazz) {
- return clazz.equals( ModifyCommand.class );
- }
+}
- }
+public static class RetractConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class RetractConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public RetractConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public RetractConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ RetractCommand cmd = (RetractCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- RetractCommand cmd = (RetractCommand) object;
+ writer.addAttribute( "fact-handle",
+ cmd.getFactHandle().toExternalForm() );
+ }
- writer.addAttribute( "fact-handle",
- cmd.getFactHandle().toExternalForm() );
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
+ Command cmd = CommandFactory.newRetract( factHandle );
- Command cmd = CommandFactory.newRetract( factHandle );
+ return cmd;
+ }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( RetractCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( RetractCommand.class );
- }
- }
+public static class InsertElementsConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class InsertElementsConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public InsertElementsConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public InsertElementsConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ InsertElementsCommand cmd = (InsertElementsCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- InsertElementsCommand cmd = (InsertElementsCommand) object;
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
+ writer.addAttribute( "return-objects",
+ Boolean.toString( cmd.isReturnObject() ) );
- writer.addAttribute( "return-objects",
- Boolean.toString( cmd.isReturnObject() ) );
+ }
- }
+ for ( Object element : cmd.getObjects() ) {
+ writeItem( element,
+ context,
+ writer );
+ }
+ }
- for ( Object element : cmd.getObjects() ) {
- writeItem( element,
- context,
- writer );
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String identifierOut = reader.getAttribute( "out-identifier" );
+ String returnObject = reader.getAttribute( "return-objects" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifierOut = reader.getAttribute( "out-identifier" );
- String returnObject = reader.getAttribute( "return-objects" );
+ List objects = new ArrayList();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ Object object = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
+ objects.add( object );
+ }
- List objects = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
- objects.add( object );
- }
+ InsertElementsCommand cmd = new InsertElementsCommand( objects );
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ if ( returnObject != null ) {
+ cmd.setReturnObject( Boolean.parseBoolean( returnObject ) );
+ }
+ }
+ return cmd;
+ }
- InsertElementsCommand cmd = new InsertElementsCommand( objects );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- if ( returnObject != null ) {
- cmd.setReturnObject( Boolean.parseBoolean( returnObject ) );
- }
- }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( InsertElementsCommand.class );
+ }
- public boolean canConvert(Class clazz) {
- return clazz.equals( InsertElementsCommand.class );
- }
+}
- }
+public static class SetGlobalConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class SetGlobalConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public SetGlobalConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public SetGlobalConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ SetGlobalCommand cmd = (SetGlobalCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- SetGlobalCommand cmd = (SetGlobalCommand) object;
+ writer.addAttribute( "identifier",
+ cmd.getIdentifier() );
- writer.addAttribute( "identifier",
- cmd.getIdentifier() );
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
+ } else if ( cmd.isOut() ) {
+ writer.addAttribute( "out",
+ Boolean.toString( cmd.isOut() ) );
+ }
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- } else if ( cmd.isOut() ) {
- writer.addAttribute( "out",
- Boolean.toString( cmd.isOut() ) );
- }
+ writeItem( cmd.getObject(),
+ context,
+ writer );
+ }
- writeItem( cmd.getObject(),
- context,
- writer );
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String identifier = reader.getAttribute( "identifier" );
+ String out = reader.getAttribute( "out" );
+ String identifierOut = reader.getAttribute( "out-identifier" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifier = reader.getAttribute( "identifier" );
- String out = reader.getAttribute( "out" );
- String identifierOut = reader.getAttribute( "out-identifier" );
+ reader.moveDown();
+ Object object = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
+ SetGlobalCommand cmd = new SetGlobalCommand( identifier,
+ object );
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ } else if ( out != null ) {
+ cmd.setOut( Boolean.parseBoolean( out ) );
+ }
+ return cmd;
+ }
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
- SetGlobalCommand cmd = new SetGlobalCommand( identifier,
- object );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- } else if ( out != null ) {
- cmd.setOut( Boolean.parseBoolean( out ) );
- }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( SetGlobalCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( SetGlobalCommand.class );
- }
- }
+public static class GetObjectConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class GetObjectConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public GetObjectConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public GetObjectConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ GetObjectCommand cmd = (GetObjectCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetObjectCommand cmd = (GetObjectCommand) object;
+ writer.addAttribute( "fact-handle",
+ cmd.getFactHandle().toExternalForm() );
- writer.addAttribute( "fact-handle",
- cmd.getFactHandle().toExternalForm() );
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
+ }
+ }
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
+ String identifierOut = reader.getAttribute( "out-identifier" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- FactHandle factHandle = new DefaultFactHandle( reader.getAttribute( "fact-handle" ) );
- String identifierOut = reader.getAttribute( "out-identifier" );
+ GetObjectCommand cmd = new GetObjectCommand( factHandle );
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ }
+ return cmd;
+ }
- GetObjectCommand cmd = new GetObjectCommand( factHandle );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( GetObjectCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetObjectCommand.class );
- }
- }
+public static class GetGlobalConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class GetGlobalConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public GetGlobalConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public GetGlobalConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ GetGlobalCommand cmd = (GetGlobalCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetGlobalCommand cmd = (GetGlobalCommand) object;
+ writer.addAttribute( "identifier",
+ cmd.getIdentifier() );
- writer.addAttribute( "identifier",
- cmd.getIdentifier() );
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
+ }
+ }
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String identifier = reader.getAttribute( "identifier" );
+ String identifierOut = reader.getAttribute( "out-identifier" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifier = reader.getAttribute( "identifier" );
- String identifierOut = reader.getAttribute( "out-identifier" );
+ GetGlobalCommand cmd = new GetGlobalCommand( identifier );
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ }
+ return cmd;
+ }
- GetGlobalCommand cmd = new GetGlobalCommand( identifier );
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( GetGlobalCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetGlobalCommand.class );
- }
- }
+public static class GetObjectsConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class GetObjectsConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public GetObjectsConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public GetObjectsConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ GetObjectsCommand cmd = (GetObjectsCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- GetObjectsCommand cmd = (GetObjectsCommand) object;
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
+ }
+ }
- if ( cmd.getOutIdentifier() != null ) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String identifierOut = reader.getAttribute( "out-identifier" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String identifierOut = reader.getAttribute( "out-identifier" );
+ GetObjectsCommand cmd = new GetObjectsCommand();
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ }
+ return cmd;
+ }
- GetObjectsCommand cmd = new GetObjectsCommand();
- if ( identifierOut != null ) {
- cmd.setOutIdentifier( identifierOut );
- }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( GetObjectsCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( GetObjectsCommand.class );
- }
- }
+public static class FireAllRulesConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class FireAllRulesConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public FireAllRulesConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public FireAllRulesConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ FireAllRulesCommand cmd = (FireAllRulesCommand) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- FireAllRulesCommand cmd = (FireAllRulesCommand) object;
+ if ( cmd.getMax() != -1 ) {
+ writer.addAttribute( "max",
+ Integer.toString( cmd.getMax() ) );
+ }
+
+ if ( cmd.getOutIdentifier() != null) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier());
+ }
+ }
- if ( cmd.getMax() != -1 ) {
- writer.addAttribute( "max",
- Integer.toString( cmd.getMax() ) );
- }
-
- if ( cmd.getOutIdentifier() != null) {
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier());
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String max = reader.getAttribute( "max" );
+ String outIdentifier = reader.getAttribute( "out-identifier" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String max = reader.getAttribute( "max" );
- String outIdentifier = reader.getAttribute( "out-identifier" );
+ FireAllRulesCommand cmd = null;
- FireAllRulesCommand cmd = null;
+ if ( max != null ) {
+ cmd = new FireAllRulesCommand( Integer.parseInt( max ) );
+ } else {
+ cmd = new FireAllRulesCommand();
+ }
+
+ if ( outIdentifier != null ) {
+ cmd.setOutIdentifier( outIdentifier );
+ }
+
+ return cmd;
+ }
- if ( max != null ) {
- cmd = new FireAllRulesCommand( Integer.parseInt( max ) );
- } else {
- cmd = new FireAllRulesCommand();
- }
-
- if ( outIdentifier != null ) {
- cmd.setOutIdentifier( outIdentifier );
- }
-
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( FireAllRulesCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( FireAllRulesCommand.class );
- }
- }
+public static class QueryConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class QueryConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public QueryConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public QueryConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ QueryCommand cmd = (QueryCommand) object;
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
+ writer.addAttribute( "name",
+ cmd.getName() );
+ if ( cmd.getArguments() != null ) {
+ for ( Object arg : cmd.getArguments() ) {
+ writeItem( arg,
+ context,
+ writer );
+ }
+ }
+ }
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- QueryCommand cmd = (QueryCommand) object;
- writer.addAttribute( "out-identifier",
- cmd.getOutIdentifier() );
- writer.addAttribute( "name",
- cmd.getName() );
- if ( cmd.getArguments() != null ) {
- for ( Object arg : cmd.getArguments() ) {
- writeItem( arg,
- context,
- writer );
- }
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ List<String> outs = new ArrayList<String>();
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- List<String> outs = new ArrayList<String>();
+ // Query cmd = null;
+ String outIdentifier = reader.getAttribute( "out-identifier" );
+ String name = reader.getAttribute( "name" );
+ List<Object> args = new ArrayList<Object>();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ Object arg = readItem( reader,
+ context,
+ null );
+ args.add( arg );
+ reader.moveUp();
+ }
+ QueryCommand cmd = new QueryCommand( outIdentifier,
+ name,
+ args.toArray( new Object[args.size()] ) );
- // Query cmd = null;
- String outIdentifier = reader.getAttribute( "out-identifier" );
- String name = reader.getAttribute( "name" );
- List<Object> args = new ArrayList<Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object arg = readItem( reader,
- context,
- null );
- args.add( arg );
- reader.moveUp();
- }
- QueryCommand cmd = new QueryCommand( outIdentifier,
- name,
- args.toArray( new Object[args.size()] ) );
+ return cmd;
+ }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( QueryCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( QueryCommand.class );
- }
- }
+public static class StartProcessConvert extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class StartProcessConvert extends AbstractCollectionConverter
- implements
- Converter {
+ public StartProcessConvert(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public StartProcessConvert(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ StartProcessCommand cmd = (StartProcessCommand) object;
+ writer.addAttribute( "processId",
+ cmd.getProcessId() );
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- StartProcessCommand cmd = (StartProcessCommand) object;
- writer.addAttribute( "processId",
- cmd.getProcessId() );
+ for ( Entry<String, Object> entry : cmd.getParameters().entrySet() ) {
+ writer.startNode( "parameter" );
+ writer.addAttribute( "identifier",
+ entry.getKey() );
+ writeItem( entry.getValue(),
+ context,
+ writer );
+ writer.endNode();
+ }
+ }
- for ( Entry<String, Object> entry : cmd.getParameters().entrySet() ) {
- writer.startNode( "parameter" );
- writer.addAttribute( "identifier",
- entry.getKey() );
- writeItem( entry.getValue(),
- context,
- writer );
- writer.endNode();
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String processId = reader.getAttribute( "processId" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String processId = reader.getAttribute( "processId" );
+ HashMap<String, Object> params = new HashMap<String, Object>();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ String identifier = reader.getAttribute( "identifier" );
+ reader.moveDown();
+ Object value = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
+ params.put( identifier,
+ value );
+ reader.moveUp();
+ }
+ StartProcessCommand cmd = new StartProcessCommand();
+ cmd.setProcessId( processId );
+ cmd.setParameters( params );
- HashMap<String, Object> params = new HashMap<String, Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String identifier = reader.getAttribute( "identifier" );
- reader.moveDown();
- Object value = readItem( reader,
- context,
- null );
- reader.moveUp();
- params.put( identifier,
- value );
- reader.moveUp();
- }
- StartProcessCommand cmd = new StartProcessCommand();
- cmd.setProcessId( processId );
- cmd.setParameters( params );
+ return cmd;
+ }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( StartProcessCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( StartProcessCommand.class );
- }
- }
+public static class SignalEventConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class SignalEventConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public SignalEventConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public SignalEventConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ SignalEventCommand cmd = (SignalEventCommand) object;
+ long processInstanceId = cmd.getProcessInstanceId();
+ String eventType = cmd.getEventType();
+ Object event = cmd.getEvent();
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- SignalEventCommand cmd = (SignalEventCommand) object;
- long processInstanceId = cmd.getProcessInstanceId();
- String eventType = cmd.getEventType();
- Object event = cmd.getEvent();
+ if ( processInstanceId != -1 ) {
+ writer.addAttribute( "process-instance-id",
+ Long.toString( processInstanceId ) );
+ }
- if ( processInstanceId != -1 ) {
- writer.addAttribute( "process-instance-id",
- Long.toString( processInstanceId ) );
- }
+ writer.addAttribute( "event-type",
+ eventType );
- writer.addAttribute( "event-type",
- eventType );
+ writeItem( event,
+ context,
+ writer );
+ }
- writeItem( event,
- context,
- writer );
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String processInstanceId = reader.getAttribute( "process-instance-id" );
+ String eventType = reader.getAttribute( "event-type" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String processInstanceId = reader.getAttribute( "process-instance-id" );
- String eventType = reader.getAttribute( "event-type" );
+ reader.moveDown();
+ Object event = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
- reader.moveDown();
- Object event = readItem( reader,
- context,
- null );
- reader.moveUp();
+ Command cmd;
+ if ( processInstanceId != null ) {
+ cmd = CommandFactory.newSignalEvent( Long.parseLong( processInstanceId ),
+ eventType,
+ event );
+ } else {
+ cmd = CommandFactory.newSignalEvent( eventType,
+ event );
+ }
- Command cmd;
- if ( processInstanceId != null ) {
- cmd = CommandFactory.newSignalEvent( Long.parseLong( processInstanceId ),
- eventType,
- event );
- } else {
- cmd = CommandFactory.newSignalEvent( eventType,
- event );
- }
+ return cmd;
+ }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( SignalEventCommand.class );
+ }
- public boolean canConvert(Class clazz) {
- return clazz.equals( SignalEventCommand.class );
- }
+}
- }
+public static class CompleteWorkItemConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class CompleteWorkItemConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public CompleteWorkItemConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public CompleteWorkItemConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ CompleteWorkItemCommand cmd = (CompleteWorkItemCommand) object;
+ writer.addAttribute( "id",
+ Long.toString( cmd.getWorkItemId() ) );
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- CompleteWorkItemCommand cmd = (CompleteWorkItemCommand) object;
- writer.addAttribute( "id",
- Long.toString( cmd.getWorkItemId() ) );
+ for ( Entry<String, Object> entry : cmd.getResults().entrySet() ) {
+ writer.startNode( "result" );
+ writer.addAttribute( "identifier",
+ entry.getKey() );
+ writeItem( entry.getValue(),
+ context,
+ writer );
+ writer.endNode();
+ }
+ }
- for ( Entry<String, Object> entry : cmd.getResults().entrySet() ) {
- writer.startNode( "result" );
- writer.addAttribute( "identifier",
- entry.getKey() );
- writeItem( entry.getValue(),
- context,
- writer );
- writer.endNode();
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String id = reader.getAttribute( "id" );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String id = reader.getAttribute( "id" );
+ Map<String, Object> results = new HashMap<String, Object>();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ String identifier = reader.getAttribute( "identifier" );
+ reader.moveDown();
+ Object value = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
+ results.put( identifier,
+ value );
+ reader.moveUp();
+ }
- Map<String, Object> results = new HashMap<String, Object>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- String identifier = reader.getAttribute( "identifier" );
- reader.moveDown();
- Object value = readItem( reader,
- context,
- null );
- reader.moveUp();
- results.put( identifier,
- value );
- reader.moveUp();
- }
+ Command cmd = CommandFactory.newCompleteWorkItem( Long.parseLong( id ),
+ results );
- Command cmd = CommandFactory.newCompleteWorkItem( Long.parseLong( id ),
- results );
+ return cmd;
+ }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( CompleteWorkItemCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( CompleteWorkItemCommand.class );
- }
- }
+public static class AbortWorkItemConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class AbortWorkItemConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public AbortWorkItemConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public AbortWorkItemConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ AbortWorkItemCommand cmd = (AbortWorkItemCommand) object;
+ writer.addAttribute( "id",
+ Long.toString( cmd.getWorkItemId() ) );
+ }
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- AbortWorkItemCommand cmd = (AbortWorkItemCommand) object;
- writer.addAttribute( "id",
- Long.toString( cmd.getWorkItemId() ) );
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String id = reader.getAttribute( "id" );
+ Command cmd = CommandFactory.newAbortWorkItem( Long.parseLong( id ) );
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- String id = reader.getAttribute( "id" );
- Command cmd = CommandFactory.newAbortWorkItem( Long.parseLong( id ) );
+ return cmd;
+ }
- return cmd;
- }
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( AbortWorkItemCommand.class );
+ }
+}
- public boolean canConvert(Class clazz) {
- return clazz.equals( AbortWorkItemCommand.class );
- }
- }
+public static class BatchExecutionResultConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class BatchExecutionResultConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public BatchExecutionResultConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public BatchExecutionResultConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ ExecutionResults result = (ExecutionResults) object;
+ for ( String identifier : result.getIdentifiers() ) {
+ writer.startNode( "result" );
+ writer.addAttribute( "identifier",
+ identifier );
+ Object value = result.getValue( identifier );
+ writeItem( value,
+ context,
+ writer );
+ writer.endNode();
+ }
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- ExecutionResults result = (ExecutionResults) object;
- for ( String identifier : result.getIdentifiers() ) {
- writer.startNode( "result" );
- writer.addAttribute( "identifier",
- identifier );
- Object value = result.getValue( identifier );
- writeItem( value,
- context,
- writer );
- writer.endNode();
- }
+ for ( String identifier : ((ExecutionResultImpl) result).getFactHandles().keySet() ) {
+ Object handle = result.getFactHandle( identifier );
+ if ( handle instanceof FactHandle ) {
+ writer.startNode( "fact-handle" );
+ writer.addAttribute( "identifier",
+ identifier );
+ writer.addAttribute( "external-form",
+ ((FactHandle) handle).toExternalForm() );
- for ( String identifier : ((ExecutionResultImpl) result).getFactHandles().keySet() ) {
- Object handle = result.getFactHandle( identifier );
- if ( handle instanceof FactHandle ) {
- writer.startNode( "fact-handle" );
- writer.addAttribute( "identifier",
- identifier );
- writer.addAttribute( "external-form",
- ((FactHandle) handle).toExternalForm() );
+ writer.endNode();
+ } else if ( handle instanceof Collection ) {
+ writer.startNode( "fact-handles" );
+ writer.addAttribute( "identifier",
+ identifier );
+ for ( FactHandle factHandle : (Collection<FactHandle>) handle ) {
+ writer.startNode( "fact-handle" );
+ writer.addAttribute( "external-form",
+ ((FactHandle) factHandle).toExternalForm() );
+ writer.endNode();
+ }
- writer.endNode();
- } else if ( handle instanceof Collection ) {
- writer.startNode( "fact-handles" );
- writer.addAttribute( "identifier",
- identifier );
- for ( FactHandle factHandle : (Collection<FactHandle>) handle ) {
- writer.startNode( "fact-handle" );
- writer.addAttribute( "external-form",
- ((FactHandle) factHandle).toExternalForm() );
- writer.endNode();
- }
+ writer.endNode();
+ }
- writer.endNode();
- }
+ }
+ }
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ ExecutionResultImpl result = new ExecutionResultImpl();
+ Map results = result.getResults();
+ Map facts = result.getFactHandles();
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- ExecutionResultImpl result = new ExecutionResultImpl();
- Map results = result.getResults();
- Map facts = result.getFactHandles();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ if ( reader.getNodeName().equals( "result" ) ) {
+ String identifier = reader.getAttribute( "identifier" );
+ reader.moveDown();
+ Object value = readItem( reader,
+ context,
+ null );
+ results.put( identifier,
+ value );
+ reader.moveUp();
+ reader.moveUp();
+ } else if ( reader.getNodeName().equals( "fact-handle" ) ) {
+ String identifier = reader.getAttribute( "identifier" );
+ facts.put( identifier,
+ new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
+ } else if ( reader.getNodeName().equals( "fact-handles" ) ) {
+ String identifier = reader.getAttribute( "identifier" );
+ List<FactHandle> list = new ArrayList();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ list.add( new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
+ reader.moveUp();
+ }
+ facts.put( identifier,
+ list );
+ } else {
+ throw new IllegalArgumentException( "Element '" + reader.getNodeName() + "' is not supported here" );
+ }
+ }
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- if ( reader.getNodeName().equals( "result" ) ) {
- String identifier = reader.getAttribute( "identifier" );
- reader.moveDown();
- Object value = readItem( reader,
- context,
- null );
- results.put( identifier,
- value );
- reader.moveUp();
- reader.moveUp();
- } else if ( reader.getNodeName().equals( "fact-handle" ) ) {
- String identifier = reader.getAttribute( "identifier" );
- facts.put( identifier,
- new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
- } else if ( reader.getNodeName().equals( "fact-handles" ) ) {
- String identifier = reader.getAttribute( "identifier" );
- List<FactHandle> list = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- list.add( new DefaultFactHandle( reader.getAttribute( "external-form" ) ) );
- reader.moveUp();
- }
- facts.put( identifier,
- list );
- } else {
- throw new IllegalArgumentException( "Element '" + reader.getNodeName() + "' is not supported here" );
- }
- }
+ return result;
+ }
- return result;
- }
+ public boolean canConvert(Class clazz) {
+ return ExecutionResults.class.isAssignableFrom( clazz );
+ }
+}
- public boolean canConvert(Class clazz) {
- return ExecutionResults.class.isAssignableFrom( clazz );
- }
- }
+public static class QueryResultsConverter extends AbstractCollectionConverter
+ implements
+ Converter {
- public static class QueryResultsConverter extends AbstractCollectionConverter
- implements
- Converter {
+ public QueryResultsConverter(XStream xstream) {
+ super( xstream.getMapper() );
+ }
- public QueryResultsConverter(Mapper mapper) {
- super( mapper );
- }
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ QueryResults results = (QueryResults) object;
- public void marshal(Object object,
- HierarchicalStreamWriter writer,
- MarshallingContext context) {
- QueryResults results = (QueryResults) object;
+ // write out identifiers
+ List<String> originalIds = Arrays.asList( results.getIdentifiers() );
+ List<String> actualIds = new ArrayList();
+ if ( results instanceof NativeQueryResults ) {
+ for ( String identifier : originalIds ) {
+ // we don't want to marshall the query parameters
+ Declaration declr = ((NativeQueryResults) results).getDeclarations().get( identifier );
+ ObjectType objectType = declr.getPattern().getObjectType();
+ if ( objectType instanceof ClassObjectType ) {
+ if ( ((ClassObjectType) objectType).getClassType() == DroolsQuery.class ) {
+ continue;
+ }
+ }
+ actualIds.add( identifier );
+ }
+ }
- // write out identifiers
- List<String> originalIds = Arrays.asList( results.getIdentifiers() );
- List<String> actualIds = new ArrayList();
- if ( results instanceof NativeQueryResults ) {
- for ( String identifier : originalIds ) {
- // we don't want to marshall the query parameters
- Declaration declr = ((NativeQueryResults) results).getDeclarations().get( identifier );
- ObjectType objectType = declr.getPattern().getObjectType();
- if ( objectType instanceof ClassObjectType ) {
- if ( ((ClassObjectType) objectType).getClassType() == DroolsQuery.class ) {
- continue;
- }
- }
- actualIds.add( identifier );
- }
- }
+ String[] identifiers = actualIds.toArray( new String[actualIds.size()] );
- String[] identifiers = actualIds.toArray( new String[actualIds.size()] );
+ writer.startNode( "identifiers" );
+ for ( int i = 0; i < identifiers.length; i++ ) {
+ writer.startNode( "identifier" );
+ writer.setValue( identifiers[i] );
+ writer.endNode();
+ }
+ writer.endNode();
- writer.startNode( "identifiers" );
- for ( int i = 0; i < identifiers.length; i++ ) {
- writer.startNode( "identifier" );
- writer.setValue( identifiers[i] );
- writer.endNode();
- }
- writer.endNode();
+ for ( QueryResultsRow result : results ) {
+ writer.startNode( "row" );
+ for ( int i = 0; i < identifiers.length; i++ ) {
+ Object value = result.get( identifiers[i] );
+ FactHandle factHandle = result.getFactHandle( identifiers[i] );
+ writeItem( value,
+ context,
+ writer );
+ writer.startNode( "fact-handle" );
+ writer.addAttribute( "external-form",
+ ((FactHandle) factHandle).toExternalForm() );
+ writer.endNode();
+ }
+ writer.endNode();
+ }
+ }
- for ( QueryResultsRow result : results ) {
- writer.startNode( "row" );
- for ( int i = 0; i < identifiers.length; i++ ) {
- Object value = result.get( identifiers[i] );
- FactHandle factHandle = result.getFactHandle( identifiers[i] );
- writeItem( value,
- context,
- writer );
- writer.startNode( "fact-handle" );
- writer.addAttribute( "external-form",
- ((FactHandle) factHandle).toExternalForm() );
- writer.endNode();
- }
- writer.endNode();
- }
- }
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ reader.moveDown();
+ List<String> list = new ArrayList<String>();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ list.add( reader.getValue() );
+ reader.moveUp();
+ }
+ reader.moveUp();
- public Object unmarshal(HierarchicalStreamReader reader,
- UnmarshallingContext context) {
- reader.moveDown();
- List<String> list = new ArrayList<String>();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- list.add( reader.getValue() );
- reader.moveUp();
- }
- reader.moveUp();
+ HashMap<String, Integer> identifiers = new HashMap<String, Integer>();
+ for ( int i = 0; i < list.size(); i++ ) {
+ identifiers.put( list.get( i ),
+ i );
+ }
- HashMap<String, Integer> identifiers = new HashMap<String, Integer>();
- for ( int i = 0; i < list.size(); i++ ) {
- identifiers.put( list.get( i ),
- i );
- }
+ ArrayList<ArrayList<Object>> results = new ArrayList();
+ ArrayList<ArrayList<FactHandle>> resultHandles = new ArrayList();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ ArrayList objects = new ArrayList();
+ ArrayList<FactHandle> handles = new ArrayList();
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ Object object = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
- ArrayList<ArrayList<Object>> results = new ArrayList();
- ArrayList<ArrayList<FactHandle>> resultHandles = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- ArrayList objects = new ArrayList();
- ArrayList<FactHandle> handles = new ArrayList();
- while ( reader.hasMoreChildren() ) {
- reader.moveDown();
- Object object = readItem( reader,
- context,
- null );
- reader.moveUp();
+ reader.moveDown();
+ FactHandle handle = new DefaultFactHandle( reader.getAttribute( "external-form" ) );
+ reader.moveUp();
- reader.moveDown();
- FactHandle handle = new DefaultFactHandle( reader.getAttribute( "external-form" ) );
- reader.moveUp();
+ objects.add( object );
+ handles.add( handle );
+ }
+ results.add( objects );
+ resultHandles.add( handles );
+ reader.moveUp();
+ }
- objects.add( object );
- handles.add( handle );
- }
- results.add( objects );
- resultHandles.add( handles );
- reader.moveUp();
- }
+ return new FlatQueryResults( identifiers,
+ results,
+ resultHandles );
+ }
- return new FlatQueryResults( identifiers,
- results,
- resultHandles );
- }
-
- public boolean canConvert(Class clazz) {
- return QueryResults.class.isAssignableFrom( clazz );
- }
- }
+ public boolean canConvert(Class clazz) {
+ return QueryResults.class.isAssignableFrom( clazz );
+ }
+}
}
More information about the jboss-svn-commits
mailing list