[jboss-svn-commits] JBL Code SVN: r12649 - in labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base: mvel and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 18 06:44:00 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-06-18 06:44:00 -0400 (Mon, 18 Jun 2007)
New Revision: 12649

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java
   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/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/base/mvel/MVELConsequence.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java
Log:
JBRULES-928  MVEL parts are not serialisable

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java	2007-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -15,7 +15,8 @@
 
 public class MVELDataProvider
     implements
-    DataProvider {
+    DataProvider,
+    Serializable  {
 
     private final Serializable      expression;
     private final DroolsMVELFactory factory;
@@ -35,12 +36,13 @@
                                final WorkingMemory wm,
                                final PropagationContext ctx) {
         this.factory.setContext( tuple,
-                            null,
-                            wm );
+                                 null,
+                                 null,
+                                 wm );
 
         //this.expression.
         final Object result = MVEL.executeExpression( this.expression,
-                                                this.factory );
+                                                      this.factory );
         if ( result instanceof Collection ) {
             return ((Collection) result).iterator();
         } else if ( result instanceof Iterator ) {

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-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -3,6 +3,7 @@
 import org.drools.FactHandle;
 import org.drools.WorkingMemory;
 import org.drools.rule.Declaration;
+import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.Tuple;
 import org.mvel.CompileException;
 import org.mvel.integration.VariableResolver;
@@ -12,63 +13,68 @@
 import org.mvel.integration.impl.MapVariableResolver;
 import org.mvel.integration.impl.StaticMethodImportResolverFactory;
 
+import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
-public class DroolsMVELFactory extends BaseVariableResolverFactory {
+public class DroolsMVELFactory extends BaseVariableResolverFactory implements Serializable {
     /**
      * Holds the instance of the variables.
      */
     //private Map           variables;
-
     //    public DroolsMVELFactory(Map variables) {
     //        this.variables = variables;
     //    }
+    private Tuple           tuple;
+    private KnowledgeHelper knowledgeHelper;
+    private Object          object;
+    private Map             localDeclarations;
+    private Map             previousDeclarations;
+    private Map             globals;
 
-    private Tuple         tuple;
-    private Object        object;
-    private Map           localDeclarations;
-    private Map           previousDeclarations;
-    private Map           globals;
+    private WorkingMemory   workingMemory;
 
-    private WorkingMemory workingMemory;
-    
-    private Map           variables;
+    private Map             variables;
 
-
     public DroolsMVELFactory(final Map previousDeclarations,
                              final Map localDeclarations,
-                             final Map globals) { 
+                             final Map globals) {
         this.previousDeclarations = previousDeclarations;
         this.localDeclarations = localDeclarations;
         this.globals = globals;
         //this.variables = new HashMap();
     }
-    
+
     public Object getObject() {
         return this.object;
     }
-    
+
     public WorkingMemory getWorkingMemory() {
         return this.workingMemory;
     }
 
     public void setContext(final Tuple tuple,
+                           final KnowledgeHelper knowledgeHelper,
                            final Object object,
                            final WorkingMemory workingMemory) {
         this.tuple = tuple;
+        this.knowledgeHelper = knowledgeHelper;
         this.object = object;
         this.workingMemory = workingMemory;
     }
 
+    public KnowledgeHelper getKnowledgeHelper() {
+        return this.knowledgeHelper;
+    }
+
     public Object getValue(final Declaration declaration) {
         return this.tuple.get( declaration ).getObject();
     }
 
     public Object getValue(final String identifier) {
         return this.workingMemory.getGlobal( identifier );
-    }    
+    }
 
     public VariableResolver createVariable(String name,
                                            Object value) {
@@ -97,7 +103,7 @@
         } else {
             if ( this.variables == null ) {
                 this.variables = new HashMap();
-            }            
+            }
             addResolver( name,
                          vr = new MapVariableResolver( this.variables,
                                                        name,
@@ -108,20 +114,28 @@
     }
 
     public boolean isResolveable(String name) {
-        if ( this.variableResolvers != null && this.variableResolvers.containsKey( name ) ) {
+        if ( DroolsMVELKnowledgeHelper.DROOLS.equals( name  ) ) {
+            addResolver( DroolsMVELKnowledgeHelper.DROOLS,
+                         new DroolsMVELKnowledgeHelper( this ) );
             return true;
+
+        } else if ( this.variableResolvers != null && this.variableResolvers.containsKey( name ) ) {
+            return true;
         } else if ( this.previousDeclarations != null && this.previousDeclarations.containsKey( name ) ) {
-            addResolver(name, new DroolsMVELPreviousDeclarationVariable( (Declaration) this.previousDeclarations.get( name ),
-                                                                  this ) );
+            addResolver( name,
+                         new DroolsMVELPreviousDeclarationVariable( (Declaration) this.previousDeclarations.get( name ),
+                                                                    this ) );
             return true;
         } else if ( this.localDeclarations != null && this.localDeclarations.containsKey( name ) ) {
-            addResolver(name, new DroolsMVELLocalDeclarationVariable( (Declaration) this.localDeclarations.get( name ),
-                                                               this ) );
+            addResolver( name,
+                         new DroolsMVELLocalDeclarationVariable( (Declaration) this.localDeclarations.get( name ),
+                                                                 this ) );
             return true;
         } else if ( this.globals.containsKey( name ) ) {
-            addResolver(name, new DroolsMVELGlobalVariable( name,
-                                                     (Class) this.globals.get( name ),
-                                                     this ) );
+            addResolver( name,
+                         new DroolsMVELGlobalVariable( name,
+                                                       (Class) this.globals.get( name ),
+                                                       this ) );
             return true;
         } else if ( this.variableResolvers != null && this.variableResolvers.containsKey( name ) ) {
             addResolver( name,
@@ -131,7 +145,7 @@
         } else if ( nextFactory != null ) {
             return nextFactory.isResolveable( name );
         }
-        
+
         return false;
     }
 

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-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELGlobalVariable.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -1,10 +1,13 @@
 package org.drools.base.mvel;
 
+import java.io.Serializable;
+
 import org.mvel.integration.VariableResolver;
 
 public class DroolsMVELGlobalVariable
     implements
-    VariableResolver {
+    VariableResolver,
+    Serializable {
 
     private String            name;
     private Class             knownType;

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELKnowledgeHelper.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -0,0 +1,54 @@
+package org.drools.base.mvel;
+
+import java.io.Serializable;
+
+import org.drools.rule.Declaration;
+import org.drools.spi.KnowledgeHelper;
+import org.mvel.integration.VariableResolver;
+
+public class DroolsMVELKnowledgeHelper
+    implements
+    VariableResolver,
+    Serializable  {
+
+    private DroolsMVELFactory factory;
+    public static final String DROOLS = "drools";
+
+    public DroolsMVELKnowledgeHelper(final DroolsMVELFactory factory) {
+        this.factory = factory;
+    }
+
+    public String getName() {
+        return DROOLS;
+    }
+
+    public Class getKnownType() {
+        return KnowledgeHelper.class;
+    }
+
+    public Object getValue() {
+        return this.factory.getKnowledgeHelper();
+    }    
+
+    public void setValue(final Object value) {
+        throw new UnsupportedOperationException( "External Variable identifer='" + getName() + "' type='" + getKnownType() + "' is final, it cannot be set" );
+    }
+
+    public int getFlags() {
+        return 0;
+    }
+
+    /**
+     * Not used in drools.
+     */
+    public Class getType() {
+        return null;
+    }
+
+    /**
+     * Not used in drools.
+     */
+    public void setStaticType(Class arg0) {
+    }
+
+}

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-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -1,11 +1,14 @@
 package org.drools.base.mvel;
 
+import java.io.Serializable;
+
 import org.drools.rule.Declaration;
 import org.mvel.integration.VariableResolver;
 
 public class DroolsMVELLocalDeclarationVariable
     implements
-    VariableResolver {
+    VariableResolver,
+    Serializable  {
 
     private Declaration       declaration;
     private DroolsMVELFactory factory;

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-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -1,11 +1,14 @@
 package org.drools.base.mvel;
 
+import java.io.Serializable;
+
 import org.drools.rule.Declaration;
 import org.mvel.integration.VariableResolver;
 
 public class DroolsMVELPreviousDeclarationVariable
     implements
-    VariableResolver {
+    VariableResolver,
+    Serializable  {
 
     private Declaration       declaration;
     private DroolsMVELFactory factory;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2007-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -9,7 +9,8 @@
 
 public class MVELConsequence
     implements
-    Consequence {
+    Consequence,
+    Serializable  {
     private static final long       serialVersionUID = 320L;
 
     private final Serializable      expr;
@@ -24,6 +25,7 @@
     public void evaluate(final KnowledgeHelper knowledgeHelper,
                          final WorkingMemory workingMemory) throws Exception {
         this.factory.setContext( knowledgeHelper.getTuple(),
+                                 knowledgeHelper,
                                  null,
                                  workingMemory );
         MVEL.executeExpression( this.expr,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java	2007-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -10,7 +10,9 @@
 
 public class MVELEvalExpression
     implements
-    EvalExpression {
+    EvalExpression,
+    Serializable  {
+      
 
     private static final long       serialVersionUID = 320L;
 
@@ -27,8 +29,9 @@
                             final Declaration[] requiredDeclarations,
                             final WorkingMemory workingMemory) throws Exception {
         this.factory.setContext( tuple,
-                            null,
-                            workingMemory );
+                                 null,
+                                 null,
+                                 workingMemory );
         final Boolean result = (Boolean) MVEL.executeExpression( this.expr,
                                                                  new Object(),
                                                                  this.factory );

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java	2007-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -10,7 +10,8 @@
 
 public class MVELPredicateExpression
     implements
-    PredicateExpression {
+    PredicateExpression,
+    Serializable  {
     private static final long       serialVersionUID = 320L;
 
     private final Serializable      expr;
@@ -28,6 +29,7 @@
                             final Declaration[] requiredDeclarations,
                             final WorkingMemory workingMemory) throws Exception {
         this.factory.setContext( tuple,
+                                 null,
                                  object,
                                  workingMemory );
         final Boolean result = (Boolean) MVEL.executeExpression( this.expr,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java	2007-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELReturnValueExpression.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -11,7 +11,8 @@
 
 public class MVELReturnValueExpression
     implements
-    ReturnValueExpression {
+    ReturnValueExpression,
+    Serializable  {
     private static final long       serialVersionUID = 320L;
 
     private final Serializable      expr;
@@ -29,6 +30,7 @@
                                final Declaration[] requiredDeclarations,
                                final WorkingMemory workingMemory) throws Exception {
         this.factory.setContext( tuple,
+                                 null,
                                  object,
                                  workingMemory );
 

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java	2007-06-18 10:37:59 UTC (rev 12648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELSalienceExpression.java	2007-06-18 10:44:00 UTC (rev 12649)
@@ -7,8 +7,10 @@
 import org.drools.spi.Tuple;
 import org.mvel.MVEL;
 
-public class MVELSalienceExpression implements
-    Salience {    
+public class MVELSalienceExpression
+    implements
+    Salience,
+    Serializable {
 
     private static final long       serialVersionUID = 320L;
 
@@ -25,10 +27,10 @@
                         final WorkingMemory workingMemory) {
         this.factory.setContext( tuple,
                                  null,
+                                 null,
                                  workingMemory );
         return ((Integer) MVEL.executeExpression( this.expr,
                                                   this.factory )).intValue();
     }
 
-   
 }




More information about the jboss-svn-commits mailing list