[jboss-svn-commits] JBL Code SVN: r31274 - in labs/jbossrules/trunk: drools-compiler/META-INF and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jan 28 08:22:15 EST 2010
Author: mark.proctor at jboss.com
Date: 2010-01-28 08:22:14 -0500 (Thu, 28 Jan 2010)
New Revision: 31274
Modified:
labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java
labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
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/MVELAccumulator.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java
Log:
JBRULES-2392 MVEL should only resolve used declarations
-This strictness exposed issues with accumulate, working due to sloppy code.
Modified: labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-api/META-INF/MANIFEST.MF 2010-01-28 13:22:14 UTC (rev 31274)
@@ -65,7 +65,7 @@
Bundle-Vendor: JBoss Inc.
DynamicImport-Package: *
Bundle-Version: 5.1.0.SNAPSHOT
-Bnd-LastModified: 1264462039457
+Bnd-LastModified: 1264632440200
Bundle-Activator: org.drools.osgi.api.Activator
Bundle-ManifestVersion: 2
Bundle-Description: A rule production system
Modified: labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-compiler/META-INF/MANIFEST.MF 2010-01-28 13:22:14 UTC (rev 31274)
@@ -17,34 +17,35 @@
PSHOT",org.drools.rule.builder.dialect.java.parser;uses:="org.antlr.r
untime";version="5.1.0.SNAPSHOT",org.drools.guvnor.server.rules;uses:
="org.drools.compiler,org.drools.guvnor.client.modeldriven,org.drools
- .guvnor.server.util";version="5.1.0.SNAPSHOT",org.drools.xml.rules;us
- es:="org.w3c.dom,org.xml.sax,org.drools.xml,org.antlr.runtime.tree,or
- g.antlr.runtime";version="5.1.0.SNAPSHOT",org.drools.guvnor.client.mo
- deldriven.brl;version="5.1.0.SNAPSHOT",org.drools.xml.processes;uses:
- ="org.w3c.dom,org.xml.sax,org.drools.xml,javax.xml.transform,javax.xm
- l.transform.stream";version="5.1.0.SNAPSHOT",org.drools.guvnor.client
- .modeldriven.testing;uses:="org.drools.guvnor.client.modeldriven.brl"
- ;version="5.1.0.SNAPSHOT",org.drools.xml;uses:="org.drools.xml.proces
- ses,org.drools.xml.rules,javax.xml.parsers,org.xml.sax";version="5.1.
- 0.SNAPSHOT",org.drools.guvnor.client.modeldriven.ui;version="5.1.0.SN
- APSHOT",org.drools.compiler;uses:="org.drools.rule.builder,org.antlr.
- runtime.tree,org.antlr.runtime,org.xml.sax,org.drools.guvnor.client.m
- odeldriven.brl,org.drools.xml,org.drools.guvnor.server.util,org.drool
- s.process.builder,org.mvel2,org.drools.xml.processes";version="5.1.0.
- SNAPSHOT",org.drools.reteoo.compiled;uses:="org.drools.rule.builder.d
- ialect.java,org.drools.compiler";version="5.1.0.SNAPSHOT",org.drools.
- semantics.java.parser;version="5.1.0.SNAPSHOT",org.drools.guvnor.clie
- nt.modeldriven.dt;uses:="org.drools.guvnor.client.modeldriven.brl,org
- .drools.guvnor.client.modeldriven";version="5.1.0.SNAPSHOT",org.drool
- s.rule.builder;uses:="org.drools.compiler,org.drools.rule.builder.dia
- lect.mvel,org.mvel2,org.mvel2.compiler";version="5.1.0.SNAPSHOT",org.
- drools.guvnor.client.modeldriven;uses:="org.drools.guvnor.client.mode
- ldriven.brl";version="5.1.0.SNAPSHOT",org.drools.guvnor.server.util;u
- ses:="org.drools.guvnor.client.modeldriven.brl,com.thoughtworks.xstre
- am.io,com.thoughtworks.xstream.io.xml,com.thoughtworks.xstream,org.dr
- ools.guvnor.client.modeldriven,org.mvel2,org.drools.guvnor.client.mod
- eldriven.dt,org.drools.guvnor.client.modeldriven.testing";version="5.
- 1.0.SNAPSHOT"
+ .guvnor.server.util";version="5.1.0.SNAPSHOT",org.drools.guvnor.serve
+ r;version="5.1.0.SNAPSHOT",org.drools.xml.rules;uses:="org.w3c.dom,or
+ g.xml.sax,org.drools.xml,org.antlr.runtime.tree,org.antlr.runtime";ve
+ rsion="5.1.0.SNAPSHOT",org.drools.guvnor.client.modeldriven.brl;versi
+ on="5.1.0.SNAPSHOT",org.drools.xml.processes;uses:="org.w3c.dom,org.x
+ ml.sax,org.drools.xml,javax.xml.transform,javax.xml.transform.stream"
+ ;version="5.1.0.SNAPSHOT",org.drools.guvnor.client.modeldriven.testin
+ g;uses:="org.drools.guvnor.client.modeldriven.brl";version="5.1.0.SNA
+ PSHOT",org.drools.xml;uses:="org.drools.xml.processes,org.drools.xml.
+ rules,javax.xml.parsers,org.xml.sax";version="5.1.0.SNAPSHOT",org.dro
+ ols.guvnor.client.modeldriven.ui;version="5.1.0.SNAPSHOT",org.drools.
+ guvnor.client;version="5.1.0.SNAPSHOT",org.drools.compiler;uses:="org
+ .drools.rule.builder,org.antlr.runtime.tree,org.antlr.runtime,org.xml
+ .sax,org.drools.guvnor.client.modeldriven.brl,org.drools.xml,org.droo
+ ls.guvnor.server.util,org.drools.process.builder,org.mvel2,org.drools
+ .xml.processes";version="5.1.0.SNAPSHOT",org.drools.reteoo.compiled;u
+ ses:="org.drools.rule.builder.dialect.java,org.drools.compiler";versi
+ on="5.1.0.SNAPSHOT",org.drools.semantics.java.parser;version="5.1.0.S
+ NAPSHOT",org.drools.guvnor.client.modeldriven.dt;uses:="org.drools.gu
+ vnor.client.modeldriven.brl,org.drools.guvnor.client.modeldriven";ver
+ sion="5.1.0.SNAPSHOT",org.drools.rule.builder;uses:="org.drools.compi
+ ler,org.drools.rule.builder.dialect.mvel,org.mvel2,org.mvel2.compiler
+ ";version="5.1.0.SNAPSHOT",org.drools.guvnor.client.modeldriven;uses:
+ ="org.drools.guvnor.client.modeldriven.brl";version="5.1.0.SNAPSHOT",
+ org.drools.guvnor.server.util;uses:="org.drools.guvnor.client.modeldr
+ iven.brl,com.thoughtworks.xstream.io,com.thoughtworks.xstream.io.xml,
+ com.thoughtworks.xstream,org.drools.guvnor.client.modeldriven,org.mve
+ l2,org.drools.guvnor.client.modeldriven.dt,org.drools.guvnor.client.m
+ odeldriven.testing";version="5.1.0.SNAPSHOT"
Ignore-Package: org.drools.osgi.compiler,org.drools.util.asm,org.drool
s.process.core.impl,org.drools.base.dataproviders,org.drools.builder.
conf.impl,org.drools,org.drools.definition.process,org.drools.util,or
@@ -58,21 +59,22 @@
g.drools.base.field,org.drools.process.core.context.exception,org.dro
ols.osgi.api,org.drools.impl,org.drools.guvnor.client.modeldriven.ui,
org.drools.workflow.instance.impl,org.drools.ruleflow.core,org.drools
- .process.core.context.swimlane,org.drools.workflow.core.node,org.droo
- ls.base.evaluators,org.drools.compiler,org.drools.definition,org.droo
- ls.process.core.event,org.drools.definitions.impl,org.drools.reteoo.c
- ompiled,org.drools.guvnor.client.modeldriven.dt,org.drools.ruleflow.c
- ore.validation,org.drools.process.core.timer,org.drools.process.core.
- context.variable,org.drools.io.impl,org.drools.event,org.drools.base.
- mvel,org.drools.base.accumulators,org.drools.facttemplates,org.drools
- .process.builder,org.drools.rule.builder.dialect.java,org.drools.buil
- der.impl,org.drools.base,org.drools.process.core.datatype,org.drools.
- rule.builder.dialect.java.parser,org.drools.xml.rules,org.drools.xml.
- processes,org.drools.process.core,org.drools.factmodel,org.drools.pro
- cess.core.datatype.impl.type,org.drools.runtime.rule,org.drools.seman
- tics.java.parser,org.drools.common,org.drools.io,org.drools.agent,org
- .drools.io.internal,org.drools.guvnor.client.modeldriven,org.drools.r
- ule.builder,org.drools.guvnor.server.util
+ .guvnor.client,org.drools.process.core.context.swimlane,org.drools.wo
+ rkflow.core.node,org.drools.base.evaluators,org.drools.compiler,org.d
+ rools.definition,org.drools.process.core.event,org.drools.definitions
+ .impl,org.drools.reteoo.compiled,org.drools.guvnor.client.modeldriven
+ .dt,org.drools.ruleflow.core.validation,org.drools.process.core.timer
+ ,org.drools.process.core.context.variable,org.drools.io.impl,org.droo
+ ls.event,org.drools.base.mvel,org.drools.base.accumulators,org.drools
+ .facttemplates,org.drools.process.builder,org.drools.rule.builder.dia
+ lect.java,org.drools.builder.impl,org.drools.base,org.drools.process.
+ core.datatype,org.drools.rule.builder.dialect.java.parser,org.drools.
+ xml.rules,org.drools.guvnor.server,org.drools.xml.processes,org.drool
+ s.process.core,org.drools.factmodel,org.drools.process.core.datatype.
+ impl.type,org.drools.runtime.rule,org.drools.semantics.java.parser,or
+ g.drools.common,org.drools.io,org.drools.agent,org.drools.io.internal
+ ,org.drools.guvnor.client.modeldriven,org.drools.rule.builder,org.dro
+ ols.guvnor.server.util
Tool: Bnd-0.0.357
Bundle-Name: Drools :: Compiler
Created-By: 1.6.0_18 (Sun Microsystems Inc.)
@@ -80,7 +82,7 @@
Bundle-Vendor: JBoss Inc.
DynamicImport-Package: *
Bundle-Version: 5.1.0.SNAPSHOT
-Bnd-LastModified: 1264462053610
+Bnd-LastModified: 1264632495664
Bundle-Activator: org.drools.osgi.compiler.Activator
Bundle-ManifestVersion: 2
Bundle-Description: A rule production system
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilder.java 2010-01-28 13:22:14 UTC (rev 31274)
@@ -110,7 +110,7 @@
final MVELAnalysisResult initCodeAnalysis = (MVELAnalysisResult) dialect.analyzeBlock( context,
accumDescr,
accumDescr.getInitCode(),
- new Map[]{declarationsMap, context.getPackageBuilder().getGlobals()} );
+ new Map[]{declarationsMap, context.getPackageBuilder().getGlobals()} );
final MVELAnalysisResult actionCodeAnalysis = (MVELAnalysisResult) dialect.analyzeBlock( context,
accumDescr,
@@ -118,6 +118,7 @@
accumDescr.getActionCode(),
new Map[]{declarationsMap, context.getPackageBuilder().getGlobals()},
initCodeAnalysis.getMvelVariables() );
+
final MVELAnalysisResult resultCodeAnalysis = (MVELAnalysisResult) dialect.analyzeExpression( context,
accumDescr,
accumDescr.getResultCode(),
@@ -151,7 +152,7 @@
MVELCompilationUnit reverseUnit = null;
if ( accumDescr.getReverseCode() != null ) {
reverseUnit = dialect.getMVELCompilationUnit( (String) accumDescr.getReverseCode(),
- resultCodeAnalysis,
+ reverseCodeAnalysis,
previousDeclarations,
(Declaration[]) source.getOuterDeclarations().values().toArray( new Declaration[source.getOuterDeclarations().size()] ),
initCodeAnalysis.getMvelVariables(),
@@ -170,7 +171,10 @@
shadow.retainAll( reverseCodeAnalysis.getNotBoundedIdentifiers() );
shadow.addAll( reverseCodeAnalysis.getBoundIdentifiers()[0] );
- reverseUnit.setShadowIdentifiers( (String[]) shadow.toArray( new String[shadow.size()] ) );
+ String[] shadowVars = (String[]) shadow.toArray( new String[shadow.size()] );
+
+ actionUnit.setShadowIdentifiers( shadowVars );
+ reverseUnit.setShadowIdentifiers( shadowVars );
}
accumulator = new MVELAccumulator( initUnit,
@@ -193,7 +197,6 @@
return accumulate;
} catch ( Exception e ) {
- e.printStackTrace();
context.getErrors().add( new DescrBuildError( context.getParentDescr(),
descr,
e,
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java 2010-01-28 13:22:14 UTC (rev 31274)
@@ -57,7 +57,7 @@
final Accumulate acc = (Accumulate) builder.build( context,
accDescr );
- ((MVELCompileable) acc.getAccumulator()).compile( Thread.currentThread().getContextClassLoader() );
+ ((MVELCompileable) acc.getAccumulator()).compile( pkgBuilder.getRootClassLoader() );
final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
final WorkingMemory wm = ruleBase.newStatefulSession();
Modified: labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-core/META-INF/MANIFEST.MF 2010-01-28 13:22:14 UTC (rev 31274)
@@ -17,7 +17,7 @@
datatype,org.mvel2,org.drools.process.core,org.drools.concurrent,org.
drools.event,org.drools.process.instance.event,org.drools.command,org
.drools.process.instance.timer";version="5.1.0.SNAPSHOT",org.drools.c
- ommand.assertion;uses:="org.mvel2,org.drools.util,org.drools.command,
+ ommand.assertion;uses:="org.mvel2,org.drools.command,org.drools.util,
org.drools.command.impl";version="5.1.0.SNAPSHOT",org.drools.workflow
.instance.context;uses:="org.drools.process.instance,org.drools.workf
low.instance,org.drools.process.instance.impl,org.drools.process.inst
@@ -65,13 +65,13 @@
5.1.0.SNAPSHOT",org.drools.audit;uses:="org.drools.event,org.drools.a
udit.event,org.drools,com.thoughtworks.xstream,org.drools.impl,org.dr
ools.workflow.instance.node,org.drools.workflow.core.node,org.drools.
- common,org.drools.rule,org.drools.workflow.instance,org.drools.comman
+ common,org.drools.workflow.instance,org.drools.rule,org.drools.comman
d,org.drools.spi,org.drools.command.impl";version="5.1.0.SNAPSHOT",or
g.drools.osgi.core;uses:="org.drools.io.impl,org.drools.impl,org.droo
ls,org.osgi.framework";version="5.1.0.SNAPSHOT",org.drools.impl;uses:
="org.drools,org.drools.definitions.rule.impl,org.drools.event.knowle
gebase.impl,org.drools.event,org.drools.rule,org.drools.definitions.i
- mpl,org.drools.common,org.drools.command,org.drools.agent,org.drools.
+ mpl,org.drools.common,org.drools.agent,org.drools.command,org.drools.
command.impl,org.drools.event.rule.impl,org.drools.spi,org.drools.eve
nt.process.impl,org.drools.runtime.impl,org.drools.runtime.rule.impl,
org.drools.process.instance.event,org.drools.process.instance,org.dro
@@ -97,7 +97,7 @@
.process.core";version="5.1.0.SNAPSHOT",org.drools.ruleflow.core.fact
ory;uses:="org.drools.ruleflow.core,org.drools.workflow.core.node,org
.drools.workflow.core,org.drools.workflow.core.impl,org.drools.proces
- s.core.context.variable,org.drools.process.core.context.exception,org
+ s.core.context.exception,org.drools.process.core.context.variable,org
.drools.process.core.datatype,org.drools.process.core,org.drools.proc
ess.core.event,org.drools.process.core.timer,org.drools.process.core.
impl";version="5.1.0.SNAPSHOT",org.drools.event.rule.impl;uses:="org.
@@ -116,7 +116,7 @@
.1.0.SNAPSHOT",org.drools.process.instance.event;uses:="org.drools.co
mmon,org.drools.process.instance,org.drools.marshalling.impl,org.droo
ls";version="5.1.0.SNAPSHOT",org.drools.process.instance;uses:="org.d
- rools.process.core.context.variable,org.drools.common,org.drools.proc
+ rools.common,org.drools.process.core.context.variable,org.drools.proc
ess.instance.context.variable,org.drools,org.drools.process.core,org.
drools.ruleflow.core,org.drools.ruleflow.instance";version="5.1.0.SNA
PSHOT",org.drools.command.builder;uses:="org.drools.command,org.drool
@@ -124,15 +124,15 @@
drools.command.runtime;uses:="org.drools.command,org.drools.command.i
mpl,org.drools.impl,org.drools.runtime.impl,org.drools";version="5.1.
0.SNAPSHOT",org.drools.process.instance.context.variable;uses:="org.d
- rools.common,org.drools.process.core.context.variable,org.drools.proc
+ rools.process.core.context.variable,org.drools.common,org.drools.proc
ess.instance,org.drools.event,org.drools,org.drools.process.instance.
context,org.drools.process.core";version="5.1.0.SNAPSHOT",org.drools.
- ruleflow.core.validation;uses:="org.drools.process.core.timer,org.dro
- ols.process.core.context.variable,org.drools.ruleflow.core,org.drools
+ ruleflow.core.validation;uses:="org.drools.process.core.context.varia
+ ble,org.drools.process.core.timer,org.drools.ruleflow.core,org.drools
.workflow.core.node,org.drools,org.drools.process.core.validation.imp
l,org.drools.workflow.core,org.drools.workflow.core.impl,org.drools.p
rocess.core.validation,org.drools.process.core.datatype,org.mvel2,org
- .mvel2.compiler,org.drools.time,org.drools.process.core";version="5.1
+ .mvel2.compiler,org.drools.process.core,org.drools.time";version="5.1
.0.SNAPSHOT",org.drools.process.instance.context.exception;uses:="org
.drools.common,org.drools.process.core.context.exception,org.drools.p
rocess.instance,org.drools.base,org.drools.workflow.instance,org.droo
@@ -167,8 +167,8 @@
drools.event.process.impl;uses:="org.drools.event,org.drools,org.droo
ls.common";version="5.1.0.SNAPSHOT",org.drools.process.instance.impl;
uses:="org.drools.process.instance,org.drools.process.core,org.drools
- .process.core.context.exception,org.drools.process.core.context.varia
- ble,org.drools.process.instance.context.swimlane,org.drools.process.c
+ .process.core.context.variable,org.drools.process.core.context.except
+ ion,org.drools.process.instance.context.swimlane,org.drools.process.c
ore.context.swimlane,org.drools.process.instance.impl.factory,org.dro
ols.process.instance.context.variable,org.drools.process.instance.con
text.exception,org.drools,org.drools.common";version="5.1.0.SNAPSHOT"
@@ -189,7 +189,7 @@
ols.util,org.drools.base.evaluators,org.drools.time,org.drools.base.e
xtractors,org.mvel2.asm,org.drools.rule,org.drools.impl,org.drools.ba
se.field,org.drools.type,org.mvel2.integration,org.drools.base.mvel,o
- rg.mvel2.ast,org.mvel2.compiler,org.drools.facttemplates";version="5.
+ rg.mvel2.compiler,org.mvel2.ast,org.drools.facttemplates";version="5.
1.0.SNAPSHOT",org.drools.process.core.datatype;version="5.1.0.SNAPSHO
T",org.drools.workflow.instance;uses:="org.drools.process.instance,or
g.drools.impl,org.drools.workflow.instance.impl,org.drools,org.drools
@@ -209,7 +209,7 @@
.workflow.core.node,org.drools.workflow.instance,org.drools.process.i
nstance";version="5.1.0.SNAPSHOT",org.drools.marshalling.impl;uses:="
org.drools.process.instance.context.swimlane,org.drools.workflow.inst
- ance.impl,org.drools.workflow.instance.node,org.drools.common,org.dro
+ ance.node,org.drools.workflow.instance.impl,org.drools.common,org.dro
ols.process.instance,org.drools.process.instance.context.variable,org
.drools.workflow.instance,org.drools.process.core,org.drools.util,org
.drools.impl,org.drools,org.drools.spi,org.drools.concurrent,org.droo
@@ -217,8 +217,8 @@
.base,org.drools.rule,org.drools.process.instance.event,org.drools.ru
leflow.instance";version="5.1.0.SNAPSHOT",org.drools.common;uses:="or
g.drools.spi,org.drools.rule,org.drools.impl,org.drools.event,org.dro
- ols,org.drools.util,org.drools.base,org.drools.process.core,org.drool
- s.management,org.drools.process.instance.event,org.drools.process.ins
+ ols,org.drools.util,org.drools.base,org.drools.management,org.drools.
+ process.core,org.drools.process.instance.event,org.drools.process.ins
tance,org.drools.process.core.event,org.drools.runtime.impl,org.drool
s.type,org.drools.process.instance.timer,org.drools.time,org.drools.r
uleflow.core,org.drools.workflow.core.node,org.drools.concurrent,org.
@@ -243,8 +243,8 @@
,org.drools.impl,org.drools,org.drools.spi,org.drools.runtime.impl,or
g.drools.common,org.mvel2";version="5.1.0.SNAPSHOT",org.drools.io.int
ernal;version="5.1.0.SNAPSHOT",org.drools.runtime.help.impl;uses:="or
- g.drools.command.runtime.process,com.thoughtworks.xstream.io,com.thou
- ghtworks.xstream.converters,com.thoughtworks.xstream.mapper,org.drool
+ g.drools.command.runtime.process,com.thoughtworks.xstream.converters,
+ com.thoughtworks.xstream.io,com.thoughtworks.xstream.mapper,org.drool
s.command,com.thoughtworks.xstream.converters.collections,org.drools.
common,org.drools.runtime.impl,org.drools.command.runtime.rule,org.dr
ools.command.runtime,org.drools.runtime.rule.impl,org.drools.base,org
@@ -308,7 +308,7 @@
Bundle-Vendor: JBoss Inc.
DynamicImport-Package: *
Bundle-Version: 5.1.0.SNAPSHOT
-Bnd-LastModified: 1264462046584
+Bnd-LastModified: 1264632445217
Bundle-Activator: org.drools.osgi.core.Activator
Bundle-ManifestVersion: 2
Bundle-Description: A rule production system
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 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java 2010-01-28 13:22:14 UTC (rev 31274)
@@ -7,6 +7,7 @@
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
import org.drools.WorkingMemory;
import org.drools.common.InternalFactHandle;
@@ -150,7 +151,7 @@
final KnowledgeHelper knowledgeHelper,
final Object object,
final WorkingMemory workingMemory,
- final Map variables) {
+ final Map<String, Object> variables) {
if (tuple != null) {
this.tupleObjects = ((LeftTuple) tuple).toFactHandles();
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAccumulator.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAccumulator.java 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAccumulator.java 2010-01-28 13:22:14 UTC (rev 31274)
@@ -24,6 +24,7 @@
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
+import java.util.Map.Entry;
import org.drools.common.InternalFactHandle;
import org.drools.rule.Declaration;
@@ -33,6 +34,7 @@
import org.drools.spi.Accumulator;
import org.drools.spi.Tuple;
import org.mvel2.MVEL;
+import org.mvel2.compiler.CompiledExpression;
/**
* An MVEL accumulator implementation
@@ -52,7 +54,11 @@
MVELCompilationUnit reverseUnit;
MVELCompilationUnit resultUnit;
- private DroolsMVELFactory prototype;
+ private DroolsMVELFactory initPrototype;
+ private DroolsMVELFactory actionPrototype;
+ private DroolsMVELFactory resultPrototype;
+ private DroolsMVELFactory reversePrototype;
+
private Serializable init;
private Serializable action;
private Serializable reverse;
@@ -91,12 +97,15 @@
init = initUnit.getCompiledExpression( classLoader );
action = actionUnit.getCompiledExpression( classLoader );
result = resultUnit.getCompiledExpression( classLoader );
+
+ initPrototype = initUnit.getFactory();
+ actionPrototype = actionUnit.getFactory();
if ( reverseUnit != null ) {
reverse = reverseUnit.getCompiledExpression( classLoader );
- prototype = reverseUnit.getFactory();
- } else {
- prototype = resultUnit.getFactory();
+ reversePrototype = reverseUnit.getFactory();
}
+
+ resultPrototype = resultUnit.getFactory();
}
/* (non-Javadoc)
@@ -119,7 +128,7 @@
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
- DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ DroolsMVELFactory factory = (DroolsMVELFactory) ((MVELFactoryContext)workingMemoryContext).initPrototype;
Package pkg = workingMemory.getRuleBase().getPackage( "MAIN" );
if ( pkg != null ) {
MVELDialectRuntimeData data = (MVELDialectRuntimeData) pkg.getDialectRuntimeRegistry().getDialectData( "mvel" );
@@ -146,7 +155,7 @@
Declaration[] declarations,
Declaration[] innerDeclarations,
WorkingMemory workingMemory) throws Exception {
- DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ DroolsMVELFactory factory = (DroolsMVELFactory) ((MVELFactoryContext)workingMemoryContext).actionPrototype;
factory.setContext( leftTuple,
null,
handle.getObject(),
@@ -187,7 +196,7 @@
Declaration[] declarations,
Declaration[] innerDeclarations,
WorkingMemory workingMemory) throws Exception {
- DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ DroolsMVELFactory factory = (DroolsMVELFactory) ((MVELFactoryContext)workingMemoryContext).reversePrototype;
factory.setContext( leftTuple,
null,
handle.getObject(),
@@ -215,12 +224,13 @@
Tuple leftTuple,
Declaration[] declarations,
WorkingMemory workingMemory) throws Exception {
- DroolsMVELFactory factory = (DroolsMVELFactory) workingMemoryContext;
+ DroolsMVELFactory factory = (DroolsMVELFactory) ((MVELFactoryContext)workingMemoryContext).resultPrototype;
factory.setContext( leftTuple,
null,
null,
workingMemory,
((MVELAccumulatorContext) context).variables );
+ Map<String, Object> vars = ((MVELAccumulatorContext) context).variables;
final Object result = MVEL.executeExpression( this.result,
null,
@@ -233,8 +243,34 @@
}
public Object createWorkingMemoryContext() {
- return this.prototype.clone();
+ return new MVELFactoryContext( this );
}
+
+ private static class MVELFactoryContext {
+ public DroolsMVELFactory initPrototype;
+ public DroolsMVELFactory actionPrototype;
+ public DroolsMVELFactory resultPrototype;
+ public DroolsMVELFactory reversePrototype;
+
+ public MVELFactoryContext(MVELAccumulator acc) {
+ initPrototype = (DroolsMVELFactory) acc.initPrototype.clone();
+ actionPrototype = (DroolsMVELFactory) acc.actionPrototype.clone();
+ resultPrototype = (DroolsMVELFactory)acc.resultPrototype.clone();
+ if ( acc.reversePrototype != null ) {
+ reversePrototype =(DroolsMVELFactory) acc.reversePrototype.clone();
+ }
+
+ for ( Entry<String, Class> var : ((CompiledExpression)acc.init).getParserContext().getVariables().entrySet() ) {
+ actionPrototype.addResolver( var.getKey(), new LocalVariableResolver(actionPrototype, var.getKey()) );
+ resultPrototype.addResolver( var.getKey(), new LocalVariableResolver(resultPrototype, var.getKey()) );
+ if ( acc.reversePrototype != null ) {
+ reversePrototype.addResolver( var.getKey(), new LocalVariableResolver(reversePrototype, var.getKey()) );
+ }
+ }
+ }
+
+
+ }
private static class MVELAccumulatorContext
implements
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java 2010-01-28 02:26:17 UTC (rev 31273)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/SchedulerTest.java 2010-01-28 13:22:14 UTC (rev 31274)
@@ -177,8 +177,8 @@
assertEquals( 0,
data.size() );
- // sleep for 0.5 seconds
- Thread.sleep( 750 );
+ // sleep for 1 seconds
+ Thread.sleep( 1000 );
// now check for update
assertEquals( 4,
More information about the jboss-svn-commits
mailing list