]
Geoffrey De Smet commented on DROOLS-1071:
------------------------------------------
Can you specify which DRL line exactly caused it?
We want to improve the error message in a future version, so it mentions that exact DRL
line.
NPE's stacktrace for an MvelConstraint.evaluate() should give a
line number from the source DRL file
----------------------------------------------------------------------------------------------------
Key: DROOLS-1071
URL:
https://issues.jboss.org/browse/DROOLS-1071
Project: Drools
Issue Type: Enhancement
Components: core engine
Affects Versions: 6.3.0.Final, 6.4.0.Beta2
Environment: JDK: Java 7
OS: Mac OSX 10.10.2
IDE: Spring Tool Suite 3.6.4
Reporter: Ido Flax
Assignee: Mario Fusco
Attachments: AbstractPlannerDto.java, activity-scoring.drl,
EquipmentEquipmentTypesPlannerDto.java, LabourDayOffPlannerDto.java,
OnHandForProduct.java, ProductInventoryTransactionPlannerDto.java, ProductPlannerDto.java,
SkillsAndRatesPlannerDto.java, TaskPlannerDto.java, TaskResourceAllocationPlannerDto.java,
TaskResourcePlannerDto.java, UserPlannerDto.java
The attached code generates an NPE when running optaplanner/drools, but that stacktrace
doesn't tell me which DRL line is responsible for it.
Stacktrace:
{code:java}
Caused by: java.lang.NullPointerException: null
at ConditionEvaluatoreaa3997683d949e28ce6eaf6feca0ced.evaluate(Unknown Source)
<================ No source DRL line
at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:258)
at
org.drools.core.rule.constraint.MvelConstraint.isAllowedCachedLeft(MvelConstraint.java:226)
at
org.drools.core.common.DoubleBetaConstraints.isAllowedCachedLeft(DoubleBetaConstraints.java:111)
at org.drools.core.phreak.PhreakJoinNode.doLeftInserts(PhreakJoinNode.java:112)
at org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:75)
at
org.drools.core.phreak.RuleNetworkEvaluator.switchOnDoBetaNode(RuleNetworkEvaluator.java:547)
at
org.drools.core.phreak.RuleNetworkEvaluator.evalBetaNode(RuleNetworkEvaluator.java:533)
at org.drools.core.phreak.RuleNetworkEvaluator.evalNode(RuleNetworkEvaluator.java:369)
at org.drools.core.phreak.RuleNetworkEvaluator.innerEval(RuleNetworkEvaluator.java:329)
at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:163)
at
org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:120)
at org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:194)
at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:73)
at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1003)
at org.drools.core.common.DefaultAgenda.fireLoop(DefaultAgenda.java:1346)
at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1284)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.internalFireAllRules(StatefulKnowledgeSessionImpl.java:1303)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1293)
at
org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1274)
at
org.optaplanner.core.impl.score.director.drools.DroolsScoreDirector.calculateScore(DroolsScoreDirector.java:84)
at
org.optaplanner.core.impl.solver.recaller.BestSolutionRecaller.solvingStarted(BestSolutionRecaller.java:70)
at
org.optaplanner.core.impl.solver.DefaultSolver.solvingStarted(DefaultSolver.java:197)
at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:175)
{code}