[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