[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