[jboss-svn-commits] JBL Code SVN: r23299 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 3 18:41:55 EDT 2008


Author: tirelli
Date: 2008-10-03 18:41:55 -0400 (Fri, 03 Oct 2008)
New Revision: 23299

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.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/DroolsMVELPreviousDeclarationVariable.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCompilationUnit.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/rule/GroupElement.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Consequence.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Constraint.java
Log:
Fixing bug on rules with multiple logical branches and dialect mvel

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -678,8 +678,6 @@
         sess.insert(application);
 
         sess.fireAllRules();
-
-
     }
 
     public void testGeneratedBeans2() throws Exception {

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -33,6 +33,7 @@
 import org.drools.reteoo.MockLeftTupleSink;
 import org.drools.reteoo.ReteooRuleBase;
 import org.drools.rule.Declaration;
+import org.drools.rule.GroupElement;
 import org.drools.rule.Package;
 import org.drools.rule.Pattern;
 import org.drools.rule.Rule;
@@ -75,16 +76,14 @@
         final ObjectType cheeseObjeectType = new ClassObjectType( Cheese.class );
 
         final Pattern pattern = new Pattern( 0,
-                                             cheeseObjeectType );
+                                             cheeseObjeectType,
+                                             "cheese" );
 
-        final PatternExtractor extractor = new PatternExtractor( cheeseObjeectType );
-
-        final Declaration declaration = new Declaration( "cheese",
-                                                         extractor,
-                                                         pattern );
+        final GroupElement subrule = new GroupElement( GroupElement.AND );
+        subrule.addChild( pattern );
         final Map map = new HashMap();
         map.put( "cheese",
-                 declaration );
+                 pattern.getDeclaration() );
         declarationResolver.setDeclarations( map );
         context.setDeclarationResolver( declarationResolver );
 
@@ -112,7 +111,7 @@
                                                                             null,
                                                                             null ),
                                                 context.getRule(),
-                                                null );
+                                                subrule );
         final DefaultKnowledgeHelper kbHelper = new DefaultKnowledgeHelper( wm );
         kbHelper.setActivation( item );
         ((MVELConsequence) context.getRule().getConsequence()).compile( Thread.currentThread().getContextClassLoader() );

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	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -5,11 +5,7 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.lang.reflect.Method;
-import java.util.Calendar;
-import java.util.Date;
 import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 
 import org.drools.WorkingMemory;
@@ -17,7 +13,6 @@
 import org.drools.rule.Declaration;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.spi.Tuple;
-import org.mvel.DataConversion;
 import org.mvel.CompileException;
 import org.mvel.integration.VariableResolver;
 import org.mvel.integration.impl.BaseVariableResolverFactory;

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	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELPreviousDeclarationVariable.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -45,7 +45,11 @@
     }
 
     public Object getValue() {
-        return this.declaration.getValue( (InternalWorkingMemory) this.factory.getWorkingMemory(), this.factory.getValue( this.declaration ) );
+        Declaration decl = this.declaration;
+        if( this.factory.getKnowledgeHelper() != null ) {
+            decl = this.factory.getKnowledgeHelper().getDeclaration( this.declaration.getIdentifier() );
+        }
+        return decl.getValue( (InternalWorkingMemory) this.factory.getWorkingMemory(), this.factory.getValue( decl ) );
     }    
 
     public void setValue(final Object value) {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCompilationUnit.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCompilationUnit.java	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELCompilationUnit.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -11,8 +11,6 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -21,7 +19,6 @@
 import org.drools.rule.Declaration;
 import org.drools.spi.KnowledgeHelper;
 import org.mvel.DataConversion;
-import org.mvel.Macro;
 import org.mvel.ParserContext;
 import org.mvel.compiler.AbstractParser;
 import org.mvel.compiler.ExpressionCompiler;

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	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELConsequence.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -1,5 +1,11 @@
 package org.drools.base.mvel;
 
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.io.Serializable;
+
 import org.drools.WorkingMemory;
 import org.drools.common.InternalRuleBase;
 import org.drools.rule.MVELDialectRuntimeData;
@@ -10,15 +16,6 @@
 import org.mvel.compiler.CompiledExpression;
 import org.mvel.debug.DebugTools;
 
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
 public class MVELConsequence
     implements
     Consequence,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElement.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElement.java	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/GroupElement.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -16,11 +16,10 @@
  * limitations under the License.
  */
 
-import java.io.Serializable;
+import java.io.Externalizable;
+import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import java.io.IOException;
-import java.io.Externalizable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Consequence.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Consequence.java	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Consequence.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -40,4 +40,5 @@
      */
     void evaluate(KnowledgeHelper knowledgeHelper,
                   WorkingMemory workingMemory) throws Exception;
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Constraint.java	2008-10-03 17:08:07 UTC (rev 23298)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Constraint.java	2008-10-03 22:41:55 UTC (rev 23299)
@@ -1,10 +1,9 @@
 package org.drools.spi;
 
-import java.io.Serializable;
 import java.io.Externalizable;
-import java.io.ObjectOutput;
 import java.io.IOException;
 import java.io.ObjectInput;
+import java.io.ObjectOutput;
 
 import org.drools.rule.Declaration;
 
@@ -39,8 +38,12 @@
     Declaration[] getRequiredDeclarations();
 
     /**
-     * A constraint may be required to replace an old
-     * declaration object by a new updated one
+     * When a rule contains multiple logical branches, i.e., makes 
+     * use of 'OR' CE, it is required to clone patterns and declarations
+     * for each logical branch. Since this is done at ReteOO build
+     * type, when constraints were already created, eventually
+     * some constraints need to update their references to the
+     * declarations.
      *
      * @param oldDecl
      * @param newDecl




More information about the jboss-svn-commits mailing list