[jboss-svn-commits] JBL Code SVN: r25039 - labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Feb 1 22:03:18 EST 2009


Author: mark.proctor at jboss.com
Date: 2009-02-01 22:03:17 -0500 (Sun, 01 Feb 2009)
New Revision: 25039

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java
Log:
-Default GlobalResolver does not change, it now just adds a secondary delegate to a user provided GlobalResolver instead.

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-02 00:39:51 UTC (rev 25038)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/AbstractWorkingMemory.java	2009-02-02 03:03:17 UTC (rev 25039)
@@ -135,7 +135,8 @@
     protected Map                                            queryResults;
 
     /** Global values which are associated with this memory. */
-    protected GlobalResolver                                 globalResolver;
+    protected GlobalResolver                                 defaultGlobalResolver;
+    protected GlobalResolver                                 delegateGlobalResolver;
 
     /** The eventSupport */
     protected WorkingMemoryEventSupport                      workingMemoryEventSupport;
@@ -244,7 +245,7 @@
         this.config = config;
         this.ruleBase = ruleBase;
         this.handleFactory = handleFactory;
-        this.globalResolver = new MapGlobalResolver();
+        this.defaultGlobalResolver = new MapGlobalResolver();
 
         final RuleBaseConfiguration conf = this.ruleBase.getConfiguration();
 
@@ -489,7 +490,7 @@
                 throw new RuntimeException( "Illegal class for global. " + "Expected [" + type.getName() + "], " + "found [" + value.getClass().getName() + "]." );
 
             } else {
-                this.globalResolver.setGlobal( identifier,
+                this.defaultGlobalResolver.setGlobal( identifier,
                                                value );
             }
         } finally {
@@ -500,14 +501,14 @@
     public void setGlobalResolver(final GlobalResolver globalResolver) {
         try {
             this.lock.lock();
-            this.globalResolver = globalResolver;
+            this.delegateGlobalResolver = globalResolver;
         } finally {
             this.lock.unlock();
         }
     }
 
     public GlobalResolver getGlobalResolver() {
-        return this.globalResolver;
+        return this.delegateGlobalResolver;
     }
 
     public long getId() {
@@ -521,7 +522,11 @@
     public Object getGlobal(final String identifier) {
         try {
             this.lock.lock();
-            return this.globalResolver.resolveGlobal( identifier );
+            Object object =  this.defaultGlobalResolver.resolveGlobal( identifier );
+            if ( object == null && this.delegateGlobalResolver != null ) {
+                object =  this.delegateGlobalResolver.resolveGlobal( identifier );
+            }
+            return object;
         } finally {
             this.lock.unlock();
         }




More information about the jboss-svn-commits mailing list