[jboss-jira] [JBoss JIRA] (JBRULES-3033) java.lang.ClassCastException when change rule condition and declarative facts/events are used
Mario Fusco (JIRA)
jira-events at lists.jboss.org
Mon Aug 6 05:06:10 EDT 2012
[ https://issues.jboss.org/browse/JBRULES-3033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mario Fusco reassigned JBRULES-3033:
------------------------------------
Assignee: Mario Fusco (was: Mark Proctor)
> java.lang.ClassCastException when change rule condition and declarative facts/events are used
> ---------------------------------------------------------------------------------------------
>
> Key: JBRULES-3033
> URL: https://issues.jboss.org/browse/JBRULES-3033
> Project: Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: drools-core
> Affects Versions: 5.1.1.FINAL
> Reporter: Federico Weisse
> Assignee: Mario Fusco
> Fix For: 5.5.0.Beta1
>
>
> We have drl files where we declare events. we use declarative events (there is no java class AlertaPosManual)
> (like this)
> declare AlertaPosManual
> @role (event)
> @expires(10s)
> idTerminal : java.lang.String
> end
> We use a StatefullSession for fusion cep and we need that changes in rules refresh the kBase in runtime. But when a rule condition changes this exception in throw
> Exception in thread "Thread-2" java.lang.ClassCastException: com.sample.ConsumoPostManual cannot be cast to com.sample.ConsumoPostManual
> at org.drools.base.com.sample.ConsumoPostManual17710704$getIdTerminal.getValue(Unknown Source)
> at org.drools.base.extractors.BaseObjectClassFieldReader.getHashCode(BaseObjectClassFieldReader.java:192)
> at org.drools.base.ClassFieldReader.getHashCode(ClassFieldReader.java:193)
> at org.drools.core.util.AbstractHashTable$SingleIndex.hashCodeOf(AbstractHashTable.java:582)
> at org.drools.core.util.RightTupleIndexHashTable.getOrCreate(RightTupleIndexHashTable.java:360)
> at org.drools.core.util.RightTupleIndexHashTable.add(RightTupleIndexHashTable.java:243)
> at org.drools.reteoo.AccumulateNode.assertObject(AccumulateNode.java:246)
> at org.drools.reteoo.ObjectTypeNode.updateSink(ObjectTypeNode.java:276)
> at org.drools.reteoo.PropagationQueuingNode.updateSink(PropagationQueuingNode.java:111)
> at org.drools.reteoo.BetaNode.attach(BetaNode.java:214)
> at org.drools.reteoo.builder.BuildUtils.attachNode(BuildUtils.java:151)
> at org.drools.reteoo.builder.CollectBuilder.build(CollectBuilder.java:114)
> at org.drools.reteoo.builder.PatternBuilder.attachPattern(PatternBuilder.java:111)
> at org.drools.reteoo.builder.PatternBuilder.build(PatternBuilder.java:72)
> at org.drools.reteoo.builder.GroupElementBuilder$AndBuilder.build(GroupElementBuilder.java:132)
> at org.drools.reteoo.builder.GroupElementBuilder.build(GroupElementBuilder.java:78)
> at org.drools.reteoo.builder.ReteooRuleBuilder.addSubRule(ReteooRuleBuilder.java:155)
> at org.drools.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:128)
> at org.drools.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:117)
> at org.drools.reteoo.ReteooRuleBase.addRule(ReteooRuleBase.java:428)
> at org.drools.common.AbstractRuleBase.addRule(AbstractRuleBase.java:721)
> at org.drools.common.AbstractRuleBase.addPackages(AbstractRuleBase.java:545)
> at org.drools.reteoo.ReteooRuleBase.addPackages(ReteooRuleBase.java:445)
> at org.drools.reteoo.ReteooRuleBase.addPackage(ReteooRuleBase.java:452)
> at org.drools.agent.impl.KnowledgeAgentImpl.addResourcesToKnowledgeBase(KnowledgeAgentImpl.java:937)
> at org.drools.agent.impl.KnowledgeAgentImpl.incrementalBuildResources(KnowledgeAgentImpl.java:821)
> at org.drools.agent.impl.KnowledgeAgentImpl.buildKnowledgeBase(KnowledgeAgentImpl.java:586)
> at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:185)
> at org.drools.agent.impl.KnowledgeAgentImpl$ChangeSetNotificationDetector.run(KnowledgeAgentImpl.java:1106)
> at java.lang.Thread.run(Thread.java:619)
> I think that's because the statefullSession has an instance of
> com.sample.ConsumoPostManual (loaded with the classLoader
> org.drools.rule.JavaDialectRuntimeData$PackageClassLoader at 1218b25) But when
> the kBase is regenerated and the class com.sample.ConsumoPostManual to, the
> classLoader org.drools.rule.JavaDialectRuntimeData is recreated so there
> are two versions of the class com.sample.ConsumoPostManual in differents
> classLoader (one in the statefullSession and the other in the kBase)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list