-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
2022 Week 35-37 (from Aug 29), 2022 Week 38-40 (from Sept 19), 2022 Week 41-43 (from Oct 10), 2022 Week 44-46 (from Oct 31)
-
NEW
-
NEW
It can be either a CCE or IllegalArgumentException depending on whether a LambdaBeanPropertyMemberAccessor or ReflectionBeanPropertyMemberAccessor is used internally.
Stack trace:
java.lang.IllegalArgumentException: object is not an instance of declaring class at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.optaplanner.core.impl.domain.common.accessor.ReflectionBeanPropertyMemberAccessor.executeGetter(ReflectionBeanPropertyMemberAccessor.java:66) at org.optaplanner.core.impl.domain.variable.descriptor.VariableDescriptor.getValue(VariableDescriptor.java:100) at org.optaplanner.core.impl.domain.variable.inverserelation.ExternalizedSingletonInverseVariableSupply.insert(ExternalizedSingletonInverseVariableSupply.java:75) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor.lambda$visitAllEntities$9(SolutionDescriptor.java:912) at org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor.visitAllEntities(SolutionDescriptor.java:926) at org.optaplanner.core.impl.domain.solution.descriptor.SolutionDescriptor.visitAllEntities(SolutionDescriptor.java:912) at org.optaplanner.core.impl.domain.variable.inverserelation.ExternalizedSingletonInverseVariableSupply.resetWorkingSolution(ExternalizedSingletonInverseVariableSupply.java:36) at org.optaplanner.core.impl.domain.variable.listener.support.VariableListenerSupport.createSupply(VariableListenerSupport.java:84) at java.base/java.util.HashMap.computeIfAbsent(HashMap.java:1134) at org.optaplanner.core.impl.domain.variable.listener.support.VariableListenerSupport.demand(VariableListenerSupport.java:75) at org.optaplanner.core.impl.heuristic.selector.move.generic.ChangeMoveSelector.solvingStarted(ChangeMoveSelector.java:49) at org.optaplanner.core.impl.phase.event.PhaseLifecycleSupport.fireSolvingStarted(PhaseLifecycleSupport.java:15) at org.optaplanner.core.impl.constructionheuristic.placer.AbstractEntityPlacer.solvingStarted(AbstractEntityPlacer.java:23) at org.optaplanner.core.impl.constructionheuristic.DefaultConstructionHeuristicPhase.solvingStarted(DefaultConstructionHeuristicPhase.java:89) at org.optaplanner.core.impl.solver.AbstractSolver.solvingStarted(AbstractSolver.java:69) at org.optaplanner.core.impl.solver.DefaultSolver.solvingStarted(DefaultSolver.java:225) at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:192)
Alternatively, something like:
java.lang.ClassCastException: class org.optaplanner.core.impl.testdata.domain.chained.multivar.TestdataTaxiPlace cannot be cast to class org.optaplanner.core.impl.testdata.domain.chained.multivar.TestdataAirport (org.optaplanner.core.impl.testdata.domain.chained.multivar.TestdataTaxiPlace and org.optaplanner.core.impl.testdata.domain.chained.multivar.TestdataAirport are in unnamed module of loader 'app') at org.optaplanner.core.impl.domain.common.accessor.LambdaBeanPropertyMemberAccessor.executeGetter(LambdaBeanPropertyMemberAccessor.java:121) at org.optaplanner.core.impl.domain.variable.descriptor.VariableDescriptor.getValue(VariableDescriptor.java:100) ...
Original reproducer: https://github.com/Christopher-Chianelli/issue-reproducer/tree/multiple-planning-entities-chained
based on SO: https://stackoverflow.com/questions/73597412/inheritance-of-optapy-planning-entitiy-classes