-
Bug
-
Resolution: Done
-
Major
-
7.13.3.GA
Issue Description:
In non-exec-model,
Where Fact.value1 and value2 are both BigDecimal,
when $fact : Fact( $value1 : value1, $value2 : value2 ) then $value1 = 5; $total = $value1 + $value2;
this rule fails with
Exception executing consequence for rule "Rule 1" in com.example.reproducer: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.math.BigDecimal (java.lang.Integer and java.math.BigDecimal are in module java.base of loader 'bootstrap') at org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) at org.drools.core.common.DefaultAgenda.handleException(DefaultAgenda.java:1056) at org.drools.core.phreak.RuleExecutor.innerFireActivation(RuleExecutor.java:462) at org.drools.core.phreak.RuleExecutor.fireActivation(RuleExecutor.java:402) at org.drools.core.phreak.RuleExecutor.fire(RuleExecutor.java:158) at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:110) at org.drools.core.concurrent.AbstractRuleEvaluator.internalEvaluateAndFire(AbstractRuleEvaluator.java:33) at org.drools.core.concurrent.SequentialRuleEvaluator.evaluateAndFire(SequentialRuleEvaluator.java:43) at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:869) at org.drools.core.common.DefaultAgenda.internalFireAllRules(DefaultAgenda.java:816) at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:808) at org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1341) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1332) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1316) at com.example.reproducer.DroolsTest.main(DroolsTest.java:25) Caused by: java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.math.BigDecimal (java.lang.Integer and java.math.BigDecimal are in module java.base of loader 'bootstrap') <---------- (*2-4) at org.mvel2.math.MathProcessor.doOperations(MathProcessor.java:65) at org.mvel2.ast.BinaryOperation.getReducedValueAccelerated(BinaryOperation.java:146) at org.mvel2.compiler.ExecutableAccessor.getValue(ExecutableAccessor.java:38) at org.mvel2.ast.AssignmentNode.getReducedValueAccelerated(AssignmentNode.java:116) at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85) at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:115) at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:111) at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:105) at org.mvel2.MVEL.executeExpression(MVEL.java:946) at org.kie.soup.project.datamodel.commons.util.RawMVELEvaluator.executeExpression(RawMVELEvaluator.java:103) at org.drools.mvel.expr.MvelEvaluator.internalEvaluate(MvelEvaluator.java:131) at org.drools.mvel.expr.MvelEvaluator.evaluate(MvelEvaluator.java:115) at org.drools.mvel.expr.MVELConsequence.evaluate(MVELConsequence.java:94) at org.drools.core.phreak.RuleExecutor.innerFireActivation(RuleExecutor.java:455) ... 12 more
$value1 = 5; makes $value1 as Integer type.
exec-model has no issue because `5` is coerced to a BigDecimal.
Acceptance Criteria:
- Run without an Exception.
- Likely meet with the exec-model behaviour
- incorporates
-
DROOLS-7540 Coercion from Interger literal to BigDecimal bind variable
- Resolved