[jboss-svn-commits] JBL Code SVN: r9821 - 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
Tue Feb 27 15:20:17 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-02-27 15:20:16 -0500 (Tue, 27 Feb 2007)
New Revision: 9821

Added:
   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
Removed:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELDeclarationVariable.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/MVELEvalExpression.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java
Log:
JBRULES-708 MVEL Integration
-Predicate now works

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-02-27 20:20:08 UTC (rev 9820)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/dataproviders/MVELDataProvider.java	2007-02-27 20:20:16 UTC (rev 9821)
@@ -37,7 +37,7 @@
     public Iterator getResults(final Tuple tuple,
                                final WorkingMemory wm,
                                final PropagationContext ctx) {
-        factory.setContext( tuple, wm );
+        factory.setContext( tuple, null, wm );
                         
         //this.expression.
         Object result = MVEL.executeExpression(this.expression, factory);

Deleted: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELDeclarationVariable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELDeclarationVariable.java	2007-02-27 20:20:08 UTC (rev 9820)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELDeclarationVariable.java	2007-02-27 20:20:16 UTC (rev 9821)
@@ -1,39 +0,0 @@
-package org.drools.base.mvel;
-
-import org.drools.rule.Declaration;
-import org.mvel.integration.VariableResolver;
-
-public class DroolsMVELDeclarationVariable
-    implements
-    VariableResolver {
-    
-    private Declaration declaration;
-    private DroolsMVELFactory factory;
-       
-    public DroolsMVELDeclarationVariable(Declaration declaration,
-    		DroolsMVELFactory factory ) {
-        this.declaration = declaration;
-        this.factory =  factory;
-    }        
-    
-    public String getName() {
-        return this.declaration.getIdentifier();
-    }
-
-    public Class getKnownType() {
-        return declaration.getExtractor().getExtractToClass();
-    }
-
-    public Object getValue() {
-        return declaration.getValue( this.factory.getValue( this.declaration ));
-    }
-
-    public void setValue(Object value) {
-        throw new UnsupportedOperationException( "External Variable identifer='" + getName() + "' type='" + getKnownType()+ "' is final, it cannot be set" );
-    }
-    
-    public int getFlags()  {
-    	return 0;
-    }    
-
-}

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-02-27 20:20:08 UTC (rev 9820)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2007-02-27 20:20:16 UTC (rev 9821)
@@ -10,107 +10,137 @@
 import org.mvel.integration.VariableResolver;
 import org.mvel.integration.VariableResolverFactory;
 
-public class DroolsMVELFactory implements VariableResolverFactory {    
-    private Tuple tuple;
-    private Map declarations;
-    private Map globals;
-    
-    private Map resolvers;
+public class DroolsMVELFactory
+    implements
+    VariableResolverFactory {
+    private Tuple         tuple;
+    private Object        object;
+    private Map           localDeclarations;
+    private Map           previousDeclarations;
+    private Map           globals;
+
+    private Map           resolvers;
     //private
     private WorkingMemory workingMemory;
-    
+
     public DroolsMVELFactory() {
-    	this.resolvers = Collections.EMPTY_MAP;
+        this.resolvers = Collections.EMPTY_MAP;
     }
-    
-    public void setDeclarationMap(Map declarations) {
-        this.declarations = declarations;
+
+    public DroolsMVELFactory(Map previousDeclarations,
+                             Map localDeclarations,
+                             Map globals) {
+
     }
-    
+
+    public void setPreviousDeclarationMap(Map declarations) {
+        this.previousDeclarations = declarations;
+    }
+
+    public void setLocalDeclarationMap(Map declarations) {
+        this.localDeclarations = declarations;
+    }
+
     public void setGlobalsMap(Map globals) {
         this.globals = globals;
     }
-    
-    public void setContext(Tuple tuple, WorkingMemory workingMemory) {
+
+
+    public Object getObject() {
+        return this.object;
+    }
+
+    public void setContext(Tuple tuple,
+                           Object object,
+                           WorkingMemory workingMemory) {
         this.tuple = tuple;
+        this.object = object;
         this.workingMemory = workingMemory;
     }
-    
+
     public Object getValue(Declaration declaration) {
         return tuple.get( declaration ).getObject();
     }
-    
+
     public Object getValue(String identifier) {
         return this.workingMemory.getGlobal( identifier );
     }
 
-	public VariableResolver createVariable(String name, Object value) {
-		throw new UnsupportedOperationException( "Variables cannot be created here" );
-	}
+    public VariableResolver createVariable(String name,
+                                           Object value) {
+        throw new UnsupportedOperationException( "Variables cannot be created here" );
+    }
 
-	public VariableResolverFactory getNextFactory() {
-		return null;
-	}
+    public VariableResolverFactory getNextFactory() {
+        return null;
+    }
 
-	public VariableResolverFactory setNextFactory(VariableResolverFactory resolverFactory) {
-		throw new UnsupportedOperationException( "Chained factories are not support for DroolsMVELFactory" );
-	}    	
-	
-	public VariableResolver getVariableResolver(String name) {	 	  
-		return ( VariableResolver ) this.resolvers.get( name );
-	}
+    public VariableResolverFactory setNextFactory(VariableResolverFactory resolverFactory) {
+        throw new UnsupportedOperationException( "Chained factories are not support for DroolsMVELFactory" );
+    }
 
-	public boolean isResolveable(String name) {
-		 //return this.declarations.containsKey( name ) || this.globals.containsKey( name );
-		  if ( this.resolvers == Collections.EMPTY_MAP) {
-			  this.resolvers = new HashMap();
-		  }
-		  
-		  VariableResolver resolver = (VariableResolver) this.resolvers.get( name );
-		  
-		  if ( resolver != null )  {
-			  return true;
-		  }
-		  
-	      if ( this.declarations.containsKey( name )) {
-	    	  resolver = new DroolsMVELDeclarationVariable( (Declaration) this.declarations.get( name ), this );
-	      } else {
-	    	  resolver = new DroolsMVELGlobalVariable( name, (Class) this.globals.get( name ), this );
-	      }
-	      
-	      if ( resolver != null ) {
-	    	  this.resolvers.put( name,  resolver );
-	    	  return true;
-	      } else {
-	    	  return false;
-	      }	      	
-	}
+    public VariableResolver getVariableResolver(String name) {
+        return (VariableResolver) this.resolvers.get( name );
+    }
 
-	public boolean isTarget(String name) {
-		return this.resolvers.containsKey( name  );
-	}    
-    
-//    public ValueHandler createExternalVariable(String identifier) {        
-//        registerExternalVariable( identifier );
-//        ValueHandler variable;
-//        if ( this.declarations.containsKey( identifier )) {
-//            variable = new DroolsMVELDeclarationVariable( (Declaration) this.declarations.get( identifier ), this );
-//        } else {
-//            variable = new DroolsMVELGlobalVariable( identifier, (Class) this.globals.get( identifier ), this );
-//        }
-//        return variable;
-//    	return null;
-//    }
-//
-//    public boolean isValidVariable(String identifier) {        
-//        return this.declarations.containsKey( identifier );
-//    }   
-//    
-//    public Declaration[] getRequiredDeclarations()  {
-//        List list = new ArrayList();
-//        for (int i  = 0, length  = this.requiredVariables.length; i < length; i++) {
-//            list.add( this.declarations.get( this.requiredVariables[i] ) );
-//        }
-//        return (Declaration[]) list.toArray( new Declaration[list.size()  ]  );
-//    }
+    public boolean isResolveable(String name) {
+        //return this.declarations.containsKey( name ) || this.globals.containsKey( name );
+        if ( this.resolvers == Collections.EMPTY_MAP ) {
+            this.resolvers = new HashMap();
+        }
+
+        VariableResolver resolver = (VariableResolver) this.resolvers.get( name );
+
+        if ( resolver != null ) {
+            return true;
+        }
+
+        if (  this.previousDeclarations != null && this.previousDeclarations.containsKey( name ) ) {
+            resolver = new DroolsMVELPreviousDeclarationVariable( (Declaration) this.previousDeclarations.get( name ),
+                                                                  this );
+        } else if ( this.localDeclarations != null && this.localDeclarations.containsKey( name ) ) {
+            resolver = new DroolsMVELLocalDeclarationVariable( (Declaration) this.localDeclarations.get( name ),
+                                                               this );
+        } else {
+            resolver = new DroolsMVELGlobalVariable( name,
+                                                     (Class) this.globals.get( name ),
+                                                     this );
+        }
+
+        if ( resolver != null ) {
+            this.resolvers.put( name,
+                                resolver );
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public boolean isTarget(String name) {
+        return this.resolvers.containsKey( name );
+    }
+
+    //    public ValueHandler createExternalVariable(String identifier) {        
+    //        registerExternalVariable( identifier );
+    //        ValueHandler variable;
+    //        if ( this.declarations.containsKey( identifier )) {
+    //            variable = new DroolsMVELDeclarationVariable( (Declaration) this.declarations.get( identifier ), this );
+    //        } else {
+    //            variable = new DroolsMVELGlobalVariable( identifier, (Class) this.globals.get( identifier ), this );
+    //        }
+    //        return variable;
+    //    	return null;
+    //    }
+    //
+    //    public boolean isValidVariable(String identifier) {        
+    //        return this.declarations.containsKey( identifier );
+    //    }   
+    //    
+    //    public Declaration[] getRequiredDeclarations()  {
+    //        List list = new ArrayList();
+    //        for (int i  = 0, length  = this.requiredVariables.length; i < length; i++) {
+    //            list.add( this.declarations.get( this.requiredVariables[i] ) );
+    //        }
+    //        return (Declaration[]) list.toArray( new Declaration[list.size()  ]  );
+    //    }
 }

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELLocalDeclarationVariable.java	2007-02-27 20:20:16 UTC (rev 9821)
@@ -0,0 +1,39 @@
+package org.drools.base.mvel;
+
+import org.drools.rule.Declaration;
+import org.mvel.integration.VariableResolver;
+
+public class DroolsMVELLocalDeclarationVariable
+    implements
+    VariableResolver {
+    
+    private Declaration declaration;
+    private DroolsMVELFactory factory;
+       
+    public DroolsMVELLocalDeclarationVariable(Declaration declaration,
+    		DroolsMVELFactory factory ) {
+        this.declaration = declaration;
+        this.factory =  factory;
+    }        
+    
+    public String getName() {
+        return this.declaration.getIdentifier();
+    }
+
+    public Class getKnownType() {
+        return declaration.getExtractor().getExtractToClass();
+    }
+
+    public Object getValue() {
+        return declaration.getValue( this.factory.getObject() );
+    }
+
+    public void setValue(Object value) {
+        throw new UnsupportedOperationException( "External Variable identifer='" + getName() + "' type='" + getKnownType()+ "' is final, it cannot be set" );
+    }
+    
+    public int getFlags()  {
+    	return 0;
+    }    
+
+}

Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java (from rev 9811, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELDeclarationVariable.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	2007-02-27 20:20:16 UTC (rev 9821)
@@ -0,0 +1,39 @@
+package org.drools.base.mvel;
+
+import org.drools.rule.Declaration;
+import org.mvel.integration.VariableResolver;
+
+public class DroolsMVELPreviousDeclarationVariable
+    implements
+    VariableResolver {
+    
+    private Declaration declaration;
+    private DroolsMVELFactory factory;
+       
+    public DroolsMVELPreviousDeclarationVariable(Declaration declaration,
+    		DroolsMVELFactory factory ) {
+        this.declaration = declaration;
+        this.factory =  factory;
+    }        
+    
+    public String getName() {
+        return this.declaration.getIdentifier();
+    }
+
+    public Class getKnownType() {
+        return declaration.getExtractor().getExtractToClass();
+    }
+
+    public Object getValue() {
+        return declaration.getValue( this.factory.getValue( this.declaration ));
+    }
+
+    public void setValue(Object value) {
+        throw new UnsupportedOperationException( "External Variable identifer='" + getName() + "' type='" + getKnownType()+ "' is final, it cannot be set" );
+    }
+    
+    public int getFlags()  {
+    	return 0;
+    }    
+
+}

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-02-27 20:20:08 UTC (rev 9820)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELEvalExpression.java	2007-02-27 20:20:16 UTC (rev 9821)
@@ -27,6 +27,7 @@
                             Declaration[] requiredDeclarations,
                             WorkingMemory workingMemory) throws Exception {
         factory.setContext( tuple,
+                            null,
                             workingMemory );
         Boolean result = (Boolean) MVEL.executeExpression( this.expr,
                                                            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-02-27 20:20:08 UTC (rev 9820)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELPredicateExpression.java	2007-02-27 20:20:16 UTC (rev 9821)
@@ -28,6 +28,7 @@
                             Declaration[] requiredDeclarations,
                             WorkingMemory workingMemory) throws Exception {
         factory.setContext( tuple,
+                            object,
                             workingMemory );
         Boolean result = (Boolean) MVEL.executeExpression( this.expr,
                                                            factory );




More information about the jboss-svn-commits mailing list