[jboss-svn-commits] JBL Code SVN: r25515 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools and 34 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 6 01:30:32 EST 2009
Author: mark.proctor at jboss.com
Date: 2009-03-06 01:30:32 -0500 (Fri, 06 Mar 2009)
New Revision: 25515
Added:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/Command.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecution.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutionResult.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutor.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchRequestMessage.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelper.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelperProvider.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResults.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/batch/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertElementsCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/QueryCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchMessageHelperProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionResultImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BatchExecutorStage.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertObjectCommandStage.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/Cheese.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
Removed:
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/FactParams.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/GlobalParams.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Parameters.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/FactParamsImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/GlobalParamsImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java
Modified:
labs/jbossrules/trunk/drools-api/.classpath
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatelessRuleSession.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
labs/jbossrules/trunk/drools-compiler/.classpath
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
labs/jbossrules/trunk/drools-core/.classpath
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AddEventListenerCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CompleteWorkItemCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireAllRulesCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireUntilHaltCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaEventListenersCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetEnvironmentCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandleCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandlesCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalsCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetKnowledgeBaseCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectsCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessEventListenersCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstanceCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstancesCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetSessionClockCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEntryPointCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEventListenersCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/HaltCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertObjectCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterExitPointCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterWorkItemHandlerCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RemoveEventListenerCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RetractCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SetGlobalCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UnregisterExitPointCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UpdateCommand.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java
labs/jbossrules/trunk/drools-persistence-jpa/.classpath
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java
labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/.classpath
labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath
labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/.classpath
labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/.classpath
labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java
labs/jbossrules/trunk/drools-server/.classpath
Log:
JBRULES-1993 BatchExeution and message format
Modified: labs/jbossrules/trunk/drools-api/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-api/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -16,23 +16,23 @@
<classpathentry kind="var" path="M2_REPO/org/freemarker/freemarker/2.3.9/freemarker-2.3.9.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.0/jaxb-api-2.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.0.3/jaxb-impl-2.0.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-xjc/2.0.3/jaxb-xjc-2.0.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.9/jaxb-impl-2.1.9.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-xjc/2.1.9/jaxb-xjc-2.1.9.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/jms/jms/1.1/jms-1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
<classpathentry kind="var" path="M2_REPO/net/sf/jxls/jxls-reader/0.9.6/jxls-reader-0.9.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
<classpathentry kind="var" path="M2_REPO/org/milyn/milyn-commons/1.1/milyn-commons-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/milyn/milyn-smooks-core/1.1/milyn-smooks-core-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/milyn/milyn-smooks-javabean/1.1/milyn-smooks-javabean-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.3.12-java1.5/mvel-1.3.12-java1.5.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/poi/poi/3.0.2-FINAL/poi-3.0.2-FINAL.jar"/>
- <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.8.0/xercesImpl-2.8.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.jar"/>
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/Command.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/Command.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/Command.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,5 @@
+package org.drools.command;
+
+public interface Command<T> {
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactory.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,103 @@
+package org.drools.command;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.ProviderInitializationException;
+
+public class CommandFactory {
+ private static volatile CommandFactoryProvider provider;
+
+ public static Command newInsertObject(Object object) {
+ return getCommandFactoryProvider().newInsertObject( object );
+ }
+
+ public static Command newInsertObject(Object object,
+ String outIdentifier) {
+ return getCommandFactoryProvider().newInsertObject( object,
+ outIdentifier );
+ }
+
+ public static Command newInsertElements(Collection collection) {
+ return getCommandFactoryProvider().newInsertElements( collection );
+ }
+
+ public static Command newSetGlobal(String identifier,
+ Object object) {
+ return getCommandFactoryProvider().newSetGlobal( identifier,
+ object );
+ }
+
+ public static Command newSetGlobal(String identifier,
+ Object object,
+ boolean out) {
+ return getCommandFactoryProvider().newSetGlobal( identifier,
+ object,
+ out );
+ }
+
+ public static Command newSetGlobal(String identifier,
+ Object object,
+ String outIdentifier) {
+ return getCommandFactoryProvider().newSetGlobal( identifier,
+ object,
+ outIdentifier );
+ }
+
+ public static Command newGetGlobal(String identifier) {
+ return getCommandFactoryProvider().newGetGlobal( identifier );
+ }
+
+ public static Command newGetGlobal(String identifier,
+ String outIdentifier) {
+ return getCommandFactoryProvider().newGetGlobal( identifier,
+ outIdentifier );
+ }
+
+ public static Command newStartProcess(String processId) {
+ return getCommandFactoryProvider().newStartProcess( processId );
+ }
+
+ public static Command newStartProcess(String processId,
+ Map<String, Object> parameters) {
+ return getCommandFactoryProvider().newStartProcess( processId );
+ }
+
+ public static Command newQuery(String identifier,
+ String name) {
+ return getCommandFactoryProvider().newQuery( identifier, name );
+
+ }
+
+ public static Command newQuery(String identifier,
+ String name,
+ Object[] arguments) {
+ return getCommandFactoryProvider().newQuery( identifier, name, arguments );
+ }
+
+ public static Command newBatchExecution(List<? extends Command> commands) {
+ return getCommandFactoryProvider().newBatchExecution( commands );
+ }
+
+ private static synchronized void setCommandFactoryProvider(CommandFactoryProvider provider) {
+ CommandFactory.provider = provider;
+ }
+
+ private static synchronized CommandFactoryProvider getCommandFactoryProvider() {
+ if ( provider == null ) {
+ loadProvider();
+ }
+ return provider;
+ }
+
+ private static void loadProvider() {
+ try {
+ Class<CommandFactoryProvider> cls = (Class<CommandFactoryProvider>) Class.forName( "org.drools.command.impl.CommandFactoryProviderImpl" );
+ setCommandFactoryProvider( cls.newInstance() );
+ } catch ( Exception e2 ) {
+ throw new ProviderInitializationException( "Provider org.drools.command.impl.CommandFactoryProviderImpl could not be set.",
+ e2 );
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/command/CommandFactoryProvider.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,44 @@
+package org.drools.command;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+public interface CommandFactoryProvider {
+ Command newInsertObject(Object object);
+
+ Command newInsertObject(Object object,
+ String outIdentifier);
+
+ Command newInsertElements(Collection collection);
+
+ Command newSetGlobal(String identifie,
+ Object object);
+
+ Command newSetGlobal(String identifier,
+ Object object,
+ boolean out);
+
+ Command newSetGlobal(String identifier,
+ Object object,
+ String outIdentifier);
+
+ Command newGetGlobal(String identifier);
+
+ Command newGetGlobal(String identifier,
+ String outIdentifier);
+
+ Command newStartProcess(String processId);
+
+ Command newStartProcess(String processId,
+ Map<String, Object> parameters);
+
+ Command newQuery(String identifier,
+ String name);
+
+ Command newQuery(String identifier,
+ String name,
+ Object[] arguments);
+
+ Command newBatchExecution(List<? extends Command> commands);
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecution.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecution.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecution.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,7 @@
+package org.drools.runtime;
+
+import org.drools.command.Command;
+
+public interface BatchExecution extends Command {
+
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutionResult.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutionResult.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutionResult.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,11 @@
+package org.drools.runtime;
+
+import java.util.Collection;
+
+public interface BatchExecutionResult {
+
+ Collection<String> getIdentifiers();
+
+ Object getValue(String identifier);
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutor.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutor.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchExecutor.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,7 @@
+package org.drools.runtime;
+
+import org.drools.command.Command;
+
+public interface BatchExecutor {
+ public BatchExecutionResult execute(Command command);
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchRequestMessage.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchRequestMessage.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/BatchRequestMessage.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,7 @@
+package org.drools.runtime;
+
+import java.util.List;
+
+public interface BatchRequestMessage {
+ List<org.drools.command.Command> getCommands();
+}
Deleted: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/FactParams.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/FactParams.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/FactParams.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,12 +0,0 @@
-package org.drools.runtime;
-
-import java.util.Collection;
-import java.util.Map;
-
-public interface FactParams {
- void setIn(Map<String, ? > in);
-
- void setOut(Collection<String> out);
-
- void setInOut(Map<String, ? > inOut);
-}
Deleted: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/GlobalParams.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/GlobalParams.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/GlobalParams.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,15 +0,0 @@
-package org.drools.runtime;
-
-import java.util.Collection;
-import java.util.Map;
-
-/**
- *
- */
-public interface GlobalParams {
- void setIn(Map<String, ? > in);
-
- void setOut(Collection<String> out);
-
- void setInOut(Map<String, ? > inOut);
-}
Deleted: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Parameters.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Parameters.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/Parameters.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +0,0 @@
-package org.drools.runtime;
-
-public interface Parameters {
- GlobalParams getGlobalParams();
-
- FactParams getFactParams();
-}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatefulKnowledgeSession.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -61,6 +61,7 @@
extends
StatefulRuleSession,
StatefulProcessSession,
+ BatchExecutor,
KnowledgeRuntime {
int getId();
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/StatelessKnowledgeSession.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -92,6 +92,7 @@
extends
StatelessRuleSession,
StatelessProcessSession,
+ BatchExecutor,
KnowledgeRuntimeEventManager {
/**
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelper.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelper.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,37 @@
+package org.drools.runtime.help;
+
+import org.drools.ProviderInitializationException;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.KnowledgeBuilderProvider;
+import org.milyn.Smooks;
+
+import com.thoughtworks.xstream.XStream;
+
+public class BatchExecutionHelper {
+ private static volatile BatchExecutionHelperProvider provider;
+
+ public static XStream newXStreamMarshaller() {
+ return getBatchExecutionHelperProvider().newXStreamMarshaller();
+ }
+
+ private static synchronized void setBatchExecutionHelperProvider(BatchExecutionHelperProvider provider) {
+ BatchExecutionHelper.provider = provider;
+ }
+
+ private static synchronized BatchExecutionHelperProvider getBatchExecutionHelperProvider() {
+ if ( provider == null ) {
+ loadProvider();
+ }
+ return provider;
+ }
+
+ private static void loadProvider() {
+ try {
+ Class<BatchExecutionHelperProvider> cls = (Class<BatchExecutionHelperProvider>) Class.forName( "org.drools.runtime.help.impl.BatchMessageHelperProviderImpl" );
+ setBatchExecutionHelperProvider( cls.newInstance() );
+ } catch ( Exception e2 ) {
+ throw new ProviderInitializationException( "Provider org.drools.runtime.help.impl.BatchMessageHelperProviderImpl could not be set.",
+ e2 );
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelperProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelperProvider.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/help/BatchExecutionHelperProvider.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,7 @@
+package org.drools.runtime.help;
+
+import com.thoughtworks.xstream.XStream;
+
+public interface BatchExecutionHelperProvider {
+ XStream newXStreamMarshaller();
+}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/CorePipelineProvider.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -10,11 +10,16 @@
Pipeline newStatefulKnowledgeSessionPipeline(StatefulKnowledgeSession ksession,
String entryPointName);
- Pipeline newStatelessKnowledgeSessionPipelineImpl(StatelessKnowledgeSession ksession);
+ Pipeline newStatelessKnowledgeSessionPipeline(StatelessKnowledgeSession ksession);
+
+ KnowledgeRuntimeCommand newBatchExecutor();
+
+ KnowledgeRuntimeCommand newInsertObjectCommand();
+
+ KnowledgeRuntimeCommand newInsertElementsCommand();
KnowledgeRuntimeCommand newStatefulKnowledgeSessionInsert();
- KnowledgeRuntimeCommand newStatelessKnowledgeSessionExecute();
KnowledgeRuntimeCommand newStatefulKnowledgeSessionGetGlobal();
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineContext.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,6 +2,8 @@
import java.util.Map;
+import org.drools.runtime.BatchExecutor;
+
public interface PipelineContext {
ClassLoader getClassLoader();
@@ -13,5 +15,7 @@
Object getResult();
ResultHandler getResultHandler();
+
+ BatchExecutor getBatchExecutor();
}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -203,9 +203,23 @@
* @return
*/
public static Pipeline newStatelessKnowledgeSessionPipeline(StatelessKnowledgeSession ksession) {
- return getCorePipelineProvider().newStatelessKnowledgeSessionPipelineImpl( ksession );
+ return getCorePipelineProvider().newStatelessKnowledgeSessionPipeline( ksession );
}
+
+
+ public static KnowledgeRuntimeCommand newBatchExecutor() {
+ return getCorePipelineProvider().newBatchExecutor();
+ }
+
+ public static KnowledgeRuntimeCommand newInsertElementsCommand() {
+ return getCorePipelineProvider().newInsertElementsCommand();
+ }
+
+ public static KnowledgeRuntimeCommand newInsertObjectCommand() {
+ return getCorePipelineProvider().newInsertObjectCommand();
+ }
+
/**
* Insert the payload into the StatefulKnowledgeSesssion referenced in the context. This stage
* expects the returned FactHandles to be stored in a HashMap of the PipelineContext result property.
@@ -216,40 +230,6 @@
}
/**
- * Executes a StatelessKnowledgeSession. StatelessKnowledgeSessions sessions have four possible execution. Execute against an object
- * and execute against an Iterable and both with and without Paramters. See StatelessKnowledgeSession for more details on what those
- * mean. To control which execution method is used the StatelessKnowledgeSessionPipelineContext has three properties; object, iterable
- * and parameters. These can be assigned using an MVEL action stage, which has access to that context, the "this" object is assumed
- * to be the propagating payload object. If no properties are set it will call executeObject against the propagating payload. The same
- * is true if just the object property is assigned. If the Iterable property is assigned it all call executeIterable. Finally the WithParamaters
- * method will be called for each of those if the parameters property is set.
- *
- * <pre>
- * Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
- *
- * KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
- * execute.setReceiver( executeResultHandler );
- *
- * Action assignParameters = PipelineFactory.newMvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
- * assignParameters.setReceiver( execute );
- *
- * Action assignIterable = PipelineFactory.newMvelAction( "context.setIterable( this )");
- * assignIterable.setReceiver( assignParameters );
- *
- * Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline(ksession);
- * pipeline.setReceiver( assignIterable );
- *
- * ResultHandlerImpl handler = new ResultHandlerImpl();
- *
- * pipeline.insert( object, handler );
- * </pre>
- * @return
- */
- public static KnowledgeRuntimeCommand newStatelessKnowledgeSessionExecute() {
- return getCorePipelineProvider().newStatelessKnowledgeSessionExecute();
- }
-
- /**
* The payload here is expected to be a String and the global will be set on the PipelineContext result property. The propagating
* object will also be switched to the results.
* @return
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/StatelessKnowledgeSessionPipelineContext.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,5 @@
package org.drools.runtime.pipeline;
-import org.drools.runtime.Parameters;
import org.drools.runtime.StatelessKnowledgeSession;
public interface StatelessKnowledgeSessionPipelineContext
@@ -9,14 +8,5 @@
StatelessKnowledgeSession getStatelessKnowledgeSession();
- void setObject(Object object);
- Object getObject();
-
- void setIterable(Iterable iterable);
-
- Iterable getIterable();
-
- Parameters getParameters();
-
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResults.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResults.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,11 @@
+package org.drools.runtime.rule;
+
+import java.util.Iterator;
+
+public interface QueryResults extends Iterable<QueryResultsRow> {
+ String[] getIdentifiers();
+
+ Iterator<QueryResultsRow> iterator();
+
+ int size();
+}
Added: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java (rev 0)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/QueryResultsRow.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,5 @@
+package org.drools.runtime.rule;
+
+public interface QueryResultsRow {
+ public Object get(String identifier);
+}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatelessRuleSession.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatelessRuleSession.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/StatelessRuleSession.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,5 @@
package org.drools.runtime.rule;
-import org.drools.runtime.Parameters;
import org.drools.runtime.StatelessKnowledgeSessionResults;
/**
@@ -17,38 +16,13 @@
*
* @param object
*/
- void executeObject(Object object);
+ void execute(Object object);
/**
* Execute a StatelessKnowledSession, iterate the Iterable inserting each of it's elements. If you have an array, use the Arrays.asList(...) method
* to make that array Iterable.
* @param objects
*/
- void executeIterable(Iterable< ? > objects);
+ void execute(Iterable objects);
- /**
- * Will execute as with executeObject, but also allows the use of the Parameters class.
- *
- * @param object
- * @param parameters
- * @return
- */
- StatelessKnowledgeSessionResults executeObjectWithParameters(Object object,
- Parameters parameters);
-
- /**
- * Will execute as with executeIterable, but also allows the use of the Parameters class.
- *
- * @param objects
- * @param parameters
- * @return
- */
- StatelessKnowledgeSessionResults executeIterableWithParameters(Iterable< ? > objects,
- Parameters parameters);
-
- /**
- * Factory method to create and return a Parameters instance, which can be used to pass in, out, inOut parameters to an execution call.
- * @return
- */
- Parameters newParameters();
}
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/rule/WorkingMemory.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -104,4 +104,35 @@
* @return
*/
WorkingMemoryEntryPoint getWorkingMemoryEntryPoint(String name);
+
+ /**
+ * Retrieve the QueryResults of the specified query.
+ *
+ * @param query
+ * The name of the query.
+ *
+ * @return The QueryResults of the specified query.
+ * If no results match the query it is empty.
+ *
+ * @throws IllegalArgumentException
+ * if no query named "query" is found in the KnowledgeBase
+ */
+ public QueryResults getQueryResults(String query);
+
+ /**
+ * Retrieve the QueryResults of the specified query and arguments
+ *
+ * @param query
+ * The name of the query.
+ *
+ * @param arguments
+ * The arguments used for the query
+ *
+ * @return The QueryResults of the specified query.
+ * If no results match the query it is empty.
+ *
+ * @throws IllegalArgumentException
+ * if no query named "query" is found in the KnowledgeBase
+ */
+ public QueryResults getQueryResults(String query, Object[] arguments);
}
Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-compiler/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -20,10 +20,10 @@
<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty-util/6.1.9/jetty-util-6.1.9.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/servlet-api-2.5/6.1.9/servlet-api-2.5-6.1.9.jar"/>
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -27,9 +27,11 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import junit.framework.Assert;
import junit.framework.TestCase;
@@ -130,6 +132,7 @@
import org.drools.rule.builder.dialect.java.JavaDialectConfiguration;
import org.drools.runtime.Globals;
import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.runtime.rule.impl.FlatQueryResults;
import org.drools.spi.ConsequenceExceptionHandler;
import org.drools.spi.GlobalResolver;
import org.drools.xml.XmlDumper;
@@ -2974,6 +2977,126 @@
results.get( 0 ).get( 0 ) );
}
+ public void testQueryWithParamsOnKnowledgeApi() throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newClassPathResource( "test_QueryWithParams.drl" , getClass() ), ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ kbase = SerializationHelper.serializeObject( kbase );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ksession.fireAllRules();
+
+ org.drools.runtime.rule.QueryResults results = ksession.getQueryResults( "assertedobjquery",
+ new String[]{"value1"} );
+ assertEquals( 1,
+ results.size() );
+// assertEquals( new InsertedObject( "value1" ),
+// results.get( 0 ).get( 0 ) );
+
+ results = ksession.getQueryResults( "assertedobjquery",
+ new String[]{"value3"} );
+ assertEquals( 0,
+ results.size() );
+
+ results = ksession.getQueryResults( "assertedobjquery2",
+ new String[]{null, "value2"} );
+ assertEquals( 1,
+ results.size() );
+
+ assertEquals( new InsertedObject( "value2" ), ((org.drools.runtime.rule.QueryResultsRow)results.iterator().next()).get( "assertedobj" ) );
+
+ results = ksession.getQueryResults( "assertedobjquery2",
+ new String[]{"value3", "value2"} );
+ assertEquals( 1,
+ results.size() );
+ assertEquals( new InsertedObject( "value2" ), ((org.drools.runtime.rule.QueryResultsRow)results.iterator().next()).get( "assertedobj" ) );
+ }
+
+ public void testQueryWithMultipleResultsOnKnowledgeApi() 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";
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ kbase = SerializationHelper.serializeObject( kbase );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Cheese stilton1 = new Cheese( "stilton", 1);
+ Cheese cheddar1 = new Cheese( "cheddar", 1);
+ Cheese stilton2 = new Cheese( "stilton", 2);
+ Cheese cheddar2 = new Cheese( "cheddar", 2);
+ Cheese stilton3 = new Cheese( "stilton", 3);
+ Cheese cheddar3 = new Cheese( "cheddar", 3);
+
+ 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 );
+
+ list = new ArrayList();
+ list.add(stilton3);
+ list.add(cheddar3);
+ set.add( list );
+
+ ksession.insert( stilton1 );
+ ksession.insert( stilton2 );
+ ksession.insert( stilton3 );
+ ksession.insert( cheddar1 );
+ ksession.insert( cheddar2 );
+ ksession.insert( cheddar3 );
+
+ org.drools.runtime.rule.QueryResults results = ksession.getQueryResults( "cheeses" );
+ assertEquals( 3, 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 );
+
+
+ FlatQueryResults flatResults = new FlatQueryResults( ((StatefulKnowledgeSessionImpl)ksession).session.getQueryResults( "cheeses" ) );
+ assertEquals( 3, flatResults.size() );
+ assertEquals( 2, flatResults.getIdentifiers().length );
+ newSet = new HashSet();
+ for ( org.drools.runtime.rule.QueryResultsRow result : flatResults ) {
+ list = new ArrayList();
+ list.add( result.get( "stilton" ) );
+ list.add( result.get( "cheddar" ));
+ newSet.add( list );
+ }
+ assertEquals( set, newSet );
+ }
+
public void testTwoQuerries() throws Exception {
// @see JBRULES-410 More than one Query definition causes an incorrect
// Rete network to be built.
@@ -4599,8 +4722,8 @@
}
- // @FIXME see JBRULES-1808
- public void FIXME_testKnowledgeHelperFixerInStrings() {
+ // JBRULES-1808
+ public void testKnowledgeHelperFixerInStrings() {
String str = "";
str += "package org.simple \n";
str += "global java.util.List list \n";
Deleted: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessKnowledgeSessionPipelineTest.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,315 +0,0 @@
-package org.drools.integrationtests;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import junit.framework.TestCase;
-
-import org.drools.KnowledgeBase;
-import org.drools.KnowledgeBaseFactory;
-import org.drools.StatelessSessionResult;
-import org.drools.builder.KnowledgeBuilder;
-import org.drools.builder.KnowledgeBuilderFactory;
-import org.drools.builder.ResourceType;
-import org.drools.io.ResourceFactory;
-import org.drools.runtime.Parameters;
-import org.drools.runtime.StatelessKnowledgeSession;
-import org.drools.runtime.StatelessKnowledgeSessionResults;
-import org.drools.runtime.pipeline.Action;
-import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
-import org.drools.runtime.pipeline.Pipeline;
-import org.drools.runtime.pipeline.PipelineFactory;
-import org.drools.runtime.pipeline.ResultHandler;
-import org.drools.runtime.pipeline.impl.MvelAction;
-import org.drools.runtime.pipeline.impl.StatefulKnowledgeSessionInsertStage;
-import org.drools.runtime.pipeline.impl.StatelessKnowledgeSessionExecuteStage;
-import org.drools.runtime.pipeline.impl.StatelessKnowledgeSessionPipelineImpl;
-
-public class StatelessKnowledgeSessionPipelineTest extends TestCase {
- public void testExecuteObjectAsDefault() {
- String str = "";
- str += "package org.sample \n";
- str += "global java.util.List list; \n";
- str += "rule rule1 \n";
- str += " when \n";
- str += " s : String() \n";
- str += " then \n";
- str += " list.add( s ); ";
- str += "end\n";
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-
- if ( kbuilder.hasErrors() ) {
- System.out.println( kbuilder.getErrors() );
- }
- assertFalse( kbuilder.hasErrors() );
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
- StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
- List list = new ArrayList();
- ksession.setGlobal( "list", list );
-
-
- StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
-
- StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
- pipeline.setReceiver( stage1 );
-
- pipeline.insert( "hello world", null );
-
- assertEquals( 1, list.size() );
-
- assertEquals( "hello world", list.get( 0 ) );
- }
-
- public void testExecuteObject() {
- String str = "";
- str += "package org.sample \n";
- str += "global java.util.List list; \n";
- str += "rule rule1 \n";
- str += " when \n";
- str += " s : String() \n";
- str += " then \n";
- str += " list.add( s ); ";
- str += "end\n";
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-
- if ( kbuilder.hasErrors() ) {
- System.out.println( kbuilder.getErrors() );
- }
- assertFalse( kbuilder.hasErrors() );
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
- StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
- List list = new ArrayList();
- ksession.setGlobal( "list", list );
-
-
- MvelAction mvelAction = new MvelAction( "context.object = this");
- StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
- mvelAction.setReceiver( stage1 );
-
- StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
- pipeline.setReceiver( mvelAction );
-
- pipeline.insert( "hello world", null );
-
- assertEquals( 1, list.size() );
-
- assertEquals( "hello world", list.get( 0 ) );
- }
-
- public void testExecuteIterable() {
- String str = "";
- str += "package org.sample \n";
- str += "global java.util.List list; \n";
- str += "rule rule1 \n";
- str += " when \n";
- str += " s : String() \n";
- str += " then \n";
- str += " list.add( s ); ";
- str += "end\n";
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-
- if ( kbuilder.hasErrors() ) {
- System.out.println( kbuilder.getErrors() );
- }
- assertFalse( kbuilder.hasErrors() );
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
- StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
- List list = new ArrayList();
- ksession.setGlobal( "list", list );
-
-
- MvelAction mvelAction = new MvelAction( "context.setIterable( this )");
- StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
- mvelAction.setReceiver( stage1 );
-
- StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
- pipeline.setReceiver( mvelAction );
-
- List items = new ArrayList();
- items.add( "hello world" );
- items.add( "goodbye world" );
-
- pipeline.insert( items, null );
-
- assertEquals( 2, list.size() );
-
- Collections.sort( list );
- assertEquals( "goodbye world", list.get( 0 ) );
- assertEquals( "hello world", list.get( 1 ) );
- }
-
- public void testExecuteObjectAsDefaultWithParameters() {
- String str = "";
- str += "package org.sample \n";
- str += "global java.util.List list; \n";
- str += "rule rule1 \n";
- str += " when \n";
- str += " s : String() \n";
- str += " then \n";
- str += " list.add( s ); ";
- str += "end\n";
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-
- if ( kbuilder.hasErrors() ) {
- System.out.println( kbuilder.getErrors() );
- }
- assertFalse( kbuilder.hasErrors() );
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
- StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-
- MvelAction mvelAction2 = new MvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
-
- StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
- mvelAction2.setReceiver( stage1 );
-
- MvelAction mvelAction3 = new MvelAction( "context.resultHandler.handleResult( context.result )");
- stage1.setReceiver( mvelAction3 );
-
- StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
- pipeline.setReceiver( mvelAction2 );
-
- ResultHandlerImpl handler = new ResultHandlerImpl();
-
- pipeline.insert( "hello world", handler );
-
- List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
-
- assertEquals( 1, list.size() );
-
- assertEquals( "hello world", list.get( 0 ) );
- }
-
- public void testExecuteObjectWithParameters() {
- String str = "";
- str += "package org.sample \n";
- str += "global java.util.List list; \n";
- str += "rule rule1 \n";
- str += " when \n";
- str += " s : String() \n";
- str += " then \n";
- str += " list.add( s ); ";
- str += "end\n";
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-
- if ( kbuilder.hasErrors() ) {
- System.out.println( kbuilder.getErrors() );
- }
- assertFalse( kbuilder.hasErrors() );
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
- StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-
- MvelAction mvelAction1 = new MvelAction( "context.object = this");
- MvelAction mvelAction2 = new MvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
-
- mvelAction1.setReceiver( mvelAction2 );
-
- StatelessKnowledgeSessionExecuteStage stage1 = new StatelessKnowledgeSessionExecuteStage();
- mvelAction2.setReceiver( stage1 );
-
- MvelAction mvelAction3 = new MvelAction( "context.resultHandler.handleResult( context.result )");
- stage1.setReceiver( mvelAction3 );
-
- StatelessKnowledgeSessionPipelineImpl pipeline = new StatelessKnowledgeSessionPipelineImpl(ksession);
- pipeline.setReceiver( mvelAction1 );
-
- ResultHandlerImpl handler = new ResultHandlerImpl();
-
- pipeline.insert( "hello world", handler );
-
- List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
-
- assertEquals( 1, list.size() );
-
- assertEquals( "hello world", list.get( 0 ) );
- }
-
- public void testExecuteIterableWithParameters() {
- String str = "";
- str += "package org.sample \n";
- str += "global java.util.List list; \n";
- str += "rule rule1 \n";
- str += " when \n";
- str += " s : String() \n";
- str += " then \n";
- str += " list.add( s ); ";
- str += "end\n";
-
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
-
- if ( kbuilder.hasErrors() ) {
- System.out.println( kbuilder.getErrors() );
- }
- assertFalse( kbuilder.hasErrors() );
-
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
- StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
-
- Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
-
- KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
- execute.setReceiver( executeResultHandler );
-
- Action assignParameters = PipelineFactory.newMvelAction( "context.parameters.globalParams.setInOut( ['list' : new java.util.ArrayList()] )");
- assignParameters.setReceiver( execute );
-
- Action assignIterable = PipelineFactory.newMvelAction( "context.setIterable( this )");
- assignIterable.setReceiver( assignParameters );
-
- Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline(ksession);
- pipeline.setReceiver( assignIterable );
-
- ResultHandlerImpl handler = new ResultHandlerImpl();
-
- List items = new ArrayList();
- items.add( "hello world" );
- items.add( "goodbye world" );
-
- pipeline.insert( items, handler );
-
- List list = (List)handler.getStatelessKnowledgeSessionResults().getValue( "list" );
-
- assertEquals( 2, list.size() );
-
- Collections.sort( list );
- assertEquals( "goodbye world", list.get( 0 ) );
- assertEquals( "hello world", list.get( 1 ) );
- }
-
- public static class ResultHandlerImpl implements ResultHandler {
- StatelessKnowledgeSessionResults results;
-
- public void handleResult(Object object) {
- this.results = ( StatelessKnowledgeSessionResults ) object;
- }
-
- public StatelessKnowledgeSessionResults getStatelessKnowledgeSessionResults() {
- return this.results;
- }
-
- }
-}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StatelessSessionTest.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -5,8 +5,10 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import junit.framework.TestCase;
@@ -25,14 +27,19 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
+import org.drools.command.Command;
+import org.drools.command.CommandFactory;
import org.drools.compiler.PackageBuilder;
import org.drools.definition.KnowledgePackage;
-import org.drools.impl.ParametersImpl;
+import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.io.Resource;
import org.drools.io.ResourceFactory;
import org.drools.rule.Package;
-import org.drools.runtime.Parameters;
+import org.drools.runtime.BatchExecutionResult;
+import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSessionResults;
+import org.drools.runtime.rule.impl.FlatQueryResults;
import org.drools.spi.GlobalResolver;
public class StatelessSessionTest extends TestCase {
@@ -58,7 +65,7 @@
final Cheese stilton = new Cheese( "stilton",
5 );
- session.executeObject( stilton );
+ session.execute( stilton );
assertEquals( "stilton",
list.get( 0 ) );
@@ -70,7 +77,7 @@
final Cheese stilton = new Cheese( "stilton",
5 );
- session.executeIterable( Arrays.asList( new Object[]{stilton} ) );
+ session.execute( Arrays.asList( new Object[]{stilton} ) );
assertEquals( "stilton",
list.get( 0 ) );
@@ -84,181 +91,256 @@
List collection = new ArrayList();
collection.add( stilton );
- session.executeIterable( collection );
+ session.execute( collection );
assertEquals( "stilton",
list.get( 0 ) );
}
-
- public void testSingleObjectAssertWithResults() throws Exception {
- StatelessKnowledgeSession session = getSession2( "literal_rule_test.drl" );
-
- // notice I don't export Cheessery
- Parameters parameters = session.newParameters();
- parameters.getGlobalParams().setOut( Arrays.asList( new String[]{"list"} ) );
-
- final Cheese stilton = new Cheese( "stilton",
- 5 );
-
- StatelessKnowledgeSessionResults results = session.executeObjectWithParameters( stilton,
- parameters );
+
+ public void testInsertObject() 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( 30 ); \n";
+ str += "end\n";
- assertEquals( 1, results.getIdentifiers().size() );
- assertTrue( results.getIdentifiers().contains( "list" ));
-
- assertEquals( "stilton",
- ((List) results.getValue( "list" )).get( 0 ) );
-
- // cheesery should be null
- assertNull( results.getValue( "cheesery" ) );
+ Cheese stilton = new Cheese( "stilton", 5 );
+
+ StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ Command cmd = CommandFactory.newInsertObject( stilton, "outStilton" );
+ BatchExecutionResult result = ksession.execute( cmd );
+ stilton = ( Cheese ) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
}
-
- public void testArrayObjectAssertWithResults() throws Exception {
- StatelessKnowledgeSession session = getSession2( "literal_rule_test.drl" );
-
- // notice I don't export Cheessery
- Parameters parameters = session.newParameters();
- parameters.getGlobalParams().setOut( Arrays.asList( new String[]{"list"} ) );
-
- final Cheese stilton = new Cheese( "stilton",
- 5 );
-
- StatelessKnowledgeSessionResults results = session.executeIterableWithParameters( Arrays.asList( new Object[]{stilton} ),
- parameters );
-
- assertEquals( 1, results.getIdentifiers().size() );
- assertTrue( results.getIdentifiers().contains( "list" ));
-
- assertEquals( "stilton",
- ((List) results.getValue( "list" )).get( 0 ) );
-
- // cheesery should be null
- assertNull( results.getValue( "cheesery" ) );
- }
-
- public void testCollectionObjectAssertWithResults() throws Exception {
- StatelessKnowledgeSession session = getSession2( "literal_rule_test.drl" );
-
- // notice I don't export Cheessery
- Parameters parameters = session.newParameters();
- parameters.getGlobalParams().setOut( Arrays.asList( new String[]{"list"} ) );
-
- final Cheese stilton = new Cheese( "stilton",
- 5 );
-
- List collection = new ArrayList();
- collection.add( stilton );
- StatelessKnowledgeSessionResults results = session.executeIterableWithParameters( collection,
- parameters );
-
- assertEquals( 1, results.getIdentifiers().size() );
- assertTrue( results.getIdentifiers().contains( "list" ));
-
- assertEquals( "stilton",
- ((List) results.getValue( "list" )).get( 0 ) );
-
- // cheesery should be null
- assertNull( results.getValue( "cheesery" ) );
- }
- public void testInAndOutParams() throws Exception {
- StatelessKnowledgeSession session = getSession2( "testStatelessKnowledgeSessionInOutParams.drl" );
-
-
- final Cheese stilton = new Cheese( "stilton",
- 5 );
+ 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";
- final Cheese cheddar = new Cheese( "cheddar",
- 25 );
+ Cheese stilton = new Cheese( "stilton", 5 );
+ List list1 = new ArrayList();
+ List list2 = new ArrayList();
+ List list3 = new ArrayList();
- // notice I don't export Cheessery
- Parameters parameters = session.newParameters();
- Map<String, Object> globalsIn = new HashMap<String, Object>();
- globalsIn.put( "inString", "string" );
- parameters.getGlobalParams().setIn( globalsIn );
- parameters.getGlobalParams().setOut( Arrays.asList( new String[]{"list"} ) );
+ StatelessKnowledgeSession ksession = getSession2( ResourceFactory.newByteArrayResource( str.getBytes() ) );
+ Command setGlobal1 = CommandFactory.newSetGlobal( "list1", list1 );
+ Command setGlobal2 = CommandFactory.newSetGlobal( "list2", list2, true );
+ Command setGlobal3 = CommandFactory.newSetGlobal( "list3", list3, "outList3" );
+ Command insert = CommandFactory.newInsertObject( stilton );
- Map<String, Object> factIn = new HashMap<String, Object>();
- factIn.put( "inCheese", cheddar );
- parameters.getFactParams().setIn( factIn );
- parameters.getFactParams().setOut( Arrays.asList( new String[]{ "outCheese"} ) );
-
- StatelessKnowledgeSessionResults results = session.executeObjectWithParameters( stilton,
- parameters );
-
- assertEquals( 2, results.getIdentifiers().size() );
- assertTrue( results.getIdentifiers().contains( "list" ));
- assertTrue( results.getIdentifiers().contains( "outCheese" ));
+ List cmds = new ArrayList();
+ cmds.add( setGlobal1 );
+ cmds.add( setGlobal2 );
+ cmds.add( setGlobal3 );
+ cmds.add( insert );
- assertEquals( new Cheese( "brie", 50), results.getValue( "outCheese" ) );
-
- assertEquals( "rule1 cheddar",
- ((List) results.getValue( "list" )).get( 0 ) );
+ BatchExecutionResult result = ksession.execute( CommandFactory.newBatchExecution( cmds ) );
- assertEquals( "rule2 stilton",
- ((List) results.getValue( "list" )).get( 1 ) );
+ assertEquals( 30,
+ stilton.getPrice() );
- assertEquals( "rule3 brie",
- ((List) results.getValue( "list" )).get( 2 ) );
+ assertNull( result.getValue( "list1" ) );
- assertEquals( "rule4 string",
- ((List) results.getValue( "list" )).get( 3 ) );
-
- // cheesery should be null
- assertNull( results.getValue( "cheesery" ) );
+ list2 = ( List ) result.getValue( "list2" );
+ assertEquals( 1, list2.size() );
+ assertSame( stilton, list2.get( 0 ) );
- }
+
+
+ list3 = ( List ) result.getValue( "outList3" );
+ assertEquals( 1, list3.size() );
+ assertSame( stilton, list3.get( 0 ) );
+ }
- public void testInOutAndOutParams() throws Exception {
- StatelessKnowledgeSession session = getSession2( "testStatelessKnowledgeSessionInOutParams.drl" );
+ 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";
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ kbase = SerializationHelper.serializeObject( kbase );
- final Cheese stilton = new Cheese( "stilton",
- 5 );
+ StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
+ Cheese stilton1 = new Cheese( "stilton", 1);
+ Cheese cheddar1 = new Cheese( "cheddar", 1);
+ Cheese stilton2 = new Cheese( "stilton", 2);
+ Cheese cheddar2 = new Cheese( "cheddar", 2);
+ Cheese stilton3 = new Cheese( "stilton", 3);
+ Cheese cheddar3 = new Cheese( "cheddar", 3);
- final Cheese cheddar = new Cheese( "cheddar",
- 25 );
+ Set set = new HashSet();
+ List list = new ArrayList();
+ list.add(stilton1);
+ list.add(cheddar1);
+ set.add( list );
- // notice I don't export Cheessery
- Parameters parameters = session.newParameters();
- Map<String, Object> globalsInOut = new HashMap<String, Object>();
- globalsInOut.put( "inString", "string" );
- parameters.getGlobalParams().setInOut( globalsInOut );
- parameters.getGlobalParams().setOut( Arrays.asList( new String[]{"list"} ) );
+ list = new ArrayList();
+ list.add(stilton2);
+ list.add(cheddar2);
+ set.add( list );
- Map<String, Object> factInOut = new HashMap<String, Object>();
- factInOut.put( "inCheese", cheddar );
- parameters.getFactParams().setInOut( factInOut );
- parameters.getFactParams().setOut( Arrays.asList( new String[]{ "outCheese"} ) );
-
- StatelessKnowledgeSessionResults results = session.executeObjectWithParameters( stilton,
- parameters );
-
- assertEquals( 4, results.getIdentifiers().size() );
- assertTrue( results.getIdentifiers().contains( "list" ));
- assertTrue( results.getIdentifiers().contains( "inString" ));
- assertTrue( results.getIdentifiers().contains( "inCheese" ));
- assertTrue( results.getIdentifiers().contains( "outCheese" ));
+ list = new ArrayList();
+ list.add(stilton3);
+ list.add(cheddar3);
+ set.add( list );
- assertEquals( new Cheese( "brie", 50), results.getValue( "outCheese" ) );
-
- assertEquals( "rule1 cheddar",
- ((List) results.getValue( "list" )).get( 0 ) );
+ List<Command> cmds = new ArrayList<Command>();
+ cmds.add( CommandFactory.newInsertObject( stilton1 ) );
+ cmds.add( CommandFactory.newInsertObject( stilton2 ) );
+ cmds.add( CommandFactory.newInsertObject( stilton3 ) );
+ cmds.add( CommandFactory.newInsertObject( cheddar1 ) );
+ cmds.add( CommandFactory.newInsertObject( cheddar2 ) );
+ cmds.add( CommandFactory.newInsertObject( cheddar3 ) );
- assertEquals( "rule2 stilton",
- ((List) results.getValue( "list" )).get( 1 ) );
+ cmds.add( CommandFactory.newQuery( "cheeses", "cheeses" ) );
- assertEquals( "rule3 brie",
- ((List) results.getValue( "list" )).get( 2 ) );
+ BatchExecutionResult batchResult = ksession.execute( CommandFactory.newBatchExecution( cmds ) );
- assertEquals( "rule4 string",
- ((List) results.getValue( "list" )).get( 3 ) );
-
- // cheesery should be null
- assertNull( results.getValue( "cheesery" ) );
-
+ org.drools.runtime.rule.QueryResults results = ( org.drools.runtime.rule.QueryResults) batchResult.getValue( "cheeses" );
+ assertEquals( 3, 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 );
}
+ // @TODO need to figure out if we need to support "out" params
+// public void testInAndOutParams() throws Exception {
+// StatelessKnowledgeSession session = getSession2( "testStatelessKnowledgeSessionInOutParams.drl" );
+//
+//
+// final Cheese stilton = new Cheese( "stilton",
+// 5 );
+//
+// final Cheese cheddar = new Cheese( "cheddar",
+// 25 );
+//
+// // notice I don't export Cheessery
+// Parameters parameters = session.newParameters();
+// Map<String, Object> globalsIn = new HashMap<String, Object>();
+// globalsIn.put( "inString", "string" );
+// parameters.getGlobalParams().setIn( globalsIn );
+// parameters.getGlobalParams().setOut( Arrays.asList( new String[]{"list"} ) );
+//
+// Map<String, Object> factIn = new HashMap<String, Object>();
+// factIn.put( "inCheese", cheddar );
+// parameters.getFactParams().setIn( factIn );
+// parameters.getFactParams().setOut( Arrays.asList( new String[]{ "outCheese"} ) );
+//
+// StatelessKnowledgeSessionResults results = session.executeObjectWithParameters( stilton,
+// parameters );
+//
+// assertEquals( 2, results.getIdentifiers().size() );
+// assertTrue( results.getIdentifiers().contains( "list" ));
+// assertTrue( results.getIdentifiers().contains( "outCheese" ));
+//
+// assertEquals( new Cheese( "brie", 50), results.getValue( "outCheese" ) );
+//
+// assertEquals( "rule1 cheddar",
+// ((List) results.getValue( "list" )).get( 0 ) );
+//
+// assertEquals( "rule2 stilton",
+// ((List) results.getValue( "list" )).get( 1 ) );
+//
+// assertEquals( "rule3 brie",
+// ((List) results.getValue( "list" )).get( 2 ) );
+//
+// assertEquals( "rule4 string",
+// ((List) results.getValue( "list" )).get( 3 ) );
+//
+// // cheesery should be null
+// assertNull( results.getValue( "cheesery" ) );
+//
+// }
+//
+// public void testInOutAndOutParams() throws Exception {
+// StatelessKnowledgeSession session = getSession2( "testStatelessKnowledgeSessionInOutParams.drl" );
+//
+//
+// final Cheese stilton = new Cheese( "stilton",
+// 5 );
+//
+// final Cheese cheddar = new Cheese( "cheddar",
+// 25 );
+//
+// // notice I don't export Cheessery
+// Parameters parameters = session.newParameters();
+// Map<String, Object> globalsInOut = new HashMap<String, Object>();
+// globalsInOut.put( "inString", "string" );
+// parameters.getGlobalParams().setInOut( globalsInOut );
+// parameters.getGlobalParams().setOut( Arrays.asList( new String[]{"list"} ) );
+//
+// Map<String, Object> factInOut = new HashMap<String, Object>();
+// factInOut.put( "inCheese", cheddar );
+// parameters.getFactParams().setInOut( factInOut );
+// parameters.getFactParams().setOut( Arrays.asList( new String[]{ "outCheese"} ) );
+//
+// StatelessKnowledgeSessionResults results = session.executeObjectWithParameters( stilton,
+// parameters );
+//
+// assertEquals( 4, results.getIdentifiers().size() );
+// assertTrue( results.getIdentifiers().contains( "list" ));
+// assertTrue( results.getIdentifiers().contains( "inString" ));
+// assertTrue( results.getIdentifiers().contains( "inCheese" ));
+// assertTrue( results.getIdentifiers().contains( "outCheese" ));
+//
+// assertEquals( new Cheese( "brie", 50), results.getValue( "outCheese" ) );
+//
+// assertEquals( "rule1 cheddar",
+// ((List) results.getValue( "list" )).get( 0 ) );
+//
+// assertEquals( "rule2 stilton",
+// ((List) results.getValue( "list" )).get( 1 ) );
+//
+// assertEquals( "rule3 brie",
+// ((List) results.getValue( "list" )).get( 2 ) );
+//
+// assertEquals( "rule4 string",
+// ((List) results.getValue( "list" )).get( 3 ) );
+//
+// // cheesery should be null
+// assertNull( results.getValue( "cheesery" ) );
+//
+// }
+
public void testAsynSingleOjbectcAssert() throws Exception {
StatelessSession session = getSession();
@@ -394,8 +476,12 @@
}
private StatelessKnowledgeSession getSession2(String fileName) throws Exception {
+ return getSession2( ResourceFactory.newClassPathResource( fileName, getClass() ) );
+ }
+
+ private StatelessKnowledgeSession getSession2(Resource resource) throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- kbuilder.add( ResourceFactory.newClassPathResource( fileName, getClass() ), ResourceType.DRL );
+ kbuilder.add( resource, ResourceType.DRL );
if (kbuilder.hasErrors() ) {
System.out.println( kbuilder.getErrors() );
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -47,6 +47,7 @@
import org.drools.runtime.Environment;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.impl.BatchExecutionResultImpl;
import org.drools.spi.Activation;
import org.drools.spi.AgendaFilter;
import org.drools.spi.AsyncExceptionHandler;
@@ -525,4 +526,19 @@
return null;
}
+ public void endBatchExecution() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public BatchExecutionResultImpl getBatchExecutionResult() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void startBatchExecution() {
+ // TODO Auto-generated method stub
+
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -11,9 +11,9 @@
<classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/QueryResults.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -31,7 +31,7 @@
* get a specific row. All the available Declarations used in the query can also be accessed.
*
*/
-public class QueryResults {
+public class QueryResults implements Iterable<QueryResult>{
private Query query;
private Map declarations;
@@ -61,7 +61,7 @@
*
* @return
*/
- public Iterator iterator() {
+ public Iterator<QueryResult> iterator() {
return new QueryResultsIterator( this.results.iterator() );
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/command/impl/CommandFactoryProviderImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,101 @@
+package org.drools.command.impl;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.command.Command;
+import org.drools.command.CommandFactoryProvider;
+import org.drools.process.command.GetGlobalCommand;
+import org.drools.process.command.InsertElementsCommand;
+import org.drools.process.command.InsertObjectCommand;
+import org.drools.process.command.QueryCommand;
+import org.drools.process.command.SetGlobalCommand;
+import org.drools.process.command.StartProcessCommand;
+import org.drools.runtime.impl.BatchExecutionImpl;
+
+public class CommandFactoryProviderImpl
+ implements
+ CommandFactoryProvider {
+
+ public Command newGetGlobal(String identifier) {
+ return new GetGlobalCommand( identifier );
+ }
+
+ public Command newGetGlobal(String identifier,
+ String outIdentifier) {
+ GetGlobalCommand cmd = new GetGlobalCommand( identifier );
+ cmd.setOutIdentifier( outIdentifier );
+ return cmd;
+ }
+
+ public Command newInsertElements(Collection collection) {
+ return new InsertElementsCommand( collection );
+ }
+
+ public Command newInsertObject(Object object) {
+ return new InsertObjectCommand( object );
+ }
+
+ public Command newInsertObject(Object object,
+ String outIdentifier) {
+ InsertObjectCommand cmd = new InsertObjectCommand( object );
+ cmd.setOutIdentifier( outIdentifier );
+ return cmd;
+ }
+
+ public Command newSetGlobal(String identifier,
+ Object object) {
+ return new SetGlobalCommand( identifier,
+ object );
+ }
+
+ public Command newSetGlobal(String identifier,
+ Object object,
+ boolean out) {
+ SetGlobalCommand cmd = new SetGlobalCommand( identifier,
+ object );
+ cmd.setOut( out );
+ return cmd;
+ }
+
+ public Command newSetGlobal(String identifier,
+ Object object,
+ String outIdentifier) {
+ SetGlobalCommand cmd = new SetGlobalCommand( identifier,
+ object );
+ cmd.setOutIdentifier( outIdentifier );
+ return cmd;
+ }
+
+ public Command newStartProcess(String processId) {
+ StartProcessCommand startProcess = new StartProcessCommand();
+ startProcess.setProcessId( processId );
+ return startProcess;
+ }
+
+ public Command newStartProcess(String processId,
+ Map<String, Object> parameters) {
+ StartProcessCommand startProcess = new StartProcessCommand();
+ startProcess.setProcessId( processId );
+ startProcess.setParameters( parameters );
+ return startProcess;
+ }
+
+ public Command newQuery(String identifier,
+ String name) {
+ return new QueryCommand(identifier, name, null );
+
+ }
+
+ public Command newQuery(String identifier,
+ String name,
+ Object[] arguments) {
+ return new QueryCommand(identifier, name, arguments);
+ }
+
+ public Command newBatchExecution(List<? extends Command> commands) {
+ return new BatchExecutionImpl( (List<org.drools.process.command.Command>)commands );
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -84,11 +84,13 @@
import org.drools.rule.Rule;
import org.drools.rule.TimeMachine;
import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.BatchExecutionResult;
import org.drools.runtime.Environment;
import org.drools.runtime.EnvironmentName;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.Globals;
import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.impl.BatchExecutionResultImpl;
import org.drools.runtime.process.EventListener;
import org.drools.runtime.process.WorkItemHandler;
import org.drools.spi.Activation;
@@ -213,6 +215,8 @@
private Map<String, ExitPoint> exitPoints;
private Environment environment;
+
+ private BatchExecutionResult batchExecutionResult;
// ------------------------------------------------------------
// Constructors
@@ -1819,6 +1823,20 @@
public PartitionTaskManager getPartitionManager(final RuleBasePartitionId partitionId) {
return partitionManagers.get( partitionId );
}
+
+ public void startBatchExecution() {
+ this.lock.lock();
+ this.batchExecutionResult = new BatchExecutionResultImpl();
+ }
+
+ public BatchExecutionResultImpl getBatchExecutionResult() {
+ return ( BatchExecutionResultImpl ) this.batchExecutionResult;
+ }
+
+ public void endBatchExecution() {
+ this.batchExecutionResult = null;
+ this.lock.unlock();
+ }
// public static class FactHandleInvalidation implements WorkingMemoryAction
// {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -17,8 +17,10 @@
import org.drools.reteoo.PartitionTaskManager;
import org.drools.rule.Rule;
import org.drools.rule.TimeMachine;
+import org.drools.runtime.BatchExecutionResult;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.KnowledgeRuntime;
+import org.drools.runtime.impl.BatchExecutionResultImpl;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.spi.Activation;
import org.drools.spi.FactHandleFactory;
@@ -129,4 +131,11 @@
public Map<String, ? extends WorkingMemoryEntryPoint> getEntryPoints();
public SessionConfiguration getSessionConfiguration();
+
+
+ public void startBatchExecution();
+
+ public BatchExecutionResultImpl getBatchExecutionResult();
+
+ public void endBatchExecution();
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/FactParamsImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/FactParamsImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/FactParamsImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,37 +0,0 @@
-package org.drools.impl;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.drools.runtime.FactParams;
-
-public class FactParamsImpl implements FactParams {
- Map<String, ? > in;
- Map<String, ? > inOut;
- Collection<String> out;
-
- public void setIn(Map<String, ? > in) {
- this.in = in;
- }
-
- public Map<String, ? > getIn() {
- return in;
- }
-
- public void setInOut(Map<String, ? > inOut) {
- this.inOut = inOut;
- }
-
- public Map<String, ? > getInOut() {
- return inOut;
- }
-
- public void setOut(Collection<String> out) {
- this.out = out;
- }
-
- public Collection<String> getOut() {
- return out;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/GlobalParamsImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/GlobalParamsImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/GlobalParamsImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,37 +0,0 @@
-package org.drools.impl;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.drools.runtime.GlobalParams;
-
-public class GlobalParamsImpl implements GlobalParams {
- Map<String, ? > in;
- Map<String, ? > inOut;
- Collection<String> out;
-
- public void setIn(Map<String, ? > in) {
- this.in = in;
- }
-
- public Map<String, ? > getIn() {
- return in;
- }
-
- public void setInOut(Map<String, ? > inOut) {
- this.inOut = inOut;
- }
-
- public Map<String, ? > getInOut() {
- return inOut;
- }
-
- public void setOut(Collection<String> out) {
- this.out = out;
- }
-
- public Collection<String> getOut() {
- return out;
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/ParametersImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,42 +0,0 @@
-package org.drools.impl;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.drools.runtime.FactParams;
-import org.drools.runtime.GlobalParams;
-import org.drools.runtime.Parameters;
-
-public class ParametersImpl implements Parameters {
- private FactParamsImpl factParams = new FactParamsImpl();
- private GlobalParamsImpl globalParams = new GlobalParamsImpl();
-
- public FactParams getFactParams() {
- return this.factParams;
- }
-
- public GlobalParams getGlobalParams() {
- return this.globalParams;
- }
-
- public boolean isEmpty() {
- if ( !isEmpty(factParams.getIn() ) || !isEmpty( factParams.getOut() ) || !isEmpty( factParams.getInOut() ) ) {
- return false;
- }
-
- if ( !isEmpty(globalParams.getIn() ) || !isEmpty( globalParams.getOut() ) || !isEmpty( globalParams.getInOut() ) ) {
- return false;
- }
-
- return true;
- }
-
- public boolean isEmpty(Collection collection) {
- return collection == null || collection.isEmpty();
- }
-
- public boolean isEmpty(Map map) {
- return map == null || map.isEmpty();
- }
-
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatefulKnowledgeSessionImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -11,6 +11,7 @@
import org.drools.KnowledgeBase;
import org.drools.RuleBase;
import org.drools.WorkingMemory;
+import org.drools.command.Command;
import org.drools.common.InternalAgenda;
import org.drools.common.InternalFactHandle;
import org.drools.common.InternalWorkingMemory;
@@ -50,6 +51,8 @@
import org.drools.event.rule.impl.ObjectRetractedEventImpl;
import org.drools.event.rule.impl.ObjectUpdatedEventImpl;
import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.runtime.BatchExecutionResult;
+import org.drools.runtime.BatchExecutor;
import org.drools.runtime.Environment;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.Globals;
@@ -59,14 +62,17 @@
import org.drools.runtime.rule.Agenda;
import org.drools.runtime.rule.AgendaFilter;
import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.QueryResults;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.runtime.rule.impl.AgendaImpl;
+import org.drools.runtime.rule.impl.NativeQueryResults;
import org.drools.spi.Activation;
import org.drools.time.SessionClock;
public class StatefulKnowledgeSessionImpl
implements
StatefulKnowledgeSession,
+ BatchExecutor,
InternalWorkingMemoryEntryPoint {
public ReteooWorkingMemory session;
public KnowledgeBaseImpl kbase;
@@ -615,4 +621,24 @@
return this.kbase.ruleBase;
}
+ public QueryResults getQueryResults(String query) {
+ return new NativeQueryResults( this.session.getQueryResults( query ));
+ }
+
+ public QueryResults getQueryResults(String query,
+ Object[] arguments) {
+ return new NativeQueryResults( this.session.getQueryResults( query, arguments ) );
+ }
+
+ public BatchExecutionResult execute(Command command) {
+ try {
+ session.startBatchExecution();
+ ((org.drools.process.command.Command)command).execute( session );
+ BatchExecutionResult result = session.getBatchExecutionResult();
+ return result;
+ } finally {
+ session.endBatchExecution();
+ }
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -10,6 +10,7 @@
import org.drools.SessionConfiguration;
import org.drools.base.MapGlobalResolver;
+import org.drools.command.Command;
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalWorkingMemory;
import org.drools.event.AgendaEventSupport;
@@ -26,10 +27,10 @@
import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
import org.drools.rule.EntryPoint;
+import org.drools.runtime.BatchExecutionResult;
import org.drools.runtime.Environment;
import org.drools.runtime.Globals;
import org.drools.runtime.KnowledgeSessionConfiguration;
-import org.drools.runtime.Parameters;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSessionResults;
import org.drools.spi.AgendaFilter;
@@ -192,136 +193,34 @@
return this.sessionGlobals;
}
- public void executeObject(Object object) {
- InternalWorkingMemory wm = newWorkingMemory();
-
- wm.insert( object );
- wm.fireAllRules( this.agendaFilter );
- }
-
- public void executeIterable(Iterable< ? > objects) {
- InternalWorkingMemory wm = newWorkingMemory();
-
- for ( Object object : objects ) {
- wm.insert( object );
+ public BatchExecutionResult execute(Command command) {
+ ReteooWorkingMemory session = ( ReteooWorkingMemory ) newWorkingMemory();
+ try {
+ session.startBatchExecution();
+ ((org.drools.process.command.Command)command).execute( session );
+ session.fireAllRules( this.agendaFilter );
+ BatchExecutionResult result = session.getBatchExecutionResult();
+ return result;
+ } finally {
+ session.endBatchExecution();
}
- wm.fireAllRules( this.agendaFilter );
}
- public StatelessKnowledgeSessionResults executeObjectWithParameters(Object object,
- Parameters parameters) {
+ public void execute(Object object) {
InternalWorkingMemory wm = newWorkingMemory();
wm.insert( object );
-
- Map<String, Object> results = new HashMap<String, Object>();
-
- executeInParams( wm,
- parameters,
- results );
-
wm.fireAllRules( this.agendaFilter );
-
- getOutParams( wm,
- parameters,
- results );
-
- return new StatelessKnowledgeSessionResultsImpl( results );
-
}
- public StatelessKnowledgeSessionResults executeIterableWithParameters(Iterable< ? > objects,
- Parameters parameters) {
+ public void execute(Iterable objects) {
InternalWorkingMemory wm = newWorkingMemory();
for ( Object object : objects ) {
wm.insert( object );
}
-
- Map<String, Object> results = new HashMap<String, Object>();
-
- executeInParams( wm,
- parameters,
- results );
-
wm.fireAllRules( this.agendaFilter );
-
- getOutParams( wm,
- parameters,
- results );
-
- return new StatelessKnowledgeSessionResultsImpl( results );
-
}
- private void executeInParams(InternalWorkingMemory wm,
- Parameters parameters,
- Map<String, Object> results) {
- Map<String, ? > map = ((FactParamsImpl) parameters.getFactParams()).getIn();
- if ( map != null && !map.isEmpty() ) {
- for ( Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
- Entry<String, Object> entry = (Entry<String, Object>) it.next();
- wm.setGlobal( entry.getKey(),
- entry.getValue() );
- wm.insert( entry.getValue() );
- }
- }
- map = ((FactParamsImpl) parameters.getFactParams()).getInOut();
- if ( map != null && !map.isEmpty() ) {
- for ( Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
- Entry<String, Object> entry = (Entry<String, Object>) it.next();
- wm.setGlobal( entry.getKey(),
- entry.getValue() );
- results.put( entry.getKey(),
- entry.getValue() );
- wm.insert( entry.getValue() );
- }
- }
-
- map = ((GlobalParamsImpl) parameters.getGlobalParams()).getIn();
- if ( map != null && !map.isEmpty() ) {
- for ( Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
- Entry<String, Object> entry = (Entry<String, Object>) it.next();
- wm.setGlobal( entry.getKey(),
- entry.getValue() );
- }
- }
-
- map = ((GlobalParamsImpl) parameters.getGlobalParams()).getInOut();
- if ( map != null && !map.isEmpty() ) {
- for ( Iterator it = map.entrySet().iterator(); it.hasNext(); ) {
- Entry<String, Object> entry = (Entry<String, Object>) it.next();
- results.put( entry.getKey(),
- entry.getValue() );
- wm.setGlobal( entry.getKey(),
- entry.getValue() );
- }
- }
- }
-
- private void getOutParams(InternalWorkingMemory wm,
- Parameters parameters,
- Map<String, Object> results) {
- Collection<String> col = ((FactParamsImpl) parameters.getFactParams()).getOut();
- if ( col != null && !col.isEmpty() ) {
- for ( String identifer : col ) {
- results.put( identifer,
- wm.getGlobal( identifer ) );
- }
- }
-
- col = ((GlobalParamsImpl) parameters.getGlobalParams()).getOut();
- if ( col != null && !col.isEmpty() ) {
- for ( String identifer : col ) {
- results.put( identifer,
- wm.getGlobal( identifer ) );
- }
- }
- }
-
- public Parameters newParameters() {
- return new ParametersImpl();
- }
-
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AbortWorkItemCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
public class AbortWorkItemCommand
implements
@@ -16,7 +16,7 @@
this.workItemId = workItemId;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
session.getWorkItemManager().abortWorkItem( workItemId );
return null;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AddEventListenerCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AddEventListenerCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/AddEventListenerCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,9 +1,9 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.event.AgendaEventListener;
import org.drools.event.RuleFlowEventListener;
import org.drools.event.WorkingMemoryEventListener;
+import org.drools.reteoo.ReteooWorkingMemory;
public class AddEventListenerCommand
implements
@@ -25,7 +25,7 @@
this.ruleFlowEventlistener = listener;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
if ( workingMemoryEventlistener != null ) {
session.addEventListener( workingMemoryEventlistener );
} else if ( agendaEventlistener != null ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/Command.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,9 +1,9 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
-public interface Command<T> {
+public interface Command<T> extends org.drools.command.Command {
- T execute(StatefulSession session);
+ T execute(ReteooWorkingMemory session);
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CompleteWorkItemCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CompleteWorkItemCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/CompleteWorkItemCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -3,7 +3,7 @@
import java.util.HashMap;
import java.util.Map;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
public class CompleteWorkItemCommand implements Command<Object> {
@@ -26,7 +26,7 @@
this.results = results;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
session.getWorkItemManager().completeWorkItem(workItemId, results);
return null;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireAllRulesCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireAllRulesCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireAllRulesCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +1,7 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.AgendaFilter;
public class FireAllRulesCommand
@@ -22,7 +22,7 @@
this.agendaFilter = agendaFilter;
}
- public Integer execute(StatefulSession session) {
+ public Integer execute(ReteooWorkingMemory session) {
if ( max > 0 ) {
return session.fireAllRules( max );
} else if ( agendaFilter != null ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireUntilHaltCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireUntilHaltCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/FireUntilHaltCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +1,7 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.impl.StatefulKnowledgeSessionImpl;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.AgendaFilter;
public class FireUntilHaltCommand
@@ -17,7 +17,7 @@
this.agendaFilter = agendaFilter;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
if ( agendaFilter != null ) {
session.fireUntilHalt( new StatefulKnowledgeSessionImpl.AgendaFilterWrapper( agendaFilter ) );
} else {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,13 +1,13 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.Agenda;
public class GetAgendaCommand
implements
Command<Agenda> {
- public Agenda execute(StatefulSession session) {
+ public Agenda execute(ReteooWorkingMemory session) {
return session.getAgenda();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaEventListenersCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaEventListenersCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetAgendaEventListenersCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,14 +2,14 @@
import java.util.Collection;
-import org.drools.StatefulSession;
import org.drools.event.AgendaEventListener;
+import org.drools.reteoo.ReteooWorkingMemory;
public class GetAgendaEventListenersCommand
implements
Command<Collection<AgendaEventListener>> {
- public Collection<AgendaEventListener> execute(StatefulSession session) {
+ public Collection<AgendaEventListener> execute(ReteooWorkingMemory session) {
return session.getAgendaEventListeners();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetEnvironmentCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetEnvironmentCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetEnvironmentCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,13 +1,13 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.Environment;
public class GetEnvironmentCommand
implements
Command<Environment> {
- public Environment execute(StatefulSession session) {
+ public Environment execute(ReteooWorkingMemory session) {
return session.getEnvironment();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandleCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandleCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandleCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.FactHandle;
public class GetFactHandleCommand
@@ -13,7 +13,7 @@
this.object = object;
}
- public FactHandle execute(StatefulSession session) {
+ public FactHandle execute(ReteooWorkingMemory session) {
session.getFactHandle( object );
return null;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandlesCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandlesCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetFactHandlesCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,9 +2,9 @@
import java.util.Collection;
-import org.drools.StatefulSession;
import org.drools.impl.StatefulKnowledgeSessionImpl.ObjectStoreWrapper;
import org.drools.reteoo.ReteooStatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.ObjectFilter;
import org.drools.runtime.rule.FactHandle;
@@ -21,7 +21,7 @@
this.filter = filter;
}
- public Collection< ? extends FactHandle> execute(StatefulSession session) {
+ public Collection< ? extends FactHandle> execute(ReteooWorkingMemory session) {
ReteooStatefulSession reteooStatefulSession = (ReteooStatefulSession) session;
if ( filter != null ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,21 +1,37 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
public class GetGlobalCommand
implements
Command<Object> {
private String identifier;
+ private String outIdentifier;
public GetGlobalCommand(String identifier) {
this.identifier = identifier;
}
- public Object execute(StatefulSession session) {
- return session.getGlobal( identifier );
+ public String getOutIdentifier() {
+ return outIdentifier;
}
+ public void setOutIdentifier(String outIdentifier) {
+ this.outIdentifier = outIdentifier;
+ }
+
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ public Object execute(ReteooWorkingMemory session) {
+ Object object = session.getGlobal( this.identifier );
+ session.getBatchExecutionResult().getResults().put( (this.outIdentifier != null) ? this.outIdentifier : this.identifier,
+ object );
+ return object;
+ }
+
public String toString() {
return "session.getGlobal( " + identifier + " );";
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalsCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalsCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetGlobalsCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,13 +1,13 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.Globals;
public class GetGlobalsCommand
implements
Command<Globals> {
- public Globals execute(StatefulSession session) {
+ public Globals execute(ReteooWorkingMemory session) {
return (Globals) session.getGlobalResolver();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetKnowledgeBaseCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetKnowledgeBaseCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetKnowledgeBaseCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,8 +2,8 @@
import org.drools.KnowledgeBase;
import org.drools.RuleBase;
-import org.drools.StatefulSession;
import org.drools.impl.KnowledgeBaseImpl;
+import org.drools.reteoo.ReteooWorkingMemory;
public class GetKnowledgeBaseCommand
implements
@@ -12,7 +12,7 @@
public GetKnowledgeBaseCommand() {
}
- public KnowledgeBase execute(StatefulSession session) {
+ public KnowledgeBase execute(ReteooWorkingMemory session) {
RuleBase ruleBase = session.getRuleBase();
return new KnowledgeBaseImpl( ruleBase );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.FactHandle;
public class GetObjectCommand
@@ -13,7 +13,7 @@
this.factHandle = factHandle;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
return session.getObject( factHandle );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectsCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectsCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetObjectsCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,7 +2,7 @@
import java.util.Iterator;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.ObjectFilter;
public class GetObjectsCommand
@@ -18,7 +18,7 @@
this.filter = filter;
}
- public Iterator< ? > execute(StatefulSession session) {
+ public Iterator< ? > execute(ReteooWorkingMemory session) {
if ( filter != null ) {
return session.iterateObjects( filter );
} else {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessEventListenersCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessEventListenersCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessEventListenersCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,14 +2,14 @@
import java.util.Collection;
-import org.drools.StatefulSession;
import org.drools.event.RuleFlowEventListener;
+import org.drools.reteoo.ReteooWorkingMemory;
public class GetProcessEventListenersCommand
implements
Command<Collection<RuleFlowEventListener>> {
- public Collection<RuleFlowEventListener> execute(StatefulSession session) {
+ public Collection<RuleFlowEventListener> execute(ReteooWorkingMemory session) {
return session.getRuleFlowEventListeners();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstanceCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstanceCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstanceCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +1,7 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.process.instance.ProcessInstance;
+import org.drools.reteoo.ReteooWorkingMemory;
public class GetProcessInstanceCommand implements Command<ProcessInstance> {
@@ -15,7 +15,7 @@
this.processInstanceId = processInstanceId;
}
- public ProcessInstance execute(StatefulSession session) {
+ public ProcessInstance execute(ReteooWorkingMemory session) {
if (processInstanceId == null) {
return null;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstancesCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstancesCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetProcessInstancesCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -3,14 +3,14 @@
import java.util.ArrayList;
import java.util.Collection;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.process.ProcessInstance;
public class GetProcessInstancesCommand
implements
Command<Collection<ProcessInstance>> {
- public Collection<ProcessInstance> execute(StatefulSession session) {
+ public Collection<ProcessInstance> execute(ReteooWorkingMemory session) {
Collection<org.drools.process.instance.ProcessInstance> instances = session.getProcessInstances();
Collection<ProcessInstance> result = new ArrayList<ProcessInstance>();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetSessionClockCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetSessionClockCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetSessionClockCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,13 +1,13 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.time.SessionClock;
public class GetSessionClockCommand
implements
Command<SessionClock> {
- public SessionClock execute(StatefulSession session) {
+ public SessionClock execute(ReteooWorkingMemory session) {
return session.getSessionClock();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEntryPointCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEntryPointCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEntryPointCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
public class GetWorkingMemoryEntryPointCommand
@@ -13,7 +13,7 @@
this.name = name;
}
- public WorkingMemoryEntryPoint execute(StatefulSession session) {
+ public WorkingMemoryEntryPoint execute(ReteooWorkingMemory session) {
return session.getWorkingMemoryEntryPoint( name );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEventListenersCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEventListenersCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/GetWorkingMemoryEventListenersCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,14 +2,14 @@
import java.util.Collection;
-import org.drools.StatefulSession;
import org.drools.event.WorkingMemoryEventListener;
+import org.drools.reteoo.ReteooWorkingMemory;
public class GetWorkingMemoryEventListenersCommand
implements
Command<Collection<WorkingMemoryEventListener>> {
- public Collection<WorkingMemoryEventListener> execute(StatefulSession session) {
+ public Collection<WorkingMemoryEventListener> execute(ReteooWorkingMemory session) {
return session.getWorkingMemoryEventListeners();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/HaltCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/HaltCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/HaltCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,12 +1,12 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
public class HaltCommand
implements
Command<Object> {
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
session.halt();
return null;
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertElementsCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertElementsCommand.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertElementsCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,45 @@
+package org.drools.process.command;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.runtime.rule.FactHandle;
+
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+public class InsertElementsCommand
+ implements
+ Command<Collection<FactHandle>> {
+ public Collection objects;
+
+ public InsertElementsCommand() {
+ this.objects = new ArrayList();
+ }
+
+ public InsertElementsCommand(Collection objects) {
+ this.objects = objects;
+ }
+
+ public Collection getObjects() {
+ return this.objects;
+ }
+
+ public void setObjects(Collection objects) {
+ this.objects = objects;
+ }
+
+ public Collection<FactHandle> execute(ReteooWorkingMemory session) {
+ List<FactHandle> handles = new ArrayList<FactHandle>( objects.size() );
+ for ( Object object : objects ) {
+ handles.add( session.insert( object ) );
+ }
+ return handles;
+ }
+
+ public String toString() {
+ return "insert " + objects;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertObjectCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertObjectCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/InsertObjectCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,21 +1,38 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.FactHandle;
public class InsertObjectCommand implements Command<FactHandle> {
private Object object;
+ private String outIdentifier;
+
public InsertObjectCommand(Object object) {
this.object = object;
}
- public FactHandle execute(StatefulSession session) {
+ public FactHandle execute(ReteooWorkingMemory session) {
+ if ( outIdentifier != null ) {
+ session.getBatchExecutionResult().getResults().put( this.outIdentifier, object );
+ }
return session.insert(object);
}
+
+ public Object getObject() {
+ return this.object;
+ }
- public String toString() {
+ public String getOutIdentifier() {
+ return this.outIdentifier;
+ }
+
+ public void setOutIdentifier(String outIdentifier) {
+ this.outIdentifier = outIdentifier;
+ }
+
+ public String toString() {
return "session.insert(" + object + ");";
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/QueryCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/QueryCommand.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/QueryCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,55 @@
+package org.drools.process.command;
+
+import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.runtime.BatchExecutionResult;
+import org.drools.runtime.rule.QueryResults;
+import org.drools.runtime.rule.impl.NativeQueryResults;
+
+public class QueryCommand implements Command<QueryResults> {
+ private String outIdentifier;
+ private String name;
+ private Object[] arguments;
+
+ public QueryCommand(String outIdentifier, String name, Object[] arguments) {
+ this.outIdentifier = outIdentifier;
+ this.name = name;
+ this.arguments = arguments;
+ }
+
+ public String getOutIdentifier() {
+ return outIdentifier;
+ }
+
+ public void setOutIdentifier(String outIdentifier) {
+ this.outIdentifier = outIdentifier;
+ }
+
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public Object[] getArguments() {
+ return arguments;
+ }
+ public void setArguments(Object[] arguments) {
+ this.arguments = arguments;
+ }
+
+ public QueryResults execute(ReteooWorkingMemory session) {
+ QueryResults results = null;
+
+ if ( arguments == null || arguments.length == 0 ) {
+ results = new NativeQueryResults( session.getQueryResults( name ) );
+ } else {
+ results = new NativeQueryResults( session.getQueryResults( name, this.arguments ) );
+ }
+
+ if ( this.outIdentifier != null ) {
+ session.getBatchExecutionResult().getResults().put( this.outIdentifier, results );
+ }
+
+ return results;
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterExitPointCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterExitPointCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterExitPointCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +1,7 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.reteoo.ReteooStatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.ExitPoint;
public class RegisterExitPointCommand
@@ -17,7 +17,7 @@
this.exitPoint = exitPoint;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
ReteooStatefulSession reteooStatefulSession = (ReteooStatefulSession) session;
reteooStatefulSession.registerExitPoint( name,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterWorkItemHandlerCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterWorkItemHandlerCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RegisterWorkItemHandlerCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.process.WorkItemHandler;
public class RegisterWorkItemHandlerCommand implements Command<Object> {
@@ -24,7 +24,7 @@
this.workItemName = workItemName;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
session.getWorkItemManager().registerWorkItemHandler(workItemName, handler);
return null;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RemoveEventListenerCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RemoveEventListenerCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RemoveEventListenerCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,9 +1,9 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.event.AgendaEventListener;
import org.drools.event.RuleFlowEventListener;
import org.drools.event.WorkingMemoryEventListener;
+import org.drools.reteoo.ReteooWorkingMemory;
public class RemoveEventListenerCommand
implements
@@ -25,7 +25,7 @@
this.ruleFlowEventListener = listener;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
if ( workingMemoryEventListener != null ) {
session.removeEventListener( workingMemoryEventListener );
} else if ( agendaEventListener != null ) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RetractCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RetractCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/RetractCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.FactHandle;
public class RetractCommand
@@ -13,7 +13,7 @@
this.handle = handle;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
session.retract( handle );
return null;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SetGlobalCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SetGlobalCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SetGlobalCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
public class SetGlobalCommand
implements
@@ -8,6 +8,10 @@
private String identifier;
private Object object;
+
+ private String outIdentifier;
+
+ private boolean out;
public SetGlobalCommand(String identifier,
Object object) {
@@ -15,14 +19,44 @@
this.object = object;
}
- public Void execute(StatefulSession session) {
- session.setGlobal( identifier,
- object );
+ public Void execute(ReteooWorkingMemory session) {
+ if ( this.out ) {
+ session.getBatchExecutionResult().getResults().put( ( this.outIdentifier != null ) ? this.outIdentifier : this.identifier,
+ object );
+ }
+
+ session.setGlobal( this.identifier,
+ this.object );
return null;
}
+ public String getIdentifier() {
+ return this.identifier;
+ }
+
+ public Object getObject() {
+ return this.object;
+ }
+
+ public String getOutIdentifier() {
+ return this.outIdentifier;
+ }
+
+ public void setOutIdentifier(String outIdentifier) {
+ this.outIdentifier = outIdentifier;
+ this.out = true;
+ }
+
+ public boolean isOut() {
+ return this.out;
+ }
+
+ public void setOut(boolean out) {
+ this.out = out;
+ }
+
public String toString() {
- return "session.setGlobal(" + identifier + ", " + object + ");";
+ return "session.setGlobal(" + this.identifier + ", " + this.object + ");";
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/SignalEventCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +1,7 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.process.instance.ProcessInstance;
+import org.drools.reteoo.ReteooWorkingMemory;
public class SignalEventCommand implements Command<Object> {
@@ -33,7 +33,7 @@
this.event = event;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
if (processInstanceId == -1) {
session.getSignalManager().signalEvent(eventType, event);
} else {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/StartProcessCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -4,8 +4,8 @@
import java.util.List;
import java.util.Map;
-import org.drools.StatefulSession;
import org.drools.process.instance.ProcessInstance;
+import org.drools.reteoo.ReteooWorkingMemory;
public class StartProcessCommand implements Command<ProcessInstance> {
@@ -37,7 +37,7 @@
this.data = data;
}
- public ProcessInstance execute(StatefulSession session) {
+ public ProcessInstance execute(ReteooWorkingMemory session) {
if (data != null) {
for (Object o: data) {
session.insert(o);
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UnregisterExitPointCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UnregisterExitPointCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UnregisterExitPointCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +1,7 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
import org.drools.reteoo.ReteooStatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
public class UnregisterExitPointCommand
implements
@@ -13,7 +13,7 @@
this.name = name;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
ReteooStatefulSession reteooStatefulSession = (ReteooStatefulSession) session;
reteooStatefulSession.unregisterExitPoint( name );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UpdateCommand.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UpdateCommand.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/UpdateCommand.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,6 +1,6 @@
package org.drools.process.command;
-import org.drools.StatefulSession;
+import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.runtime.rule.FactHandle;
public class UpdateCommand
@@ -16,7 +16,7 @@
this.object = object;
}
- public Object execute(StatefulSession session) {
+ public Object execute(ReteooWorkingMemory session) {
session.update( handle,
object );
return null;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/CommandBasedStatefulKnowledgeSession.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -6,6 +6,7 @@
import java.util.Map;
import org.drools.KnowledgeBase;
+import org.drools.command.Command;
import org.drools.event.process.ProcessEventListener;
import org.drools.event.rule.AgendaEventListener;
import org.drools.event.rule.WorkingMemoryEventListener;
@@ -37,6 +38,7 @@
import org.drools.process.command.GetWorkingMemoryEventListenersCommand;
import org.drools.process.command.HaltCommand;
import org.drools.process.command.InsertObjectCommand;
+import org.drools.process.command.QueryCommand;
import org.drools.process.command.RegisterExitPointCommand;
import org.drools.process.command.RegisterWorkItemHandlerCommand;
import org.drools.process.command.RemoveEventListenerCommand;
@@ -47,6 +49,7 @@
import org.drools.process.command.UnregisterExitPointCommand;
import org.drools.process.command.UpdateCommand;
import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.runtime.BatchExecutionResult;
import org.drools.runtime.Environment;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.Globals;
@@ -58,6 +61,7 @@
import org.drools.runtime.rule.Agenda;
import org.drools.runtime.rule.AgendaFilter;
import org.drools.runtime.rule.FactHandle;
+import org.drools.runtime.rule.QueryResults;
import org.drools.runtime.rule.WorkingMemoryEntryPoint;
import org.drools.time.SessionClock;
@@ -350,5 +354,29 @@
public Environment getEnvironment() {
return commandService.execute( new GetEnvironmentCommand() );
}
+
+ public BatchExecutionResult execute(Command command) {
+ try {
+ ((ReteooWorkingMemory)this.commandService.getSession()).startBatchExecution();
+
+ this.commandService.execute( (org.drools.process.command.Command) command );
+
+ BatchExecutionResult result = ((ReteooWorkingMemory)this.commandService.getSession()).getBatchExecutionResult();
+ return result;
+ } finally {
+ ((ReteooWorkingMemory)this.commandService.getSession()).endBatchExecution();
+ }
+ }
+ public QueryResults getQueryResults(String query) {
+ QueryCommand cmd = new QueryCommand(null, query, null);
+ return this.commandService.execute( cmd );
+ }
+
+ public QueryResults getQueryResults(String query,
+ Object[] arguments) {
+ QueryCommand cmd = new QueryCommand(null, query, arguments);
+ return this.commandService.execute( cmd );
+ }
+
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/process/command/impl/DefaultCommandService.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -3,17 +3,18 @@
import org.drools.StatefulSession;
import org.drools.process.command.Command;
import org.drools.process.command.CommandService;
+import org.drools.reteoo.ReteooWorkingMemory;
public class DefaultCommandService implements CommandService {
- private StatefulSession session;
+ private ReteooWorkingMemory session;
public DefaultCommandService(StatefulSession session) {
- this.session = session;
+ this.session = ( ReteooWorkingMemory ) session;
}
public StatefulSession getSession() {
- return session;
+ return ( StatefulSession ) session;
}
public <T> T execute(Command<T> command) {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -38,7 +38,7 @@
public class ReteooStatefulSession extends ReteooWorkingMemory
implements
StatefulSession,
- Externalizable {
+ Externalizable {
private static final long serialVersionUID = -5360554247241558374L;
private transient ExecutorService executor;
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchMessageHelperProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchMessageHelperProviderImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/help/impl/BatchMessageHelperProviderImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,540 @@
+package org.drools.runtime.help.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.drools.process.command.GetGlobalCommand;
+import org.drools.process.command.InsertElementsCommand;
+import org.drools.process.command.InsertObjectCommand;
+import org.drools.process.command.QueryCommand;
+import org.drools.process.command.SetGlobalCommand;
+import org.drools.process.command.StartProcessCommand;
+import org.drools.runtime.BatchExecutionResult;
+import org.drools.runtime.BatchRequestMessage;
+import org.drools.runtime.help.BatchExecutionHelperProvider;
+import org.drools.runtime.impl.BatchExecutionResultImpl;
+import org.drools.runtime.impl.BatchExecutionImpl;
+import org.drools.runtime.rule.QueryResultsRow;
+import org.drools.runtime.rule.QueryResults;
+import org.drools.runtime.rule.impl.FlatQueryResults;
+import org.drools.runtime.rule.impl.NativeQueryResults;
+
+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 BatchMessageHelperProviderImpl
+ implements
+ BatchExecutionHelperProvider {
+
+ public XStream newXStreamMarshaller() {
+ ElementNames names = new XmlElementNames();
+ //ElementNames names = new JsonElementNames();
+
+ //XStream xstream = new XStream( new JettisonMappedXmlDriver() );
+ XStream xstream = new XStream();
+ //xstream.setMode( XStream.NO_REFERENCES );
+ xstream.processAnnotations( BatchExecutionImpl.class );
+ xstream.addImplicitCollection( BatchExecutionImpl.class,
+ "commands" );
+
+ xstream.alias( "batch-execution",
+ BatchExecutionImpl.class );
+ xstream.alias( "insert",
+ InsertObjectCommand.class );
+ xstream.alias( "insert-elements",
+ InsertElementsCommand.class );
+ xstream.alias( "startProcess",
+ StartProcessCommand.class );
+ xstream.alias( "query",
+ QueryCommand.class );
+ xstream.alias( "set-global",
+ SetGlobalCommand.class );
+ xstream.alias( "get-global",
+ GetGlobalCommand.class );
+ xstream.alias( "batch-execution-results", BatchExecutionResultImpl.class );
+ xstream.alias( "query-results", FlatQueryResults.class );
+ xstream.alias( "query-results", NativeQueryResults.class );
+
+ xstream.registerConverter( new InsertConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new InsertElementsConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new StartProcessConvert( xstream.getMapper() ) );
+ xstream.registerConverter( new QueryConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new SetGlobalConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new GetGlobalConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new BatchExecutionResultConverter( xstream.getMapper() ) );
+ xstream.registerConverter( new QueryResultsConverter( xstream.getMapper() ) );
+
+ xstream.addImplicitCollection( InsertElementsCommand.class,
+ "objects" );
+
+ return xstream;
+ }
+
+ public static interface ElementNames {
+ public String getIn();
+
+ public String getInOut();
+
+ public String getOut();
+ }
+
+ public static class JsonElementNames
+ implements
+ ElementNames {
+ private String in = "in";
+ private String inOut = "inOut";
+ private String out = "out";
+
+ public String getIn() {
+ return in;
+ }
+
+ public String getInOut() {
+ return inOut;
+ }
+
+ public String getOut() {
+ return out;
+ }
+ }
+
+ public static class XmlElementNames
+ implements
+ ElementNames {
+ private String in = "in";
+ private String inOut = "in-out";
+ private String out = "out";
+
+ public String getIn() {
+ return in;
+ }
+
+ public String getInOut() {
+ return inOut;
+ }
+
+ public String getOut() {
+ return out;
+ }
+ }
+
+ public static class InsertConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+
+ public InsertConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ InsertObjectCommand cmd = (InsertObjectCommand) object;
+ if ( cmd.getOutIdentifier() != null ) {
+ writer.addAttribute( "out-identifier",
+ cmd.getOutIdentifier() );
+ }
+ writeItem( cmd.getObject(),
+ context,
+ writer );
+ }
+
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ String identifierOut = reader.getAttribute( "out-identifier" );
+
+ reader.moveDown();
+ Object object = readItem( reader,
+ context,
+ null );
+ reader.moveUp();
+ InsertObjectCommand cmd = new InsertObjectCommand( object );
+ if ( identifierOut != null ) {
+ cmd.setOutIdentifier( identifierOut );
+ }
+ return cmd;
+ }
+
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( InsertObjectCommand.class );
+ }
+
+ }
+
+ public static class InsertElementsConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+
+ public InsertElementsConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ InsertElementsCommand cmd = (InsertElementsCommand) object;
+ for ( Object element : cmd.getObjects() ) {
+ writeItem( element,
+ context,
+ writer );
+ }
+ }
+
+ public Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ 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 );
+
+ return cmd;
+ }
+
+ public boolean canConvert(Class clazz) {
+ return clazz.equals( InsertElementsCommand.class );
+ }
+
+ }
+
+ public static class SetGlobalConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+
+ public SetGlobalConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ 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 GetGlobalConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+
+ public GetGlobalConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ 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 QueryConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+
+ 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 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(Mapper mapper) {
+ super( mapper );
+ }
+
+ 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" );
+
+ Map<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 BatchExecutionResultConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+
+ public BatchExecutionResultConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ public void marshal(Object object,
+ HierarchicalStreamWriter writer,
+ MarshallingContext context) {
+ BatchExecutionResult result = (BatchExecutionResult) 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 Object unmarshal(HierarchicalStreamReader reader,
+ UnmarshallingContext context) {
+ Map map = new HashMap();
+
+ while ( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ String identifier= reader.getAttribute( "identifier" );
+ reader.moveDown();
+ Object value = readItem( reader,
+ context,
+ null );
+ map.put( identifier, value);
+ reader.moveUp();
+ reader.moveUp();
+ }
+
+ BatchExecutionResultImpl result = new BatchExecutionResultImpl();
+ result.setResults( map );
+
+ return result;
+ }
+
+ public boolean canConvert(Class clazz) {
+ return BatchExecutionResult.class.isAssignableFrom( clazz );
+ }
+}
+
+ public static class QueryResultsConverter extends AbstractCollectionConverter
+ implements
+ Converter {
+
+ public QueryResultsConverter(Mapper mapper) {
+ super( mapper );
+ }
+
+ 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++ ) {
+ 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] );
+ writeItem( 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( reader.getValue() );
+ reader.moveUp();
+ }
+ reader.moveUp();
+
+ Map<String, Integer> identifiers = new HashMap<String, Integer>();
+ for ( int i = 0; i < list.size(); i++ ) {
+ identifiers.put( list.get( i ), i);
+ }
+
+ List results = new ArrayList();
+ while( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ List objects = new ArrayList();
+ while( reader.hasMoreChildren() ) {
+ reader.moveDown();
+ Object object = readItem( reader,
+ context,
+ null );
+ objects.add( object );
+ reader.moveUp();
+ }
+ results.add( objects );
+ reader.moveUp();
+ }
+
+ return new FlatQueryResults(identifiers, results );
+ }
+
+ public boolean canConvert(Class clazz) {
+ return QueryResults.class.isAssignableFrom( clazz );
+ }
+ }
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,29 @@
+package org.drools.runtime.impl;
+
+import java.util.List;
+
+import org.drools.process.command.Command;
+import org.drools.reteoo.ReteooWorkingMemory;
+import org.drools.runtime.BatchExecutionResult;
+
+
+public class BatchExecutionImpl implements Command<Void> {
+ private List<Command> commands;
+
+ public BatchExecutionImpl(List<Command> commands) {
+ super();
+ this.commands = commands;
+ }
+
+ public List<Command> getCommands() {
+ return commands;
+ }
+
+ public Void execute(ReteooWorkingMemory session) {
+ for ( Command command : commands ) {
+ ((org.drools.process.command.Command)command).execute( session );
+ }
+ return null;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionResultImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionResultImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/impl/BatchExecutionResultImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,33 @@
+package org.drools.runtime.impl;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.runtime.BatchExecutionResult;
+
+public class BatchExecutionResultImpl implements BatchExecutionResult {
+ Map<String, Object> results = new HashMap<String, Object>();
+
+ /* (non-Javadoc)
+ * @see org.drools.batchexecution.BatchExecutionResult#getIdentifiers()
+ */
+ public Collection<String> getIdentifiers() {
+ return this.results.keySet();
+ }
+
+ public Object getValue(String identifier) {
+ return this.results.get( identifier );
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.batchexecution.BatchExecutionResult#getResults()
+ */
+ public Map<String, Object> getResults() {
+ return this.results;
+ }
+
+ public void setResults(Map<String, Object> results) {
+ this.results = results;
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BasePipelineContext.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -3,6 +3,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.drools.runtime.BatchExecutor;
import org.drools.runtime.pipeline.PipelineContext;
import org.drools.runtime.pipeline.ResultHandler;
@@ -44,5 +45,9 @@
public void setResult(Object result) {
this.result = result;
}
+
+ public BatchExecutor getBatchExecutor() {
+ throw new UnsupportedOperationException( "this method is not implemented" );
+ }
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BatchExecutorStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BatchExecutorStage.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/BatchExecutorStage.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,29 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.drools.command.Command;
+import org.drools.command.CommandFactory;
+import org.drools.runtime.BatchExecution;
+import org.drools.runtime.BatchExecutionResult;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.PipelineContext;
+
+public class BatchExecutorStage extends BaseEmitter
+ implements
+ KnowledgeRuntimeCommand {
+
+ public void receive(Object object,
+ PipelineContext context) {
+ BasePipelineContext kContext = (BasePipelineContext) context;
+ if ( object instanceof Collection ) {
+ object = CommandFactory.newBatchExecution( (List<Command>) object );
+ }
+ BatchExecutionResult result = kContext.getBatchExecutor().execute( (Command) object );
+
+ emit( result,
+ kContext );
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/CorePipelineProviderImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -2,6 +2,7 @@
import java.util.List;
+import org.drools.process.command.InsertElementsCommand;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.runtime.pipeline.Action;
@@ -28,18 +29,18 @@
entryPointName );
}
- public Pipeline newStatelessKnowledgeSessionPipelineImpl(StatelessKnowledgeSession ksession) {
+ public Pipeline newStatelessKnowledgeSessionPipeline(StatelessKnowledgeSession ksession) {
return new StatelessKnowledgeSessionPipelineImpl( ksession );
}
+
+ public KnowledgeRuntimeCommand newBatchExecutor() {
+ return new BatchExecutorStage();
+ }
public KnowledgeRuntimeCommand newStatefulKnowledgeSessionInsert() {
return new StatefulKnowledgeSessionInsertStage();
}
- public KnowledgeRuntimeCommand newStatelessKnowledgeSessionExecute() {
- return new StatelessKnowledgeSessionExecuteStage();
- }
-
public KnowledgeRuntimeCommand newStatefulKnowledgeSessionGetGlobal() {
return new StatefulKnowledgeSessionGetGlobalStage();
}
@@ -103,4 +104,12 @@
public Callable newCallable() {
return new CallableImpl();
}
+
+ public KnowledgeRuntimeCommand newInsertElementsCommand() {
+ return new InsertElementsCommandStage();
+ }
+
+ public KnowledgeRuntimeCommand newInsertObjectCommand() {
+ return new InsertObjectCommandStage();
+ }
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertElementsCommandStage.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,23 @@
+/**
+ *
+ */
+package org.drools.runtime.pipeline.impl;
+
+import java.util.Collection;
+
+import org.drools.process.command.InsertElementsCommand;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.PipelineContext;
+
+public class InsertElementsCommandStage extends BaseEmitter
+ implements
+ KnowledgeRuntimeCommand {
+
+ public void receive(Object object,
+ PipelineContext context) {
+ InsertElementsCommand cmd = new InsertElementsCommand( (Collection) object );
+
+ emit( cmd,
+ context );
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertObjectCommandStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertObjectCommandStage.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/InsertObjectCommandStage.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,33 @@
+/**
+ *
+ */
+package org.drools.runtime.pipeline.impl;
+
+import org.drools.process.command.InsertObjectCommand;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.PipelineContext;
+
+public class InsertObjectCommandStage extends BaseEmitter
+ implements
+ KnowledgeRuntimeCommand {
+ private String outIdentifier;
+
+ public InsertObjectCommandStage() {
+
+ }
+
+ public InsertObjectCommandStage(String outIdentifier) {
+ this.outIdentifier = outIdentifier;
+ }
+
+ public void receive(Object object,
+ PipelineContext context) {
+ InsertObjectCommand cmd = new InsertObjectCommand( object );
+ if ( outIdentifier != null ) {
+ cmd.setOutIdentifier( this.outIdentifier );
+ }
+
+ emit( cmd,
+ context );
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatefulKnowledgeSessionPipelineContextImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -4,6 +4,7 @@
import java.util.HashMap;
import java.util.Map;
+import org.drools.runtime.BatchExecutor;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.pipeline.ResultHandler;
import org.drools.runtime.pipeline.StatefulKnowledgeSessionPipelineContext;
@@ -32,6 +33,12 @@
public WorkingMemoryEntryPoint getEntryPoint() {
return entryPoint;
}
+
+ public BatchExecutor getBatchExecutor() {
+ return this.ksession;
+ }
+
+
}
Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionExecuteStage.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,48 +0,0 @@
-package org.drools.runtime.pipeline.impl;
-
-import org.drools.impl.ParametersImpl;
-import org.drools.runtime.StatelessKnowledgeSessionResults;
-import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
-import org.drools.runtime.pipeline.PipelineContext;
-import org.drools.runtime.pipeline.Receiver;
-import org.drools.runtime.pipeline.StatelessKnowledgeSessionPipelineContext;
-
-public class StatelessKnowledgeSessionExecuteStage extends BaseEmitter
- implements
- KnowledgeRuntimeCommand {
-
- public void receive(Object object,
- PipelineContext context) {
- StatelessKnowledgeSessionPipelineContext kContext = (StatelessKnowledgeSessionPipelineContext) context;
-
- StatelessKnowledgeSessionResults results = null;
- if ( kContext.getObject() != null ) {
- if ( kContext.getParameters() == null || ((ParametersImpl) kContext.getParameters()).isEmpty() ) {
- kContext.getStatelessKnowledgeSession().executeObject( kContext.getObject() );
- } else {
- results = kContext.getStatelessKnowledgeSession().executeObjectWithParameters( kContext.getObject(),
- kContext.getParameters() );
- }
- } else if ( kContext.getIterable() != null ) {
- if ( kContext.getParameters() == null || ((ParametersImpl) kContext.getParameters()).isEmpty() ) {
- kContext.getStatelessKnowledgeSession().executeIterable( kContext.getIterable() );
- } else {
- results = kContext.getStatelessKnowledgeSession().executeIterableWithParameters( kContext.getIterable(),
- kContext.getParameters() );
- }
- } else {
- if ( kContext.getParameters() == null || ((ParametersImpl) kContext.getParameters()).isEmpty() ) {
- kContext.getStatelessKnowledgeSession().executeObject( object );
- } else {
- results = kContext.getStatelessKnowledgeSession().executeObjectWithParameters( object,
- kContext.getParameters() );
- }
- }
-
- context.setResult( results );
-
- emit( object, context );
-
- }
-
-}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/pipeline/impl/StatelessKnowledgeSessionPipelineContextImpl.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -1,7 +1,6 @@
package org.drools.runtime.pipeline.impl;
-import org.drools.impl.ParametersImpl;
-import org.drools.runtime.Parameters;
+import org.drools.runtime.BatchExecutor;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.runtime.pipeline.ResultHandler;
import org.drools.runtime.pipeline.StatelessKnowledgeSessionPipelineContext;
@@ -11,12 +10,6 @@
StatelessKnowledgeSessionPipelineContext {
private StatelessKnowledgeSession ksession;
-
- private Iterable iterable;
-
- private Object object;
-
- private Parameters parameters;
public StatelessKnowledgeSessionPipelineContextImpl(StatelessKnowledgeSession ksession,
ClassLoader classLoader) {
@@ -31,31 +24,14 @@
super( classLoader,
resultHandler );
this.ksession = ksession;
- this.parameters = new ParametersImpl();
}
public StatelessKnowledgeSession getStatelessKnowledgeSession() {
return this.ksession;
}
- public Parameters getParameters() {
- return parameters;
+ public BatchExecutor getBatchExecutor() {
+ return this.ksession;
}
-
- public Iterable getIterable() {
- return iterable;
- }
-
- public void setIterable(Iterable iterable) {
- this.iterable = iterable;
- }
-
- public Object getObject() {
- return object;
- }
-
- public void setObject(Object object) {
- this.object = object;
- }
}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResultRow.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,24 @@
+package org.drools.runtime.rule.impl;
+
+import java.util.List;
+import java.util.Map;
+
+import org.drools.runtime.rule.QueryResultsRow;
+
+public class FlatQueryResultRow
+ implements
+ QueryResultsRow {
+ Map<String, Integer> identifiers;
+ private List result;
+
+ public FlatQueryResultRow(Map<String, Integer> identifiers, List result) {
+ this.identifiers = identifiers;
+ this.result = result;
+ }
+
+ public Object get(String identifier) {
+ return this.result.get( identifiers.get( identifier ) );
+ }
+
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/FlatQueryResults.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,90 @@
+package org.drools.runtime.rule.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.rule.Declaration;
+import org.drools.runtime.rule.QueryResultsRow;
+import org.drools.runtime.rule.QueryResults;
+
+public class FlatQueryResults
+ implements
+ QueryResults {
+ private Map<String, Integer> identifiers;
+ private List<List> results;
+
+ public FlatQueryResults(Map<String, Integer> identifiers,
+ List<List> results) {
+ this.identifiers = identifiers;
+ this.results = results;
+ }
+
+ public FlatQueryResults(org.drools.QueryResults results) {
+ Declaration[] declrs = (Declaration[]) results.getDeclarations().values().toArray( new Declaration[results.getDeclarations().size()] );
+ this.results = new ArrayList<List>( results.size() );
+
+ int length = declrs.length;
+
+ for ( org.drools.QueryResult result : results ) {
+ List<Object> row = new ArrayList<Object>();
+
+ for ( int i = 0; i < length; i++ ) {
+ Declaration declr = declrs[i];
+ row.add( result.get( declr ) );
+ }
+
+ this.results.add( row );
+ }
+
+ identifiers = new HashMap<String, Integer>( length );
+ for ( int i = 0; i < length; i++ ) {
+ identifiers.put( declrs[i].getIdentifier(),
+ i );
+ }
+
+ }
+
+ public String[] getIdentifiers() {
+ return (String[]) identifiers.keySet().toArray( new String[identifiers.size()] );
+ }
+
+ public int size() {
+ return this.results.size();
+ }
+
+ public Iterator<QueryResultsRow> iterator() {
+ return new QueryResultsIterator( identifiers,
+ this.results.iterator() );
+ }
+
+ private class QueryResultsIterator
+ implements
+ Iterator {
+ private Map<String, Integer> identifiers;
+ private Iterator iterator;
+
+ public QueryResultsIterator(Map<String, Integer> identifiers,
+ final Iterator iterator) {
+ this.identifiers = identifiers;
+ this.iterator = iterator;
+ }
+
+ public boolean hasNext() {
+ return this.iterator.hasNext();
+ }
+
+ public Object next() {
+ return new FlatQueryResultRow( identifiers,
+ (List) this.iterator.next() );
+ }
+
+ public void remove() {
+ this.iterator.remove();
+ }
+
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResultRow.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,18 @@
+package org.drools.runtime.rule.impl;
+
+import org.drools.runtime.rule.QueryResultsRow;
+
+public class NativeQueryResultRow
+ implements
+ QueryResultsRow {
+ private org.drools.QueryResult result;
+
+ public NativeQueryResultRow(org.drools.QueryResult result) {
+ this.result = result;
+ }
+
+ public Object get(String identifier) {
+ return this.result.get( identifier );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/runtime/rule/impl/NativeQueryResults.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,53 @@
+package org.drools.runtime.rule.impl;
+
+import java.util.Iterator;
+
+import org.drools.runtime.rule.QueryResultsRow;
+import org.drools.runtime.rule.QueryResults;
+
+public class NativeQueryResults
+ implements
+ QueryResults {
+
+ private org.drools.QueryResults results;
+
+ public NativeQueryResults(org.drools.QueryResults results) {
+ this.results = results;
+ }
+
+ public String[] getIdentifiers() {
+ return (String[]) this.results.getDeclarations().keySet().toArray( new String[this.results.getDeclarations().size()] );
+ }
+
+ public int size() {
+ return this.results.size();
+ }
+
+ public Iterator<QueryResultsRow> iterator() {
+ return new QueryResultsIterator( this.results.iterator() );
+ }
+
+ private class QueryResultsIterator
+ implements
+ Iterator {
+ private Iterator iterator;
+
+ public QueryResultsIterator(final Iterator iterator) {
+ this.iterator = iterator;
+ }
+
+ public boolean hasNext() {
+ return this.iterator.hasNext();
+ }
+
+ public Object next() {
+ return new NativeQueryResultRow( (org.drools.QueryResult) this.iterator.next() );
+ }
+
+ public void remove() {
+ this.iterator.remove();
+ }
+
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-persistence-jpa/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -29,10 +29,10 @@
<classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.0.1B/jta-1.0.1B.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.5.2/slf4j-api-1.5.2.jar"/>
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/session/SingleSessionCommandService.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -228,7 +228,7 @@
registerRollbackSync();
- T result = command.execute( session );
+ T result = command.execute( ( ReteooWorkingMemory ) session );
//System.out.println( "3) exec ver : " + this.sessionInfo.getVersion() );
if ( localTransaction ) {
Modified: labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-pipeline/drools-messenger-jms/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -29,11 +29,11 @@
<classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-xjc/2.0.3/jaxb-xjc-2.0.3.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
<classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
<classpathentry kind="var" path="M2_REPO/simple-jndi/simple-jndi/0.11.4/simple-jndi-0.11.4.jar"/>
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jaxb/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -20,9 +20,9 @@
<classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-xjc/2.0.3/jaxb-xjc-2.0.3.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-jxls/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -21,11 +21,11 @@
<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
<classpathentry kind="var" path="M2_REPO/net/sf/jxls/jxls-reader/0.9.6/jxls-reader-0.9.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/poi/poi/3.0.2-FINAL/poi-3.0.2-FINAL.jar"/>
</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -19,16 +19,16 @@
<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar"/>
<classpathentry kind="var" path="M2_REPO/org/milyn/milyn-commons/1.1/milyn-commons-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/milyn/milyn-smooks-core/1.1/milyn-smooks-core-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/milyn/milyn-smooks-javabean/1.1/milyn-smooks-javabean-1.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.3.12-java1.5/mvel-1.3.12-java1.5.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.8.0/xercesImpl-2.8.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/>
<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.jar"/>
<classpathentry kind="var" path="M2_REPO/xmlunit/xmlunit/1.2/xmlunit-1.2.jar"/>
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-smooks/src/test/java/org/drools/runtime/pipeline/impl/SmookStatelessSessionTest.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -3,7 +3,9 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import javax.xml.transform.stream.StreamSource;
@@ -14,17 +16,21 @@
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
+import org.drools.common.InternalFactHandle;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.help.BatchExecutionHelper;
import org.drools.runtime.pipeline.Action;
import org.drools.runtime.pipeline.Expression;
import org.drools.runtime.pipeline.Join;
import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
import org.drools.runtime.pipeline.Pipeline;
import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.Receiver;
import org.drools.runtime.pipeline.ResultHandler;
import org.drools.runtime.pipeline.Splitter;
import org.drools.runtime.pipeline.Transformer;
+import org.drools.runtime.rule.FactHandle;
import org.milyn.Smooks;
import org.milyn.io.StreamUtils;
@@ -47,14 +53,23 @@
ksession.setGlobal( "list",
list );
- KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+ Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+ Action assignResult = PipelineFactory.newAssignObjectAsResult();
+ assignResult.setReceiver( executeResultHandler );
+ KnowledgeRuntimeCommand batchExecution = PipelineFactory.newBatchExecutor();
+ batchExecution.setReceiver( assignResult );
+
+ KnowledgeRuntimeCommand insertStage = PipelineFactory.newInsertObjectCommand();
+ insertStage.setReceiver( batchExecution );
+
// Instantiate Smooks with the config...
Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
"orderItem" );
- transformer.setReceiver( execute );
+ transformer.setReceiver( insertStage );
Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
pipeline.setReceiver( transformer );
@@ -87,17 +102,26 @@
ksession.setGlobal( "list",
list );
- KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+ Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+ Action assignResult = PipelineFactory.newAssignObjectAsResult();
+ assignResult.setReceiver( executeResultHandler );
- Action mvelAction = PipelineFactory.newMvelAction( "context.setIterable( this.children )" );
- mvelAction.setReceiver( execute );
+ KnowledgeRuntimeCommand batchExecution = PipelineFactory.newBatchExecutor();
+ batchExecution.setReceiver( assignResult );
+
+ KnowledgeRuntimeCommand insertElementsStage = PipelineFactory.newInsertElementsCommand();
+ insertElementsStage.setReceiver( batchExecution );
+
+ Expression mvelExpression = PipelineFactory.newMvelExpression( "this.children" );
+ mvelExpression.setReceiver( insertElementsStage );
// Instantiate Smooks with the config...
Smooks smooks = new Smooks( getClass().getResourceAsStream( "smooks-config.xml" ) );
Transformer transformer = PipelineFactory.newSmooksFromSourceTransformer( smooks,
"root" );
- transformer.setReceiver( mvelAction );
+ transformer.setReceiver( mvelExpression );
Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
pipeline.setReceiver( transformer );
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -16,9 +16,9 @@
<classpathentry kind="var" path="M2_REPO/janino/janino/2.5.15/janino-2.5.15.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/xmlunit/xmlunit/1.2/xmlunit-1.2.jar"/>
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar"/>
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/Cheese.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/Cheese.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/Cheese.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,122 @@
+package org.drools;
+
+
+import java.io.Serializable;
+import java.util.Date;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+public class Cheese
+ implements
+ Serializable {
+
+ public static final String STILTON = "stilton";
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 400L;
+ private String type;
+ private int price;
+ private int oldPrice;
+ private Date usedBy;
+
+ public Cheese() {
+
+ }
+
+ public Cheese(final String type) {
+ super();
+ this.type = type;
+ this.price = 0;
+ }
+
+ public Cheese(final String type,
+ final int price) {
+ super();
+ this.type = type;
+ this.price = price;
+ }
+
+ public Cheese(final String type,
+ final int price,
+ final int oldPrice ) {
+ super();
+ this.type = type;
+ this.price = price;
+ this.oldPrice = oldPrice;
+ }
+
+ public int getPrice() {
+ return this.price;
+ }
+
+ public String getType() {
+ return this.type;
+ }
+
+ public void setType(final String type) {
+ this.type = type;
+ }
+
+ public void setPrice(final int price) {
+ this.price = price;
+ }
+
+ public String toString() {
+ return "Cheese( type='" + this.type + "', price=" + this.price + " )";
+ }
+
+ public int hashCode() {
+ final int PRIME = 31;
+ int result = 1;
+ result = PRIME * result + price;
+ result = PRIME * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ public boolean equals(Object obj) {
+ if ( this == obj ) return true;
+ if ( obj == null ) return false;
+ if ( getClass() != obj.getClass() ) return false;
+ final Cheese other = (Cheese) obj;
+ if ( price != other.price ) return false;
+ if ( type == null ) {
+ if ( other.type != null ) return false;
+ } else if ( !type.equals( other.type ) ) return false;
+ return true;
+ }
+
+ public int getOldPrice() {
+ return oldPrice;
+ }
+
+ public void setOldPrice(int oldPrice) {
+ this.oldPrice = oldPrice;
+ }
+
+ public Date getUsedBy() {
+ return usedBy;
+ }
+
+ public void setUsedBy(Date usedBy) {
+ this.usedBy = usedBy;
+ }
+
+
+
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamBatchExecutionTest.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -0,0 +1,454 @@
+package org.drools.runtime.pipeline.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.custommonkey.xmlunit.XMLTestCase;
+import org.drools.Cheese;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.io.Resource;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.BatchExecutionResult;
+import org.drools.runtime.StatelessKnowledgeSession;
+import org.drools.runtime.help.BatchExecutionHelper;
+import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
+import org.drools.runtime.pipeline.Pipeline;
+import org.drools.runtime.pipeline.PipelineFactory;
+import org.drools.runtime.pipeline.ResultHandler;
+import org.drools.runtime.pipeline.Transformer;
+
+public class XStreamBatchExecutionTest extends XMLTestCase {
+
+ public void testInsertObject() 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 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 += "</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 += "<batch-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 += "</batch-execution-results>\n";
+
+ assertXMLEqual(expectedXml, outXml );
+
+ BatchExecutionResult result = ( BatchExecutionResult ) BatchExecutionHelper.newXStreamMarshaller().fromXML( outXml );
+ Cheese stilton = ( Cheese ) result.getValue( "outStilton" );
+ assertEquals( 30,
+ stilton.getPrice() );
+ }
+
+ public void testInsertElements() 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 += "</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 += "<batch-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 += "</batch-execution-results>\n";
+
+ assertXMLEqual( expectedXml, outXml );
+
+ BatchExecutionResult result = ( BatchExecutionResult ) 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 += "<batch-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 += "</batch-execution-results>\n";
+
+ assertXMLEqual(expectedXml, outXml );
+
+ BatchExecutionResult result = ( BatchExecutionResult ) 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 += "<batch-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 += "</batch-execution-results>\n";
+
+ assertXMLEqual(expectedXml, outXml );
+ }
+
+ 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";
+
+ 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 += "</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 +="<batch-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";
+ 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 +=" <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 +=" </row>\n";
+ expectedXml +=" <row>\n";
+ 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 +=" <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 +=" </row>\n";
+ expectedXml +=" </query-results>\n";
+ expectedXml +=" </result>\n";
+ expectedXml +="</batch-execution-results>\n";
+
+ assertXMLEqual(expectedXml, outXml );
+
+ BatchExecutionResult batchResult = ( BatchExecutionResult ) 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 );
+ }
+
+ 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.newBatchExecutor();
+ batchExecution.setReceiver( outTransformer );
+
+
+ Transformer inTransformer = PipelineFactory.newXStreamFromXmlTransformer( BatchExecutionHelper.newXStreamMarshaller() );
+ inTransformer.setReceiver( batchExecution );
+
+ Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( 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(String fileName) throws Exception {
+ return getSession2( ResourceFactory.newClassPathResource( fileName, getClass() ) );
+ }
+
+ private StatelessKnowledgeSession getSession2(Resource resource) throws Exception {
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( resource, ResourceType.DRL );
+
+ if (kbuilder.hasErrors() ) {
+ System.out.println( kbuilder.getErrors() );
+ }
+
+ assertFalse( kbuilder.hasErrors() );
+ Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+
+
+ kbase.addKnowledgePackages( pkgs );
+ StatelessKnowledgeSession session = kbase.newStatelessKnowledgeSession();
+
+ return session;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-pipeline/drools-transformer-xstream/src/test/java/org/drools/runtime/pipeline/impl/XStreamStatelessSessionTest.java 2009-03-06 06:30:32 UTC (rev 25515)
@@ -13,6 +13,7 @@
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatelessKnowledgeSession;
import org.drools.runtime.pipeline.Action;
+import org.drools.runtime.pipeline.Expression;
import org.drools.runtime.pipeline.KnowledgeRuntimeCommand;
import org.drools.runtime.pipeline.Pipeline;
import org.drools.runtime.pipeline.PipelineFactory;
@@ -40,11 +41,20 @@
ksession.setGlobal( "list",
list );
- KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+ Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+ Action assignResult = PipelineFactory.newAssignObjectAsResult();
+ assignResult.setReceiver( executeResultHandler );
+ KnowledgeRuntimeCommand batchExecution = PipelineFactory.newBatchExecutor();
+ batchExecution.setReceiver( assignResult );
+
+ KnowledgeRuntimeCommand insertStage = PipelineFactory.newInsertObjectCommand();
+ insertStage.setReceiver( batchExecution );
+
XStream xstream = new XStream();
Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
- transformer.setReceiver( execute );
+ transformer.setReceiver( insertStage );
Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
pipeline.setReceiver( transformer );
@@ -77,14 +87,23 @@
ksession.setGlobal( "list",
list );
- KnowledgeRuntimeCommand execute = PipelineFactory.newStatelessKnowledgeSessionExecute();
+ Action executeResultHandler = PipelineFactory.newExecuteResultHandler();
+
+ Action assignResult = PipelineFactory.newAssignObjectAsResult();
+ assignResult.setReceiver( executeResultHandler );
- Action mvelAction = PipelineFactory.newMvelAction( "context.setIterable( this )" );
- mvelAction.setReceiver( execute );
+ KnowledgeRuntimeCommand batchExecution = PipelineFactory.newBatchExecutor();
+ batchExecution.setReceiver( assignResult );
+
+ KnowledgeRuntimeCommand insertElementsStage = PipelineFactory.newInsertElementsCommand();
+ insertElementsStage.setReceiver( batchExecution );
+
+ Expression mvelExpression = PipelineFactory.newMvelExpression( "this.children" );
+ mvelExpression.setReceiver( insertElementsStage );
XStream xstream = new XStream();
Transformer transformer = PipelineFactory.newXStreamFromXmlTransformer( xstream );
- transformer.setReceiver( mvelAction );
+ transformer.setReceiver( insertElementsStage );
Pipeline pipeline = PipelineFactory.newStatelessKnowledgeSessionPipeline( ksession );
pipeline.setReceiver( transformer );
Modified: labs/jbossrules/trunk/drools-server/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-server/.classpath 2009-03-06 04:11:37 UTC (rev 25514)
+++ labs/jbossrules/trunk/drools-server/.classpath 2009-03-06 06:30:32 UTC (rev 25515)
@@ -17,9 +17,9 @@
<classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0.1/jettison-1.0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock/2.5.1/jmock-2.5.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jmock/jmock-legacy/2.5.1/jmock-legacy-2.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/joda-time/joda-time/1.6/joda-time-1.6.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.7-SNAPSHOT/mvel2-2.0.7-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.8-SNAPSHOT/mvel2-2.0.8-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar"/>
<classpathentry kind="var" path="M2_REPO/stax/stax/1.2.0/stax-1.2.0.jar"/>
More information about the jboss-svn-commits
mailing list