Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-1368

Property reactive KieSession.update(fh, h, propName) fails in polymorfic case with "Unknown property"

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Critical
    • 7.0.0.Beta4
    • None
    • core engine
    • None
    • Workaround Exists
    • Hide

      Add public abstract void setPeriod(Period period); to Exam abstract superclass.

      Show
      Add public abstract void setPeriod(Period period); to Exam abstract superclass.
    • NEW
    • NEW

    Description

      I call

      kieSession.update(factHandle, entity, variableName);
      

      with entity being an instance of LeadingExam, which extends Exam, which extends AbstractPersistable.
      AbstractPersistable has setId(...).
      Exam has setTopic(...), setRoom(...).
      LeadingExam has setPeriod(...).

      I get this:

      java.lang.RuntimeException: Unknown property: period
      
      	at org.drools.core.reteoo.PropertySpecificUtil.setPropertyOnMask(PropertySpecificUtil.java:102)
      	at org.drools.core.reteoo.PropertySpecificUtil.calculatePatternMask(PropertySpecificUtil.java:94)
      	at org.drools.core.reteoo.PropertySpecificUtil.calculatePositiveMask(PropertySpecificUtil.java:65)
      	at org.drools.core.common.NamedEntryPoint.update(NamedEntryPoint.java:313)
      	at org.drools.core.impl.StatefulKnowledgeSessionImpl.update(StatefulKnowledgeSessionImpl.java:1605)
      	at org.optaplanner.core.impl.score.director.drools.DroolsScoreDirector.update(DroolsScoreDirector.java:169)
      	at org.optaplanner.core.impl.score.director.drools.DroolsScoreDirector.afterVariableChanged(DroolsScoreDirector.java:156)
      	at org.optaplanner.core.impl.heuristic.selector.move.generic.ChangeMove.doMoveOnGenuineVariables(ChangeMove.java:75)
      	at org.optaplanner.core.impl.heuristic.move.AbstractMove.doMove(AbstractMove.java:34)
      	at org.optaplanner.core.impl.heuristic.move.CompositeMove.doMove(CompositeMove.java:110)
      	at org.optaplanner.core.impl.constructionheuristic.decider.ConstructionHeuristicDecider.doMove(ConstructionHeuristicDecider.java:125)
      	at org.optaplanner.core.impl.constructionheuristic.decider.ConstructionHeuristicDecider.decideNextStep(ConstructionHeuristicDecider.java:98)
      	at org.optaplanner.core.impl.constructionheuristic.DefaultConstructionHeuristicPhase.solve(DefaultConstructionHeuristicPhase.java:74)
      	at org.optaplanner.core.impl.solver.AbstractSolver.runPhases(AbstractSolver.java:87)
      	at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:160)
      	at org.optaplanner.examples.common.app.SolverPerformanceTest.runSpeedTest(SolverPerformanceTest.java:65)
      	at org.optaplanner.examples.examination.app.ExaminationPerformanceTest.solveComp_set5FastAssert(ExaminationPerformanceTest.java:52)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:298)
      	at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call(FailOnTimeout.java:292)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.lang.Thread.run(Thread.java:745)
      

      Debugging PropertySpecificUtil shows that settableProperties include "id", "room", "topic", but not "period".

      Note that there is also FollowingExam which also extends Exam.
      FollowingExam also has setPeriod(...).

      Attachments

        Issue Links

          Activity

            People

              mfusco@redhat.com Mario Fusco
              gdesmet@redhat.com Geoffrey De Smet (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: