[jboss-svn-commits] JBL Code SVN: r13084 - in labs/jbossrules/trunk/drools-core: src/main/java/org/drools/common and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jul 4 12:41:25 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-07-04 12:41:25 -0400 (Wed, 04 Jul 2007)
New Revision: 13084
Modified:
labs/jbossrules/trunk/drools-core/.classpath
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java
Log:
JBRULES-971 concurrent issue on Rete node's ObjectTypeConf buildCache
Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath 2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/.classpath 2007-07-04 16:41:25 UTC (rev 13084)
@@ -5,8 +5,8 @@
<classpathentry kind="src" path="src/test/resources" output="target/test-classes" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar" sourcepath="M2_REPO/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar" sourcepath="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3-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/xpp3/xpp3/1.1.3.4.O/xpp3-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.3/xstream-1.1.3.jar"/>
<classpathentry kind="var" path="M2_REPO/org/mvel/mvel14/1.2beta27/mvel14-1.2beta27.jar"/>
</classpath>
\ No newline at end of file
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 2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractRuleBase.java 2007-07-04 16:41:25 UTC (rev 13084)
@@ -249,6 +249,10 @@
public Package[] getPackages() {
return (Package[]) this.pkgs.values().toArray( new Package[this.pkgs.size()] );
}
+
+ public Map getPackagesMap() {
+ return this.pkgs;
+ }
public Map getGlobals() {
return this.globals;
@@ -549,11 +553,11 @@
this.packageClassLoader );
final AbstractWorkingMemory workingMemory = (AbstractWorkingMemory) streamWithLoader.readObject();
+
synchronized ( this.pkgs ) {
workingMemory.setRuleBase( this );
+ return (StatefulSession) workingMemory;
}
-
- return (StatefulSession) workingMemory;
}
public void addClass(String className,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java 2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalRuleBase.java 2007-07-04 16:41:25 UTC (rev 13084)
@@ -52,6 +52,8 @@
public RuleBaseConfiguration getConfiguration();
public Package getPackage(String name);
+
+ public Map getPackagesMap();
void disposeStatefulSession(StatefulSession statefulSession);
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 2007-07-04 16:38:01 UTC (rev 13083)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java 2007-07-04 16:41:25 UTC (rev 13084)
@@ -49,18 +49,20 @@
}
public InternalWorkingMemory newWorkingMemory() {
- InternalWorkingMemory wm = new ReteooWorkingMemory( this.ruleBase.nextWorkingMemoryCounter(),
- this.ruleBase );
+ synchronized ( this.ruleBase.getPackagesMap() ) {
+ InternalWorkingMemory wm = new ReteooWorkingMemory( this.ruleBase.nextWorkingMemoryCounter(),
+ this.ruleBase );
- wm.setGlobals( globals );
- if ( globalResolver != null ) {
- wm.setGlobalResolver( this.globalResolver );
+ wm.setGlobals( globals );
+ if ( globalResolver != null ) {
+ wm.setGlobalResolver( this.globalResolver );
+ }
+ wm.setWorkingMemoryEventSupport( this.workingMemoryEventSupport );
+ wm.setAgendaEventSupport( this.agendaEventSupport );
+ wm.setRuleFlowEventSupport( ruleFlowEventSupport );
+
+ return wm;
}
- wm.setWorkingMemoryEventSupport( this.workingMemoryEventSupport );
- wm.setAgendaEventSupport( this.agendaEventSupport );
- wm.setRuleFlowEventSupport( ruleFlowEventSupport );
-
- return wm;
}
public void addEventListener(final WorkingMemoryEventListener listener) {
@@ -113,16 +115,16 @@
this.globalResolver = globalResolver;
}
- public void execute(Object object) {
+ public void execute(Object object) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
wm.insert( object );
wm.fireAllRules( this.agendaFilter );
}
public void execute(Object[] array) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
for ( int i = 0, length = array.length; i < length; i++ ) {
wm.insert( array[i] );
}
@@ -131,7 +133,7 @@
public void execute(Collection collection) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
for ( Iterator it = collection.iterator(); it.hasNext(); ) {
wm.insert( it.next() );
}
@@ -140,37 +142,37 @@
public void asyncExecute(final Object object) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
final AssertObject assertObject = new AssertObject( object );
ExecutorService executor = this.ruleBase.getConfiguration().getExecutorService();
- executor.setCommandExecutor( new CommandExecutor( wm ) );
+ executor.setCommandExecutor( new CommandExecutor( wm ) );
executor.submit( assertObject );
executor.submit( new FireAllRules( this.agendaFilter ) );
}
public void asyncExecute(final Object[] array) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
final AssertObjects assertObjects = new AssertObjects( array );
ExecutorService executor = this.ruleBase.getConfiguration().getExecutorService();
- executor.setCommandExecutor( new CommandExecutor( wm ) );
+ executor.setCommandExecutor( new CommandExecutor( wm ) );
executor.submit( assertObjects );
executor.submit( new FireAllRules( this.agendaFilter ) );
}
public void asyncExecute(final Collection collection) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
final AssertObjects assertObjects = new AssertObjects( collection );
ExecutorService executor = this.ruleBase.getConfiguration().getExecutorService();
- executor.setCommandExecutor( new CommandExecutor( wm ) );
+ executor.setCommandExecutor( new CommandExecutor( wm ) );
executor.submit( assertObjects );
executor.submit( new FireAllRules( this.agendaFilter ) );
}
public StatelessSessionResult executeWithResults(Object object) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
wm.insert( object );
wm.fireAllRules( this.agendaFilter );
return new ReteStatelessSessionResult( wm );
@@ -178,7 +180,7 @@
public StatelessSessionResult executeWithResults(Object[] array) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
for ( int i = 0, length = array.length; i < length; i++ ) {
wm.insert( array[i] );
}
@@ -188,7 +190,7 @@
public StatelessSessionResult executeWithResults(Collection collection) {
InternalWorkingMemory wm = newWorkingMemory();
-
+
for ( Iterator it = collection.iterator(); it.hasNext(); ) {
wm.insert( it.next() );
}
More information about the jboss-svn-commits
mailing list