[jboss-svn-commits] JBL Code SVN: r14676 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools: reteoo and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 27 21:09:40 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-08-27 21:09:40 -0400 (Mon, 27 Aug 2007)
New Revision: 14676

Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
Log:
-MVEL tuple's objects are now resolved ahead of time.
-set type on various variableresolvers.
-only compiled code is removed, mvel was breaking this earlier.

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -7,6 +7,7 @@
 import java.util.Map;
 
 import org.drools.WorkingMemory;
+import org.drools.reteoo.ReteTuple;
 import org.drools.rule.Declaration;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.Tuple;
@@ -24,7 +25,7 @@
     /**
      * Holds the instance of the variables.
      */
-    private Tuple             tuple;
+    private Object[]          tupleObjects;
     private KnowledgeHelper   knowledgeHelper;
     private Object            object;
     private Map               localDeclarations;
@@ -79,7 +80,7 @@
                            final Object object,
                            final WorkingMemory workingMemory,
                            final Map variables) {
-        this.tuple = tuple;
+        this.tupleObjects = ((ReteTuple) tuple).toObjectArray();
         this.knowledgeHelper = knowledgeHelper;
         this.object = object;
         this.workingMemory = workingMemory;
@@ -91,7 +92,8 @@
     }
 
     public Object getValue(final Declaration declaration) {
-        return this.tuple.get( declaration ).getObject();
+        int i = declaration.getPattern().getOffset();
+        return this.tupleObjects[ i ];
     }
 
     public Object getValue(final String identifier) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -45,7 +45,7 @@
      * Not used in drools.
      */
     public Class getType() {
-        return null;
+        return this.knownType;
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -42,7 +42,7 @@
      * Not used in drools.
      */
     public Class getType() {
-        return null;
+        return KnowledgeHelper.class;
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -40,11 +40,8 @@
         return 0;
     }
 
-    /**
-     * Not used in drools.
-     */
     public Class getType() {
-        return null;
+        return this.declaration.getExtractor().getExtractToClass();
     }
     
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -44,7 +44,7 @@
      * Not used in drools.
      */
     public Class getType() {
-        return null;
+        return this.declaration.getExtractor().getExtractToClass();
     }
 
     /**

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteTuple.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.drools.base.ShadowProxy;
 import org.drools.common.InternalFactHandle;
 import org.drools.rule.Declaration;
 import org.drools.spi.Activation;
@@ -210,4 +211,18 @@
         }
         return entry;
     }
+    
+    public Object[] toObjectArray() {        
+        Object[] objects = new Object[ this.index + 1 ];
+        ReteTuple entry = this;       
+        while ( entry != null ) {
+            Object object = entry.getLastHandle().getObject();
+            if ( object instanceof ShadowProxy ) {
+                object = ((ShadowProxy)object).getShadowedObject();
+            }
+            objects[entry.index] = object;
+            entry = entry.parent;
+        }   
+        return objects;
+    }
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Package.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -327,13 +327,15 @@
     public PackageCompilationData removeRule(final Rule rule) {
         this.rules.remove( rule.getName() );
         final String consequenceName = rule.getConsequence().getClass().getName();
-        this.packageCompilationData.remove( consequenceName );
-
-        removeClasses( rule.getLhs() );
-
-        // Now remove the rule class - the name is a subset of the consequence name
-        this.packageCompilationData.remove( consequenceName.substring( 0,
-                                                                       consequenceName.indexOf( "ConsequenceInvoker" ) ) );
+        
+        // check for compiled code and remove if present.
+        if ( this.packageCompilationData.remove( consequenceName ) ) {    
+            removeClasses( rule.getLhs() );
+    
+            // Now remove the rule class - the name is a subset of the consequence name
+            this.packageCompilationData.remove( consequenceName.substring( 0,
+                                                                           consequenceName.indexOf( "ConsequenceInvoker" ) ) );
+        }
         return this.packageCompilationData;
     }
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java	2007-08-27 23:28:38 UTC (rev 14675)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java	2007-08-28 01:09:40 UTC (rev 14676)
@@ -182,13 +182,15 @@
 
     }
 
-    public void remove(final String resourceName) throws RuntimeDroolsException {
+    public boolean remove(final String resourceName) throws RuntimeDroolsException {
         this.invokerLookups.remove( resourceName );
         if ( this.store.remove( convertClassToResourcePath( resourceName ) ) != null ) {
             // we need to make sure the class is removed from the classLoader
             // reload();
             this.dirty = true;
+            return true;
         }
+        return false;
     }
 
     public String[] list() {




More information about the jboss-svn-commits mailing list