[jboss-jira] [JBoss JIRA] (JBRULES-3634) A null pointer in DRL non-null safe navigation should clearly mention the DRL line for which it occurs

Geoffrey De Smet (JIRA) jira-events at lists.jboss.org
Fri Sep 21 09:36:35 EDT 2012


Geoffrey De Smet created JBRULES-3634:
-----------------------------------------

             Summary: A null pointer in DRL non-null safe navigation should clearly mention the DRL line for which it occurs
                 Key: JBRULES-3634
                 URL: https://issues.jboss.org/browse/JBRULES-3634
             Project: Drools
          Issue Type: Enhancement
      Security Level: Public (Everyone can see)
          Components: drools-compiler (expert)
    Affects Versions: 5.4.0.Final
            Reporter: Geoffrey De Smet
            Assignee: Mario Fusco


In a very big DRL file, there are many references like this:

{code}
when
   ...
   Course($c : timeslot.calendarDate)
   ...
{code}

Now, one of them did something wrong, which one?

{code}
Exception in thread "main" java.lang.RuntimeException: cannot invoke getter: getTimeSlot [declr.class: org.Course; act.class: org.Course] (see trace)
at org.mvel2.optimizers.impl.refl.nodes.GetterAccessor.getValue(GetterAccessor.java:74)
at org.mvel2.ast.ASTNode.getReducedValueAccelerated(ASTNode.java:108)
at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)
at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:123)
at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:119)
at org.mvel2.MVEL.executeExpression(MVEL.java:954)
at org.drools.base.extractors.MVELClassFieldReader.getValue(MVELClassFieldReader.java:100)
at org.drools.base.extractors.BaseObjectClassFieldReader.getHashCode(BaseObjectClassFieldReader.java:204)
at org.drools.rule.Declaration.getHashCode(Declaration.java:287)
at org.drools.core.util.AbstractHashTable$DoubleCompositeIndex.hashCodeOf(AbstractHashTable.java:627)
at org.drools.core.util.index.LeftTupleIndexHashTable.removeAdd(LeftTupleIndexHashTable.java:332)
at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:310)
at org.drools.reteoo.LeftTupleSource.doModifyLeftTuple(LeftTupleSource.java:304)
at org.drools.reteoo.LeftTupleSource.modifyLeftTuple(LeftTupleSource.java:278)
at org.drools.reteoo.JoinNode.modifyLeftTuple(JoinNode.java:437)
at org.drools.reteoo.CompositeLeftTupleSinkAdapter.doPropagateModifyObject(CompositeLeftTupleSinkAdapter.java:260)
at org.drools.reteoo.CompositeLeftTupleSinkAdapter.propagateModifyObject(CompositeLeftTupleSinkAdapter.java:275)
at org.drools.reteoo.LeftInputAdapterNode.modifyObject(LeftInputAdapterNode.java:170)
at org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateModifyObject(CompositeObjectSinkAdapter.java:507)
at org.drools.reteoo.CompositeObjectSinkAdapter.propagateModifyObject(CompositeObjectSinkAdapter.java:432)
at org.drools.reteoo.ObjectTypeNode.modifyObject(ObjectTypeNode.java:314)
at org.drools.reteoo.EntryPointNode.modifyObject(EntryPointNode.java:265)
at org.drools.common.NamedEntryPoint.update(NamedEntryPoint.java:483)
at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:976)
at org.drools.common.AbstractWorkingMemory.update(AbstractWorkingMemory.java:949)
at org.drools.planner.core.score.director.drools.DroolsScoreDirector.afterVariableChanged(DroolsScoreDirector.java:127)
at org.UninitializerHack.changeWorkingSolution(UninitializerHack.java:16)
at org.drools.planner.core.phase.custom.DefaultCustomSolverPhase.solve(DefaultCustomSolverPhase.java:50)
at org.drools.planner.core.solver.DefaultSolver.runSolverPhases(DefaultSolver.java:190)
at org.drools.planner.core.solver.DefaultSolver.solve(DefaultSolver.java:155)
at org.drools.planner.benchmark.core.ProblemBenchmark.warmUp(ProblemBenchmark.java:161)
at org.drools.planner.benchmark.core.DefaultPlannerBenchmark.warmUp(DefaultPlannerBenchmark.java:225)
at org.drools.planner.benchmark.core.DefaultPlannerBenchmark.benchmark(DefaultPlannerBenchmark.java:172)
at org.BenchmarkerMain.main(BenchmarkerMain.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.RuntimeException: unable to invoke method: org.TimeSlot.getCalendarDate: target of method is null
at org.mvel2.optimizers.impl.refl.nodes.GetterAccessor.getValue(GetterAccessor.java:66)
at org.mvel2.optimizers.impl.refl.nodes.GetterAccessor.getValue(GetterAccessor.java:40)
... 38 more
Caused by: java.lang.NullPointerException
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mvel2.optimizers.impl.refl.nodes.GetterAccessor.getValue(GetterAccessor.java:43)
... 39 more
{code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jboss-jira mailing list