I am getting an unexpected cast exception. The backtrace looks like Exception in thread "main" java.lang.ClassCastException: com.tastiereasier.rulez.ContextFoodItem cannot be cast to com.tastiereasier.domain.FoodItem at ConditionEvaluatorb792d1e4169f4ac98945e49e1412d793.evaluate(Unknown Source) at org.drools.core.rule.constraint.MvelConstraint.evaluate(MvelConstraint.java:216) at org.drools.core.rule.constraint.MvelConstraint.isAllowedCachedLeft(MvelConstraint.java:185) at org.drools.core.common.SingleNonIndexSkipBetaConstraints.isAllowedCachedLeft(SingleNonIndexSkipBetaConstraints.java:141) at org.drools.core.phreak.PhreakJoinNode.doLeftInserts(PhreakJoinNode.java:98) at org.drools.core.phreak.PhreakJoinNode.doNode(PhreakJoinNode.java:60) 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.innerEval(RuleNetworkEvaluator.java:334) at org.drools.core.phreak.RuleNetworkEvaluator.evalStackEntry(RuleNetworkEvaluator.java:224) at org.drools.core.phreak.RuleNetworkEvaluator.outerEval(RuleNetworkEvaluator.java:166) at org.drools.core.phreak.RuleNetworkEvaluator.evaluateNetwork(RuleNetworkEvaluator.java:116) at org.drools.core.phreak.RuleExecutor.reEvaluateNetwork(RuleExecutor.java:193) at org.drools.core.phreak.RuleExecutor.evaluateNetworkAndFire(RuleExecutor.java:68) at org.drools.core.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:928) at org.drools.core.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1193) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1202) at org.drools.core.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:1175) at com.tastiereasier.rulez.Rulez.insertAndFire(Rulez.java:168) at com.tastiereasier.rulez.Rulez.addDinerToContext(Rulez.java:310) at com.tastiereasier.rulez.Rulez.<init>(Rulez.java:101) at com.tastiereasier.rulez.Rulez.main(Rulez.java:44)
The rules that are triggering this are: rule contextDinerDislike enabled true when ContextDiner( $diner; ) DatumPreference ( datumPreferenceType == DatumPreference.Type.PREFERENCE, belief.factor < 0.0, $datum: datum ) from $diner.getDatumPreferences() then insert( new ContextFoodItem( (FoodItem) $datum, true ) ); end rule spotNewContextDinerLike enabled true when ContextDiner( $diner; ) DatumPreference ( datumPreferenceType == DatumPreference.Type.PREFERENCE, belief.factor > 0.0, $datum: datum ) from $diner.getDatumPreferences() then insert( new ContextFoodItem( (FoodItem) $datum, false ) ); end If I disable either rule, then the other proceeds fine and no cast exception happens. I can't see why the cast should ever be asked for - it doesn't make sense. If I changed the boolean parameter in the new in the insert - so both are either true or both are either false, there are no cast exceptions (there must be a clue here). If I put a debug after the insertion, the backtrace actually happens after return from the insert() method - implying it's something on the agenda? I tried using the Audit stuff to see if it gave any clues - but I've never used that before and simply got a heap exhaustion from Eclipse after 1/2 hour trying to ingest something like 200 meg of trace data - I've got a lot of data being initialised into the workspace before these rules get a chance to do anything. It's feeling remarkably like a bug to me, but I don't know how to interpret the backtrace usefully, so it's possible I've got something messed up elsewhere - although I've disabled massive amounts of rules that I can. I grabbed a snapshot last night and it didn't change anything. (I was on a snapshot from early June to fix being able to have Drools editor reference my external jars.) Does this look like a bug or user error? It's going to take some effort to try and extract a test case so I really don't want to spend the effort on that unless it looks the only way. Sage observations most appreciated. Borris _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users