[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