[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