[jboss-svn-commits] JBL Code SVN: r25237 - in labs/jbossrules/trunk: drools-api/src/main/java/org/drools and 13 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 12 02:07:55 EST 2009
Author: mark.proctor at jboss.com
Date: 2009-02-12 02:07:55 -0500 (Thu, 12 Feb 2009)
New Revision: 25237
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfiguration.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfigurationImpl.java
Modified:
labs/jbossrules/trunk/drools-api/pom.xml
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java
labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java
labs/jbossrules/trunk/drools-compiler/.classpath
labs/jbossrules/trunk/drools-compiler/.project
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/EnvironmentFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/DefaultMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerReaderContext.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerWriteContext.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/memory/MemoryXaResource.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/session/StatefulSessionSnapshotter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooRuleBaseTest.java
labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
Log:
JBRULES-1965 Add Environment support
Modified: labs/jbossrules/trunk/drools-api/pom.xml
===================================================================
--- labs/jbossrules/trunk/drools-api/pom.xml 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-api/pom.xml 2009-02-12 07:07:55 UTC (rev 25237)
@@ -52,7 +52,7 @@
<artifactId>jms</artifactId>
<version>1.1</version>
<scope>provided</scope>
- </dependency>
+ </dependency>
</dependencies>
@@ -85,8 +85,14 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.5</version>
+
<configuration>
<aggregate>false</aggregate>
+ <doclet>ydoc.doclets.YStandard</doclet>
+ <docletPath> ${ydoc.home}/lib/ydoc.jar${path.separator}${ydoc.home}/lib/class2svg.jar${path.separator}${ydoc.home}/resources
+ </docletPath>
+ <additionalparam>-umlautogen -tag y.precondition -tag y.postcondition -tag y.complexity -tag param -tag return -tag see -tag y.uml
+ </additionalparam>
<links>
<link>http://java.sun.com/j2se/1.5.0/docs/api</link>
</links>
@@ -115,7 +121,6 @@
</configuration>
</plugin>
</plugins>
- </reporting>
+ </reporting>
-
</project>
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBase.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -7,6 +7,7 @@
import org.drools.definition.rule.Rule;
import org.drools.definition.type.FactType;
import org.drools.event.knowledgebase.KnowledgeBaseEventManager;
+import org.drools.runtime.Environment;
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
@@ -114,16 +115,18 @@
* @param processId
*/
void removeProcess(String processId);
-
+
/**
- * Create a new StatefulKnowledgeSession using the given session configuration.
+ * Create a new StatefulKnowledgeSession using the given session configuration and/or environment.
+ * Either one can be null and it will use a default.
+ *
* Don't forget to dispose() session when you are done.
- *
* @param conf
+ * @param environment
* @return
* The StatefulKnowledgeSession.
*/
- StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf);
+ StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf, Environment environment);
/**
* Create a new StatefulKnowledgeSession using the default session configuration.
Modified: labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/KnowledgeBaseFactory.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -4,6 +4,7 @@
import org.drools.runtime.Environment;
import org.drools.runtime.KnowledgeSessionConfiguration;
+import org.drools.util.ProviderLocator;
/**
* <p>
@@ -26,7 +27,7 @@
*
* @see org.drools.KnowledgeBase
*/
-public class KnowledgeBaseFactory {
+public class KnowledgeBaseFactory extends ProviderLocator {
private static KnowledgeBaseProvider provider;
/**
@@ -90,6 +91,13 @@
return getKnowledgeBaseProvider().newEnvironment();
}
+// private static synchronized KnowledgeBaseProvider getKnowledgeBaseProvider() {
+// if ( provider == null ) {
+// provider = newProviderFor( KnowledgeBaseProvider.class );
+// }
+// return provider;
+// }
+
private static synchronized void setKnowledgeBaseProvider(KnowledgeBaseProvider provider) {
KnowledgeBaseFactory.provider = provider;
}
@@ -108,8 +116,7 @@
Class<KnowledgeBaseProvider> cls = (Class<KnowledgeBaseProvider>) Class.forName( "org.drools.impl.KnowledgeBaseProviderImpl" );
setKnowledgeBaseProvider( cls.newInstance() );
} catch ( Exception e ) {
- throw new ProviderInitializationException( "Provider org.drools.impl.KnowledgeBaseProviderImpl could not be set.",
- e );
+ throw new ProviderInitializationException( "Provider org.drools.impl.KnowledgeBaseProviderImpl could not be set.", e );
}
}
}
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-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-api/src/main/java/org/drools/runtime/pipeline/PipelineFactory.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -85,7 +85,7 @@
* </p>
*
* <p>
- * Pipeline is provides an adapter to insert the payload and internal create the correct PipelineContext. Two types of Pipelines
+ * Pipeline is provides an adapter to insert the payload and internally create the correct PipelineContext. Two types of Pipelines
* are provided, both requiring a different PipelineContext. StatefulKnowledgeSessionPipeline and StatelessKnowledgeSessionPipeline.
* Pipeline itself implements both Stage and Emitter, this means it's a Stage in a pipeline and emits the payload to a receiver. It does
* not implement Receiver itself, as it the start adapter for the pipeline. PipelineFactory provides methods to create both of the two
@@ -120,13 +120,9 @@
* </pre>
*
* <p>
- * See StatefullKnowledgeSessionPipeline, StatelessKnowledgeSessionPipeline for more specific information and capabilities on these pipelines.
- * </p>
- *
- * <p>
* While the above example is for loading a resource from disk it is also possible to work from a running messaging service. Drools currently
- * provides a single Service for JMS, called JmsMessenger. Other Services will be added later. Look at the factory method for JmsMessenger for more details, but below shows
- * part of a unit test:
+ * provides a single Service for JMS, called JmsMessenger. Support for other Services will be added later. Below shows part of a unit test which
+ * illustrates part of the JmsMessenger in action
* </p>
*
* <pre>
Modified: labs/jbossrules/trunk/drools-compiler/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.classpath 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-compiler/.classpath 2009-02-12 07:07:55 UTC (rev 25237)
@@ -1,27 +1,26 @@
-<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
- <classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry excluding="**/*.java" including="**" kind="src" output="target/test-classes" path="src/test/resources"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.1.1/antlr-3.1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/drools/drools-api/5.0.0.SNAPSHOT/drools-api-5.0.0.SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-library/1.1/hamcrest-library-1.1-sources.jar"/>
- <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" sourcepath="M2_REPO/joda-time/joda-time/1.5.2/joda-time-1.5.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.6/mvel2-2.0.6.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" sourcepath="M2_REPO/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar"/>
- <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
+ <classpathentry kind="src" path="src/test/resources" output="target/test-classes" including="**" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/classes"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.7/antlr-2.7.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr/3.1.1/antlr-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/eclipse/jdt/core/3.4.2.v_883_R34x/core-3.4.2.v_883_R34x.jar"/>
+ <classpathentry kind="src" path="/drools-api"/>
+ <classpathentry kind="src" path="/drools-core"/>
+ <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/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/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.6/mvel2-2.0.6.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"/>
+</classpath>
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-compiler/.project
===================================================================
--- labs/jbossrules/trunk/drools-compiler/.project 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-compiler/.project 2009-02-12 07:07:55 UTC (rev 25237)
@@ -1,7 +1,10 @@
<projectDescription>
<name>drools-compiler</name>
<comment>A rule production system</comment>
- <projects/>
+ <projects>
+ <project>drools-api</project>
+ <project>drools-core</project>
+ </projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/CepEspTest.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -83,7 +83,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession session = ruleBase.newStatefulSession( conf );
+ StatefulSession session = ruleBase.newStatefulSession( conf, null );
final List results = new ArrayList();
@@ -138,7 +138,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final List results = new ArrayList();
@@ -218,7 +218,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final List results = new ArrayList();
@@ -304,7 +304,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final PseudoClockScheduler clock = (PseudoClockScheduler) wm.getSessionClock();
@@ -511,7 +511,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final List<?> results = new ArrayList<Object>();
@@ -562,7 +562,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final List<?> results = new ArrayList<Object>();
@@ -613,7 +613,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final List<?> results = new ArrayList<Object>();
@@ -666,7 +666,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
List results = new ArrayList();
@@ -799,7 +799,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.REALTIME_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final List results = new ArrayList();
@@ -887,7 +887,7 @@
SessionConfiguration conf = new SessionConfiguration();
conf.setClockType( ClockType.PSEUDO_CLOCK );
- StatefulSession wm = ruleBase.newStatefulSession( conf );
+ StatefulSession wm = ruleBase.newStatefulSession( conf, null );
final List results = new ArrayList();
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-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -5926,34 +5926,34 @@
}
//FIXME
- public void FIXME_testListOfMaps() {
- // KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
- // kbuilder.add(ResourceFactory.newClassPathResource("test_TestMapVariableRef.drl", getClass()), ResourceType.DRL);
- // KnowledgeBuilderErrors errors = kbuilder.getErrors();
- // if (errors.size() > 0) {
- // for (KnowledgeBuilderError error: errors) {
- // System.err.println(error);
- // }
- // throw new IllegalArgumentException("Could not parse knowledge.");
- // }
- // KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
- // kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
- // StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
- // List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
- //
- // Map mapOne = new HashMap<String,Object>();
- // Map mapTwo = new HashMap<String,Object>();
- //
- // mapOne.put("MSG", "testMessage");
- // mapTwo.put("MSGTWO", "testMessage");
- //
- // list.add(mapOne);
- // list.add(mapTwo);
- // ksession.insert(list);
- // ksession.fireAllRules();
- //
- // assertEquals(3, list.size());
-
+ public void FIXME_testListOfMaps(){
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add(ResourceFactory.newClassPathResource("test_TestMapVariableRef.drl", getClass()), ResourceType.DRL);
+ KnowledgeBuilderErrors errors = kbuilder.getErrors();
+ if (errors.size() > 0) {
+ for (KnowledgeBuilderError error: errors) {
+ System.err.println(error);
+ }
+ throw new IllegalArgumentException("Could not parse knowledge.");
+ }
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
+
+ Map mapOne = new HashMap<String,Object>();
+ Map mapTwo = new HashMap<String,Object>();
+
+ mapOne.put("MSG", "testMessage");
+ mapTwo.put("MSGTWO", "testMessage");
+
+ list.add(mapOne);
+ list.add(mapTwo);
+ ksession.insert(list);
+ ksession.fireAllRules();
+
+ assertEquals(3, list.size());
+
}
public void testKnowledgeContextMVEL() {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/OutOfMemoryTest.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -62,7 +62,7 @@
conf.setKeepReference( true ); // this is just for documentation purposes, since the default value is "true"
try {
for( i = 0; i < 300000; i++ ) {
- final StatefulSession session = ruleBase.newStatefulSession( conf );
+ final StatefulSession session = ruleBase.newStatefulSession( conf, null );
session.dispose();
}
} catch ( Throwable e ) {
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/StreamsTest.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -82,7 +82,7 @@
KnowledgeSessionConfiguration conf = new SessionConfiguration();
((SessionConfiguration) conf).setClockType( ClockType.PSEUDO_CLOCK );
- StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession( conf );
+ StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession( conf, null );
final List results = new ArrayList();
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -15,6 +15,7 @@
import org.drools.event.RuleBaseEventListener;
import org.drools.marshalling.Marshaller;
import org.drools.rule.Package;
+import org.drools.runtime.Environment;
public class MockRuleBase implements RuleBase {
@@ -53,7 +54,7 @@
return null;
}
- public StatefulSession newStatefulSession(SessionConfiguration config) {
+ public StatefulSession newStatefulSession(SessionConfiguration config, Environment environment ) {
// TODO Auto-generated method stub
return null;
}
@@ -165,4 +166,9 @@
// TODO Auto-generated method stub
}
+
+ public StatefulSession newStatefulSession(boolean keepReference) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/RuleBase.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -24,6 +24,7 @@
import org.drools.definition.type.FactType;
import org.drools.marshalling.Marshaller;
import org.drools.rule.Package;
+import org.drools.runtime.Environment;
import org.drools.WorkingMemory;
/**
@@ -65,6 +66,8 @@
*/
StatefulSession newStatefulSession();
+ StatefulSession newStatefulSession(boolean keepReference);
+
/**
* Create a new <code>WorkingMemory</code> session for this
* <code>RuleBase</code>.
@@ -77,7 +80,7 @@
*
* @return A newly initialized <code>WorkingMemory</code>.
*/
- StatefulSession newStatefulSession(SessionConfiguration config);
+ StatefulSession newStatefulSession(SessionConfiguration config, Environment environment);
StatefulSession readStatefulSession(InputStream stream,
Marshaller marshaller) throws IOException,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -45,6 +45,7 @@
import org.drools.definition.type.FactType;
import org.drools.event.RuleBaseEventListener;
import org.drools.event.RuleBaseEventSupport;
+import org.drools.impl.EnvironmentFactory;
import org.drools.marshalling.Marshaller;
import org.drools.process.core.Process;
import org.drools.rule.CompositeClassLoader;
@@ -333,7 +334,7 @@
* @see RuleBase
*/
public StatefulSession newStatefulSession() {
- return newStatefulSession( new SessionConfiguration() );
+ return newStatefulSession( new SessionConfiguration(), EnvironmentFactory.newEnvironment() );
}
public synchronized void disposeStatefulSession(final StatefulSession statefulSession) {
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-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -84,6 +84,7 @@
import org.drools.rule.Rule;
import org.drools.rule.TimeMachine;
import org.drools.ruleflow.core.RuleFlowProcess;
+import org.drools.runtime.Environment;
import org.drools.runtime.ExitPoint;
import org.drools.runtime.KnowledgeRuntime;
import org.drools.runtime.process.EventListener;
@@ -209,6 +210,8 @@
private Map<String, ExitPoint> exitPoints;
+ private Environment environment;
+
// ------------------------------------------------------------
// Constructors
// ------------------------------------------------------------
@@ -225,13 +228,16 @@
public AbstractWorkingMemory(final int id,
final InternalRuleBase ruleBase,
final FactHandleFactory handleFactory,
- final SessionConfiguration config) {
+ final SessionConfiguration config,
+ final Environment environment)
+ {
this( id,
ruleBase,
handleFactory,
null,
0,
- config );
+ config,
+ environment );
}
public AbstractWorkingMemory(final int id,
@@ -239,12 +245,14 @@
final FactHandleFactory handleFactory,
final InitialFactHandle initialFactHandle,
final long propagationContext,
- final SessionConfiguration config) {
+ final SessionConfiguration config,
+ final Environment environment) {
this.id = id;
this.config = config;
this.ruleBase = ruleBase;
this.handleFactory = handleFactory;
this.globalResolver = new MapGlobalResolver();
+ this.environment = environment;
final RuleBaseConfiguration conf = this.ruleBase.getConfiguration();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/EnvironmentFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/EnvironmentFactory.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/EnvironmentFactory.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -7,12 +7,13 @@
private static ThreadLocal<Environment> environment = new ThreadLocal<Environment>();
public static Environment newEnvironment() {
- Environment environment = EnvironmentFactory.environment.get();
- if (environment == null) {
- environment = new EnvironmentImpl();
- EnvironmentFactory.environment.set(environment);
- }
- return environment;
+ return new EnvironmentImpl();
+// Environment environment = EnvironmentFactory.environment.get();
+// if (environment == null) {
+// environment = new EnvironmentImpl();
+// EnvironmentFactory.environment.set(environment);
+// }
+// return environment;
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseImpl.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -55,6 +55,7 @@
import org.drools.reteoo.ReteooRuleBase;
import org.drools.reteoo.ReteooStatefulSession;
import org.drools.rule.Package;
+import org.drools.runtime.Environment;
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.StatefulKnowledgeSession;
import org.drools.runtime.StatelessKnowledgeSession;
@@ -130,15 +131,25 @@
}
public StatefulKnowledgeSession newStatefulKnowledgeSession() {
- return newStatefulKnowledgeSession(new SessionConfiguration());
+ return newStatefulKnowledgeSession(new SessionConfiguration(), EnvironmentFactory.newEnvironment() );
}
- public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf) {
+ public StatefulKnowledgeSession newStatefulKnowledgeSession(KnowledgeSessionConfiguration conf, Environment environment) {
+ // NOTE if you update here, you'll also need to update the JPAService
+ if ( conf == null ) {
+ conf = new SessionConfiguration();
+ }
+
+ if ( environment == null ) {
+ environment = EnvironmentFactory.newEnvironment();
+ }
+
CommandService commandService = ((SessionConfiguration) conf).getCommandService(this.ruleBase);
if (commandService != null) {
return new CommandBasedStatefulKnowledgeSession(commandService);
} else {
- ReteooStatefulSession session = (ReteooStatefulSession) this.ruleBase.newStatefulSession( (SessionConfiguration) conf );
+ ReteooStatefulSession session = (ReteooStatefulSession) this.ruleBase.newStatefulSession( (SessionConfiguration) conf,
+ environment );
return new StatefulKnowledgeSessionImpl( session, this );
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/KnowledgeBaseProviderImpl.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -38,6 +38,6 @@
}
public Environment newEnvironment() {
- return EnvironmentFactory.newEnvironment();
+ return new EnvironmentImpl(); //EnvironmentFactory.newEnvironment();
}
}
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-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/impl/StatelessKnowledgeSessionImpl.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -28,6 +28,7 @@
import org.drools.reteoo.ReteooWorkingMemory;
import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
import org.drools.rule.EntryPoint;
+import org.drools.runtime.Environment;
import org.drools.runtime.KnowledgeSessionConfiguration;
import org.drools.runtime.Parameters;
import org.drools.runtime.StatelessKnowledgeSession;
@@ -54,6 +55,7 @@
public RuleFlowEventSupport ruleFlowEventSupport = new RuleFlowEventSupport();
private KnowledgeSessionConfiguration conf;
+ private Environment environment;
public StatelessKnowledgeSessionImpl() {
}
@@ -61,6 +63,7 @@
public StatelessKnowledgeSessionImpl(final InternalRuleBase ruleBase, final KnowledgeSessionConfiguration conf) {
this.ruleBase = ruleBase;
this.conf = ( conf != null ) ? conf : new SessionConfiguration() ;
+ this.environment = EnvironmentFactory.newEnvironment();
}
public InternalRuleBase getRuleBase() {
@@ -71,7 +74,8 @@
synchronized ( this.ruleBase.getPackagesMap() ) {
InternalWorkingMemory wm = new ReteooWorkingMemory( this.ruleBase.nextWorkingMemoryCounter(),
this.ruleBase,
- (SessionConfiguration) this.conf );
+ (SessionConfiguration) this.conf,
+ this.environment );
DelegatingGlobalResolver resolver = new DelegatingGlobalResolver();
resolver.setDelegate( this.sessionGlobals );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/DefaultMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/DefaultMarshaller.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/DefaultMarshaller.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -16,7 +16,8 @@
implements
Marshaller {
GlobalResolver globalResolver;
- RuleBaseConfiguration config;
+ RuleBaseConfiguration ruleBaseConfig;
+ MarshallingConfiguration marshallingConfig;
PlaceholderResolverStrategyFactory factory;
public DefaultMarshaller() {
@@ -28,18 +29,20 @@
null );
}
- public DefaultMarshaller(RuleBaseConfiguration config,
- PlaceholderResolverStrategyFactory factory) {
- this.config = (config != null) ? config : new RuleBaseConfiguration();
-
- if ( factory == null ) {
+ public DefaultMarshaller(RuleBaseConfiguration ruleBaseConfig,
+ MarshallingConfiguration marshallingConfig) {
+ this.ruleBaseConfig = (ruleBaseConfig != null) ? ruleBaseConfig : new RuleBaseConfiguration();
+ this.marshallingConfig = marshallingConfig;
+
+ if ( marshallingConfig.getPlaceholderResolverStrategyFactory() == null ) {
this.factory = new PlaceholderResolverStrategyFactory();
ClassPlaceholderResolverStrategyAcceptor acceptor = new ClassPlaceholderResolverStrategyAcceptor( "*.*" );
IdentityPlaceholderResolverStrategy strategy = new IdentityPlaceholderResolverStrategy( acceptor );
this.factory.addStrategy( strategy );
} else {
- this.factory = factory;
+ this.factory = marshallingConfig.getPlaceholderResolverStrategyFactory();
}
+
}
/* (non-Javadoc)
@@ -53,7 +56,10 @@
MarshallerReaderContext context = new MarshallerReaderContext( stream,
ruleBase,
RuleBaseNodes.getNodeMap( ruleBase ),
- factory );
+ factory,
+ marshallingConfig.isMarshallProcessInstances(),
+ marshallingConfig.isMarshallWorkItems(),
+ marshallingConfig.isMarshallTimers() );
ReteooStatefulSession session = InputMarshaller.readSession( context,
id,
@@ -70,7 +76,10 @@
MarshallerReaderContext context = new MarshallerReaderContext( stream,
ruleBase,
RuleBaseNodes.getNodeMap( ruleBase ),
- factory );
+ factory,
+ marshallingConfig.isMarshallProcessInstances(),
+ marshallingConfig.isMarshallWorkItems(),
+ marshallingConfig.isMarshallTimers());
session = InputMarshaller.readSession( (ReteooStatefulSession) session,
context );
@@ -89,7 +98,10 @@
ruleBase,
(InternalWorkingMemory) session,
RuleBaseNodes.getNodeMap( ruleBase ),
- this.factory );
+ this.factory,
+ marshallingConfig.isMarshallProcessInstances(),
+ marshallingConfig.isMarshallWorkItems(),
+ marshallingConfig.isMarshallTimers() );
OutputMarshaller.writeSession( context );
context.close();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/InputMarshaller.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -29,6 +29,7 @@
import org.drools.common.RuleFlowGroupImpl;
import org.drools.common.TruthMaintenanceSystem;
import org.drools.concurrent.ExecutorService;
+import org.drools.impl.EnvironmentFactory;
import org.drools.process.core.context.swimlane.SwimlaneContext;
import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.instance.ProcessInstance;
@@ -65,6 +66,7 @@
import org.drools.rule.Package;
import org.drools.rule.Rule;
import org.drools.ruleflow.instance.RuleFlowProcessInstance;
+import org.drools.runtime.Environment;
import org.drools.runtime.process.NodeInstance;
import org.drools.runtime.process.NodeInstanceContainer;
import org.drools.spi.Activation;
@@ -154,6 +156,14 @@
int id,
ExecutorService executor) throws IOException,
ClassNotFoundException {
+ return readSession( context, id, executor, EnvironmentFactory.newEnvironment() );
+ }
+
+ public static ReteooStatefulSession readSession(MarshallerReaderContext context,
+ int id,
+ ExecutorService executor,
+ Environment environment) throws IOException,
+ ClassNotFoundException {
boolean multithread = context.readBoolean();
@@ -179,7 +189,8 @@
initialFactHandle,
propagationCounter,
new SessionConfiguration(), // FIXME: must deserialize configuration
- agenda );
+ agenda,
+ environment );
// RuleFlowGroups need to reference the session
for ( RuleFlowGroup group : agenda.getRuleFlowGroupsMap().values() ) {
@@ -195,18 +206,24 @@
readTruthMaintenanceSystem( context );
}
- readProcessInstances( context );
+ if ( context.marshalProcessInstances ) {
+ readProcessInstances( context );
+ }
- readWorkItems( context );
+ if ( context.marshalWorkItems ) {
+ readWorkItems( context );
+ }
- readTimers( context );
+ if ( context.marshalTimers ) {
+ readTimers( context );
+ }
if( multithread ) {
session.startPartitionManagers();
}
return session;
- }
+ }
public static void readAgenda(MarshallerReaderContext context,
DefaultAgenda agenda) throws IOException {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerReaderContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerReaderContext.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerReaderContext.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -19,7 +19,7 @@
import org.drools.spi.PropagationContext;
public class MarshallerReaderContext extends ObjectInputStream {
- public final MarshallerReaderContext stream;
+ public final MarshallerReaderContext stream;
public final InternalRuleBase ruleBase;
public InternalWorkingMemory wm;
public final Map<Integer, BaseNode> sinks;
@@ -34,10 +34,30 @@
public final Map<Long, PropagationContext> propagationContexts;
+ public final boolean marshalProcessInstances;
+ public final boolean marshalWorkItems;
+ public final boolean marshalTimers;
+
public MarshallerReaderContext(InputStream stream,
- InternalRuleBase ruleBase,
- Map<Integer, BaseNode> sinks,
- PlaceholderResolverStrategyFactory resolverStrategyFactory) throws IOException {
+ InternalRuleBase ruleBase,
+ Map<Integer, BaseNode> sinks,
+ PlaceholderResolverStrategyFactory resolverStrategyFactory) throws IOException {
+ this( stream,
+ ruleBase,
+ sinks,
+ resolverStrategyFactory,
+ true,
+ true,
+ true );
+ }
+
+ public MarshallerReaderContext(InputStream stream,
+ InternalRuleBase ruleBase,
+ Map<Integer, BaseNode> sinks,
+ PlaceholderResolverStrategyFactory resolverStrategyFactory,
+ boolean marshalProcessInstances,
+ boolean marshalWorkItems,
+ boolean marshalTimers) throws IOException {
super( stream );
this.stream = this;
this.ruleBase = ruleBase;
@@ -48,5 +68,8 @@
this.entryPoints = new HashMap<String, EntryPoint>();
this.propagationContexts = new HashMap<Long, PropagationContext>();
this.resolverStrategyFactory = resolverStrategyFactory;
+ this.marshalProcessInstances = marshalProcessInstances;
+ this.marshalWorkItems = marshalWorkItems;
+ this.marshalTimers = marshalTimers;
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerWriteContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerWriteContext.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallerWriteContext.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -26,12 +26,27 @@
public final PlaceholderResolverStrategyFactory resolverStrategyFactory;
public final Map<LeftTuple, Integer> terminalTupleMap;
+
+ public final boolean marshalProcessInstances;
+ public final boolean marshalWorkItems;
+ public final boolean marshalTimers;
+
+ public MarshallerWriteContext(OutputStream stream,
+ InternalRuleBase ruleBase,
+ InternalWorkingMemory wm,
+ Map<Integer, BaseNode> sinks,
+ PlaceholderResolverStrategyFactory resolverStrategyFactory) throws IOException {
+ this(stream, ruleBase, wm, sinks, resolverStrategyFactory, true, true, true);
+ }
public MarshallerWriteContext(OutputStream stream,
InternalRuleBase ruleBase,
InternalWorkingMemory wm,
Map<Integer, BaseNode> sinks,
- PlaceholderResolverStrategyFactory resolverStrategyFactory) throws IOException {
+ PlaceholderResolverStrategyFactory resolverStrategyFactory,
+ boolean marshalProcessInstances,
+ boolean marshalWorkItems,
+ boolean marshalTimers) throws IOException {
super( stream );
this.stream = this;
this.ruleBase = ruleBase;
@@ -41,5 +56,9 @@
this.resolverStrategyFactory = resolverStrategyFactory;
this.terminalTupleMap = new IdentityHashMap<LeftTuple, Integer>();
+
+ this.marshalProcessInstances = marshalProcessInstances;
+ this.marshalWorkItems = marshalWorkItems;
+ this.marshalTimers = marshalTimers;
}
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfiguration.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfiguration.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -0,0 +1,8 @@
+package org.drools.marshalling;
+
+public interface MarshallingConfiguration {
+ PlaceholderResolverStrategyFactory getPlaceholderResolverStrategyFactory();
+ boolean isMarshallProcessInstances();
+ boolean isMarshallWorkItems();
+ boolean isMarshallTimers();
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfigurationImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfigurationImpl.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/MarshallingConfigurationImpl.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -0,0 +1,55 @@
+package org.drools.marshalling;
+
+public class MarshallingConfigurationImpl implements MarshallingConfiguration {
+ private PlaceholderResolverStrategyFactory placeholderResolverStrategyFactory;
+ private boolean marshallProcessInstances;
+ private boolean marshallWorkItems;
+ private boolean marshallTimers;
+
+ public MarshallingConfigurationImpl() {
+
+ }
+
+ public MarshallingConfigurationImpl(PlaceholderResolverStrategyFactory placeholderResolverStrategyFactory,
+ boolean marshallProcessInstances,
+ boolean marshallWorkItems,
+ boolean marshallTimers) {
+ this.marshallProcessInstances = marshallProcessInstances;
+ this.marshallWorkItems = marshallWorkItems;
+ this.marshallTimers = marshallTimers;
+ this.placeholderResolverStrategyFactory = placeholderResolverStrategyFactory;
+ }
+
+ public boolean isMarshallProcessInstances() {
+ return this.marshallProcessInstances;
+ }
+
+ public void setMarshallProcessInstances(boolean marshallProcessInstances) {
+ this.marshallProcessInstances = marshallProcessInstances;
+ }
+
+ public boolean isMarshallWorkItems() {
+ return this.marshallWorkItems;
+ }
+
+ public void setMarshallWorkItems(boolean marshallWorkItems) {
+ this.marshallWorkItems = marshallWorkItems;
+ }
+
+ public boolean isMarshallTimers() {
+ return this.marshallTimers;
+ }
+
+ public void setMarshallTimers(boolean marshallTimers) {
+ this.marshallTimers = marshallTimers;
+ }
+
+ public PlaceholderResolverStrategyFactory getPlaceholderResolverStrategyFactory() {
+ return this.placeholderResolverStrategyFactory;
+ }
+
+ public void setPlaceholderResolverStrategyFactory(PlaceholderResolverStrategyFactory placeholderResolverStrategyFactory) {
+ this.placeholderResolverStrategyFactory = placeholderResolverStrategyFactory;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/marshalling/OutputMarshaller.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -105,11 +105,17 @@
context.writeBoolean( false );
}
- writeProcessInstances( context );
+ if ( context.marshalProcessInstances ) {
+ writeProcessInstances( context );
+ }
- writeWorkItems( context );
+ if ( context.marshalWorkItems ) {
+ writeWorkItems( context );
+ }
- writeTimers( context );
+ if ( context.marshalTimers ) {
+ writeTimers( context );
+ }
if( multithread ) {
wm.startPartitionManagers();
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/memory/MemoryXaResource.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/memory/MemoryXaResource.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/memory/MemoryXaResource.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -12,7 +12,9 @@
private MemoryPersister pm;
Map<Xid, byte[]> data = new HashMap<Xid, byte[]>();
- LinkedList<Xid> list = new LinkedList<Xid>();
+ LinkedList<Xid> list = new LinkedList<Xid>();
+
+ private boolean nestedSavePointsAllowed = false;
public MemoryXaResource(MemoryPersister pm) {
this.pm = pm;
@@ -22,16 +24,24 @@
return list.size() > 0;
}
+
+ public int prepare(Xid xid) throws XAException {
+ return 0;
+ }
+
public void start(Xid xid,
int flags) throws XAException {
byte[] bytes = pm.getSnapshot();
// The start of the first transaction is recorded as save point, for HA.
- if ( this.list.isEmpty() ) {
+ if ( this.list.isEmpty() && this.nestedSavePointsAllowed ) {
pm.setLastSave( bytes );
}
- this.list.add( xid );
- this.data.put( xid, bytes );
+ if ( this.nestedSavePointsAllowed || this.list.isEmpty() ) {
+ // either this is the first snapshot, or nested snapshots is allowed
+ this.list.add( xid );
+ this.data.put( xid, bytes );
+ }
}
public void rollback(Xid xid) throws XAException {
@@ -86,16 +96,32 @@
return false;
}
- public int prepare(Xid xid) throws XAException {
- return 0;
- }
-
public Xid[] recover(int flag) throws XAException {
return null;
}
public boolean setTransactionTimeout(int seconds) throws XAException {
return false;
- }
+ }
+ public boolean isNestedSavePointsAllowed() {
+ return nestedSavePointsAllowed;
+ }
+
+ public void setNestedSavePointsAllowed(boolean nestedSavePointsAllowed) {
+ this.nestedSavePointsAllowed = nestedSavePointsAllowed;
+ }
+
+
+// public boolean equals(Object object) {
+// if ( object == null || !(object instanceof MemoryXaResource)) {
+// return false;
+// }
+//
+//
+// return this == object;
+// }
+
+
+
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/session/StatefulSessionSnapshotter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/session/StatefulSessionSnapshotter.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/session/StatefulSessionSnapshotter.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -10,7 +10,7 @@
import org.drools.common.InternalRuleBase;
import org.drools.marshalling.DefaultMarshaller;
import org.drools.marshalling.Marshaller;
-import org.drools.marshalling.PlaceholderResolverStrategyFactory;
+import org.drools.marshalling.MarshallingConfiguration;
import org.drools.persistence.ByteArraySnapshotter;
public class StatefulSessionSnapshotter implements ByteArraySnapshotter<StatefulSession> {
@@ -24,24 +24,24 @@
this(ruleBase, null);
}
- public StatefulSessionSnapshotter(RuleBase ruleBase, PlaceholderResolverStrategyFactory factory) {
- this(ruleBase, new SessionConfiguration(), factory);
+ public StatefulSessionSnapshotter(RuleBase ruleBase, MarshallingConfiguration marshallingConfiguration) {
+ this(ruleBase, new SessionConfiguration(), marshallingConfiguration);
}
- public StatefulSessionSnapshotter(RuleBase ruleBase, SessionConfiguration conf, PlaceholderResolverStrategyFactory factory) {
+ public StatefulSessionSnapshotter(RuleBase ruleBase, SessionConfiguration conf, MarshallingConfiguration marshallingConfiguration) {
this.ruleBase = ruleBase;
this.conf = conf;
- this.marshaller = new DefaultMarshaller(((InternalRuleBase) ruleBase).getConfiguration(), factory);
+ this.marshaller = new DefaultMarshaller(((InternalRuleBase) ruleBase).getConfiguration(), marshallingConfiguration);
}
public StatefulSessionSnapshotter(StatefulSession session) {
this(session, null);
}
- public StatefulSessionSnapshotter(StatefulSession session, PlaceholderResolverStrategyFactory factory) {
+ public StatefulSessionSnapshotter(StatefulSession session, MarshallingConfiguration marshallingConfiguration) {
this.session = session;
this.ruleBase = session.getRuleBase();
- this.marshaller = new DefaultMarshaller(((InternalRuleBase) ruleBase).getConfiguration(), factory);
+ this.marshaller = new DefaultMarshaller(((InternalRuleBase) ruleBase).getConfiguration(), marshallingConfiguration);
}
public byte[] getSnapshot() {
@@ -57,7 +57,7 @@
public void loadSnapshot(byte[] bytes) {
if (session == null) {
- session = ruleBase.newStatefulSession(conf);
+ session = ruleBase.newStatefulSession(conf, null);
}
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
try {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooRuleBase.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -41,12 +41,14 @@
import org.drools.concurrent.CommandExecutor;
import org.drools.concurrent.ExecutorService;
import org.drools.event.RuleBaseEventListener;
+import org.drools.impl.EnvironmentFactory;
import org.drools.marshalling.Marshaller;
import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
import org.drools.rule.EntryPoint;
import org.drools.rule.InvalidPatternException;
import org.drools.rule.Package;
import org.drools.rule.Rule;
+import org.drools.runtime.Environment;
import org.drools.FactHandle;
import org.drools.spi.ExecutorServiceFactory;
import org.drools.spi.FactHandleFactory;
@@ -232,8 +234,17 @@
context,
workingMemory );
}
+
- public synchronized StatefulSession newStatefulSession(final SessionConfiguration sessionConfig) {
+ public synchronized StatefulSession newStatefulSession(boolean keepReference) {
+ SessionConfiguration config = new SessionConfiguration();
+ config.setKeepReference( keepReference );
+
+ return newStatefulSession( config, EnvironmentFactory.newEnvironment() );
+ }
+
+
+ public synchronized StatefulSession newStatefulSession(final SessionConfiguration sessionConfig, final Environment environment) {
if ( this.config.isSequential() ) {
throw new RuntimeException( "Cannot have a stateful rule session, with sequential configuration set to true" );
}
@@ -244,7 +255,8 @@
session = new ReteooStatefulSession( nextWorkingMemoryCounter(),
this,
executor,
- sessionConfig );
+ sessionConfig,
+ environment );
executor.setCommandExecutor( new CommandExecutor( session ) );
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-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatefulSession.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -15,7 +15,9 @@
import org.drools.concurrent.Future;
import org.drools.concurrent.RetractObject;
import org.drools.concurrent.UpdateObject;
+import org.drools.impl.EnvironmentFactory;
import org.drools.FactHandle;
+import org.drools.runtime.Environment;
import org.drools.spi.AgendaFilter;
import org.drools.spi.FactHandleFactory;
import org.drools.spi.RuleBaseUpdateListener;
@@ -36,16 +38,19 @@
this( id,
ruleBase,
executorService,
- new SessionConfiguration() );
+ new SessionConfiguration(),
+ EnvironmentFactory.newEnvironment() );
}
public ReteooStatefulSession(final int id,
final InternalRuleBase ruleBase,
final ExecutorService executorService,
- final SessionConfiguration config) {
+ final SessionConfiguration config,
+ final Environment environment) {
super( id,
ruleBase,
- config );
+ config,
+ environment );
this.executor = executorService;
}
@@ -56,14 +61,16 @@
final InitialFactHandle initialFactHandle,
final long propagationContext,
final SessionConfiguration config,
- final InternalAgenda agenda) {
+ final InternalAgenda agenda,
+ final Environment environment) {
super( id,
ruleBase,
handleFactory,
initialFactHandle,
propagationContext,
config,
- agenda );
+ agenda,
+ environment );
this.executor = executorService;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -27,6 +27,7 @@
import org.drools.event.RuleFlowEventSupport;
import org.drools.event.WorkingMemoryEventListener;
import org.drools.event.WorkingMemoryEventSupport;
+import org.drools.impl.EnvironmentFactory;
import org.drools.reteoo.ReteooWorkingMemory.WorkingMemoryReteAssertAction;
import org.drools.rule.EntryPoint;
import org.drools.spi.AgendaFilter;
@@ -84,7 +85,8 @@
synchronized ( this.ruleBase.getPackagesMap() ) {
InternalWorkingMemory wm = new ReteooWorkingMemory( this.ruleBase.nextWorkingMemoryCounter(),
this.ruleBase,
- new SessionConfiguration() );
+ new SessionConfiguration(),
+ EnvironmentFactory.newEnvironment() );
wm.setGlobalResolver( this.globalResolver );
wm.setWorkingMemoryEventSupport( this.workingMemoryEventSupport );
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooWorkingMemory.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -35,12 +35,14 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.common.PropagationContextImpl;
import org.drools.common.WorkingMemoryAction;
+import org.drools.impl.EnvironmentFactory;
import org.drools.marshalling.MarshallerReaderContext;
import org.drools.marshalling.MarshallerWriteContext;
import org.drools.rule.EntryPoint;
import org.drools.rule.Package;
import org.drools.rule.Query;
import org.drools.rule.Rule;
+import org.drools.runtime.Environment;
import org.drools.spi.FactHandleFactory;
import org.drools.spi.PropagationContext;
@@ -62,7 +64,8 @@
final InternalRuleBase ruleBase) {
this( id,
ruleBase,
- new SessionConfiguration() );
+ new SessionConfiguration(),
+ EnvironmentFactory.newEnvironment() );
}
/**
@@ -73,11 +76,13 @@
*/
public ReteooWorkingMemory(final int id,
final InternalRuleBase ruleBase,
- final SessionConfiguration config) {
+ final SessionConfiguration config,
+ final Environment environment) {
super( id,
ruleBase,
ruleBase.newFactHandleFactory(),
- config );
+ config,
+ environment );
this.agenda = new DefaultAgenda( ruleBase );
this.agenda.setWorkingMemory( this );
}
@@ -88,14 +93,16 @@
final InitialFactHandle initialFactHandle,
final long propagationContext,
final SessionConfiguration config,
- final InternalAgenda agenda) {
+ final InternalAgenda agenda,
+ final Environment environment) {
super( id,
ruleBase,
handleFactory,
initialFactHandle,
//ruleBase.newFactHandleFactory(context),
propagationContext,
- config );
+ config,
+ environment );
this.agenda = agenda;
this.agenda.setWorkingMemory( this );
// InputPersister.readFactHandles( context );
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooRuleBaseTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooRuleBaseTest.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooRuleBaseTest.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -66,8 +66,8 @@
public void testNoKeepReference() throws Exception {
SessionConfiguration conf = new SessionConfiguration();
conf.setKeepReference( false );
- final WorkingMemory wm5 = this.ruleBase.newStatefulSession( conf );
- final WorkingMemory wm6 = this.ruleBase.newStatefulSession( conf );
+ final WorkingMemory wm5 = this.ruleBase.newStatefulSession( conf, null );
+ final WorkingMemory wm6 = this.ruleBase.newStatefulSession( conf, null );
assertLength( 4,
this.ruleBase.getStatefulSessions() );
assertNotContains( wm5, this.ruleBase.getStatefulSessions() );
Modified: labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java
===================================================================
--- labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2009-02-12 04:40:45 UTC (rev 25236)
+++ labs/jbossrules/trunk/drools-guvnor/src/main/java/org/drools/guvnor/server/ServiceImplementation.java 2009-02-12 07:07:55 UTC (rev 25237)
@@ -1856,7 +1856,7 @@
cl );
SessionConfiguration sessionConfiguration = new SessionConfiguration();
sessionConfiguration.setKeepReference( false );
- InternalWorkingMemory workingMemory = (InternalWorkingMemory) rb.newStatefulSession( sessionConfiguration );
+ InternalWorkingMemory workingMemory = (InternalWorkingMemory) rb.newStatefulSession( sessionConfiguration, null );
if ( coverage != null ) workingMemory.addEventListener( coverage );
try {
AuditLogReporter logger = new AuditLogReporter( workingMemory );
More information about the jboss-svn-commits
mailing list