[jboss-svn-commits] JBL Code SVN: r13304 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/base and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jul 10 13:15:11 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-07-10 13:15:11 -0400 (Tue, 10 Jul 2007)
New Revision: 13304
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/MapGlobalResolver.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.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/reteoo/ReteooStatelessSession.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalResolver.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooWorkingMemoryTest.java
Log:
JBRULES-994 set/get GlobalResolver
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-07-10 17:11:12 UTC (rev 13303)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/WorkingMemory.java 2007-07-10 17:15:11 UTC (rev 13304)
@@ -109,13 +109,6 @@
public Agenda getAgenda();
/**
- * Retrieve all of the set application data in this memory
- *
- * @return the application data as a Map
- */
- Map getGlobals();
-
- /**
* Set a specific piece of global in this working memory. Null values will return doing nothign
*
* @param name
@@ -138,6 +131,8 @@
* @param globalResolver
*/
void setGlobalResolver(GlobalResolver globalResolver);
+
+ GlobalResolver getGlobalResolver();
/**
* Retrieve the <code>RuleBase</code> of this working memory.
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/MapGlobalResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/MapGlobalResolver.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/MapGlobalResolver.java 2007-07-10 17:15:11 UTC (rev 13304)
@@ -0,0 +1,33 @@
+package org.drools.base;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.spi.GlobalResolver;
+
+public class MapGlobalResolver
+ implements
+ GlobalResolver {
+
+ private static final long serialVersionUID = 400L;
+
+ private final Map map;
+
+ public MapGlobalResolver() {
+ this.map = new HashMap();
+ }
+
+ public MapGlobalResolver(Map map) {
+ this.map = map;
+ }
+
+ public Object resolveGlobal(String identifier) {
+ return this.map.get( identifier );
+ }
+
+ public void setGlobal(String identifier, Object value) {
+ this.map.put( identifier,
+ value );
+ }
+
+}
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 2007-07-10 17:11:12 UTC (rev 13303)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java 2007-07-10 17:15:11 UTC (rev 13304)
@@ -41,6 +41,7 @@
import org.drools.WorkingMemory;
import org.drools.RuleBaseConfiguration.AssertBehaviour;
import org.drools.RuleBaseConfiguration.LogicalOverride;
+import org.drools.base.MapGlobalResolver;
import org.drools.base.ShadowProxy;
import org.drools.event.AgendaEventListener;
import org.drools.event.AgendaEventSupport;
@@ -97,16 +98,13 @@
/** The actual memory for the <code>JoinNode</code>s. */
protected final PrimitiveLongMap nodeMemories = new PrimitiveLongMap( 32,
8 );
-
- /** Global values which are associated with this memory. */
- protected Map globals = new HashMap();
-
/** Object-to-handle mapping. */
private final ObjectHashMap assertMap;
private final ObjectHashMap identityMap;
protected Map queryResults = Collections.EMPTY_MAP;
+ /** Global values which are associated with this memory. */
protected GlobalResolver globalResolver;
protected static final Object NULL = new Serializable() {
@@ -165,6 +163,7 @@
this.id = id;
this.ruleBase = ruleBase;
this.handleFactory = handleFactory;
+ this.globalResolver = new MapGlobalResolver();
this.maintainTms = this.ruleBase.getConfiguration().isMaintainTms();
this.sequential = this.ruleBase.getConfiguration().isSequential();
@@ -311,26 +310,26 @@
return this.handleFactory;
}
- public void setGlobals(Map globals) {
- this.globals = globals;
- }
+// public void setGlobals(Map globals) {
+// //this.globals = globals;
+// }
- /**
- * @see WorkingMemory
- */
- public Map getGlobals() {
- try {
- this.lock.lock();
- return this.globals;
- } finally {
- this.lock.unlock();
- }
- }
+// /**
+// * @see WorkingMemory
+// */
+// public Map getGlobals() {
+// try {
+// this.lock.lock();
+// return this.globals;
+// } finally {
+// this.lock.unlock();
+// }
+// }
/**
* @see WorkingMemory
*/
- public void setGlobal(final String name,
+ public void setGlobal(final String identifier,
final Object value) {
// Cannot set null values
if ( value == null ) {
@@ -341,15 +340,15 @@
this.lock.lock();
// Make sure the global has been declared in the RuleBase
final Map globalDefintions = this.ruleBase.getGlobals();
- final Class type = (Class) globalDefintions.get( name );
+ final Class type = (Class) globalDefintions.get( identifier );
if ( (type == null) ) {
- throw new RuntimeException( "Unexpected global [" + name + "]" );
+ throw new RuntimeException( "Unexpected global [" + identifier + "]" );
} else if ( !type.isInstance( value ) ) {
throw new RuntimeException( "Illegal class for global. " + "Expected [" + type.getName() + "], " + "found [" + value.getClass().getName() + "]." );
} else {
- this.globals.put( name,
- value );
+ this.globalResolver.setGlobal( identifier,
+ value );
}
} finally {
this.lock.unlock();
@@ -364,6 +363,10 @@
this.lock.unlock();
}
}
+
+ public GlobalResolver getGlobalResolver() {
+ return this.globalResolver;
+ }
public long getId() {
return this.id;
@@ -372,14 +375,10 @@
/**
* @see WorkingMemory
*/
- public Object getGlobal(final String name) {
+ public Object getGlobal(final String identifier) {
try {
this.lock.lock();
- Object object = this.globals.get( name );
- if ( object == null && this.globalResolver != null ) {
- object = this.globalResolver.resolve( name );
- }
- return object;
+ return this.globalResolver.resolveGlobal( identifier );
} finally {
this.lock.unlock();
}
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 2007-07-10 17:11:12 UTC (rev 13303)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InternalWorkingMemory.java 2007-07-10 17:15:11 UTC (rev 13304)
@@ -19,10 +19,8 @@
public interface InternalWorkingMemory
extends
WorkingMemory {
- public long getId();
+ public long getId();
- public void setGlobals(Map globals);
-
public void setWorkingMemoryEventSupport(WorkingMemoryEventSupport workingMemoryEventSupport);
public void setAgendaEventSupport(AgendaEventSupport agendaEventSupport);
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-10 17:11:12 UTC (rev 13303)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooStatelessSession.java 2007-07-10 17:15:11 UTC (rev 13304)
@@ -10,6 +10,7 @@
import org.drools.StatelessSession;
import org.drools.StatelessSessionResult;
import org.drools.WorkingMemory;
+import org.drools.base.MapGlobalResolver;
import org.drools.common.InternalRuleBase;
import org.drools.common.InternalWorkingMemory;
import org.drools.concurrent.AssertObject;
@@ -34,8 +35,7 @@
private InternalRuleBase ruleBase;
private AgendaFilter agendaFilter;
- private Map globals = new HashMap();
- private GlobalResolver globalResolver;
+ private GlobalResolver globalResolver = new MapGlobalResolver();
/** The eventSupport */
protected WorkingMemoryEventSupport workingMemoryEventSupport = new WorkingMemoryEventSupport();
@@ -53,10 +53,7 @@
InternalWorkingMemory wm = new ReteooWorkingMemory( this.ruleBase.nextWorkingMemoryCounter(),
this.ruleBase );
- wm.setGlobals( globals );
- if ( globalResolver != null ) {
- wm.setGlobalResolver( this.globalResolver );
- }
+ wm.setGlobalResolver( this.globalResolver );
wm.setWorkingMemoryEventSupport( this.workingMemoryEventSupport );
wm.setAgendaEventSupport( this.agendaEventSupport );
wm.setRuleFlowEventSupport( ruleFlowEventSupport );
@@ -107,7 +104,7 @@
public void setGlobal(String identifier,
Object value) {
- this.globals.put( identifier,
+ this.globalResolver.setGlobal( identifier,
value );
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalResolver.java 2007-07-10 17:11:12 UTC (rev 13303)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/GlobalResolver.java 2007-07-10 17:15:11 UTC (rev 13304)
@@ -1,5 +1,9 @@
package org.drools.spi;
-public interface GlobalResolver {
- public Object resolve(String name);
+import java.io.Serializable;
+
+public interface GlobalResolver extends Serializable {
+ public Object resolveGlobal(String identifier);
+
+ public void setGlobal(String identifier, Object value);
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooWorkingMemoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooWorkingMemoryTest.java 2007-07-10 17:11:12 UTC (rev 13303)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/ReteooWorkingMemoryTest.java 2007-07-10 17:15:11 UTC (rev 13304)
@@ -7,6 +7,7 @@
import org.drools.FactHandle;
import org.drools.RuleBaseFactory;
+import org.drools.base.MapGlobalResolver;
import org.drools.common.EqualityKey;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.TruthMaintenanceSystem;
@@ -75,13 +76,7 @@
"value1" );
map.put( "global2",
"value2" );
- final GlobalResolver resolver = new GlobalResolver() {
-
- public Object resolve(String name) {
- return map.get( name );
- }
-
- };
+ final GlobalResolver resolver = new MapGlobalResolver(map);
final ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase();
final InternalWorkingMemory workingMemory = (InternalWorkingMemory) ruleBase.newStatefulSession();
workingMemory.setGlobalResolver( resolver );
More information about the jboss-svn-commits
mailing list