[jboss-jira] [JBoss JIRA] (DROOLS-1071) NPE's stacktrace for an MvelConstraint.evaluate() should give a line number from the source DRL file
Geoffrey De Smet (JIRA)
issues at jboss.org
Thu Aug 3 14:16:00 EDT 2017
[ https://issues.jboss.org/browse/DROOLS-1071?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13168964#comment-13168964 ]
Geoffrey De Smet edited comment on DROOLS-1071 at 8/3/17 2:15 PM:
------------------------------------------------------------------
To have a line number (of the DRL source file) we'd need to do a similar trick as how JSP's stacktraces are translated back to JSP source file line numbers (thanks to Tomaz for info). This technique is known as "source maps".
{quote}
The JSP compiler jastow (fork of tomcat's jasper) does this:
https://github.com/undertow-io/jastow
what you are looking for is "smap" generation and applying to compiler:
https://github.com/undertow-io/jastow/blob/master/src/main/java/org/apache/jasper/compiler/JDTCompiler.java#L464
https://github.com/undertow-io/jastow/blob/master/src/main/java/org/apache/jasper/compiler/SmapUtil.java
https://github.com/undertow-io/jastow/blob/master/src/main/java/org/apache/jasper/compiler/SmapGenerator.java
{quote}
was (Author: ge0ffrey):
To have a line number (of the DRL source file) we'd need to do a similar trick as how JSP's stacktraces are translated back to JSP source file line numbers (thanks to Tomaz for info).
{quote}
The JSP compiler jastow (fork of tomcat's jasper) does this:
https://github.com/undertow-io/jastow
what you are looking for is "smap" generation and applying to compiler:
https://github.com/undertow-io/jastow/blob/master/src/main/java/org/apache/jasper/compiler/JDTCompiler.java#L464
https://github.com/undertow-io/jastow/blob/master/src/main/java/org/apache/jasper/compiler/SmapUtil.java
https://github.com/undertow-io/jastow/blob/master/src/main/java/org/apache/jasper/compiler/SmapGenerator.java
{quote}
> 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
> Fix For: 6.5.0.Final, 7.0.0.Beta2
>
> Attachments: AbstractPlannerDto.java, EquipmentEquipmentTypesPlannerDto.java, LabourDayOffPlannerDto.java, OnHandForProduct.java, ProductInventoryTransactionPlannerDto.java, ProductPlannerDto.java, SkillsAndRatesPlannerDto.java, TaskPlannerDto.java, TaskResourceAllocationPlannerDto.java, TaskResourcePlannerDto.java, UserPlannerDto.java, activity-scoring.drl
>
>
> 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}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the jboss-jira
mailing list