[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