[jboss-jira] [JBoss JIRA] Updated: (JBRULES-1315) Rule that uses a 'collect' and 'from' clause together causes problem
Igor Bolic (JIRA)
jira-events at lists.jboss.org
Mon Nov 12 09:02:44 EST 2007
[ http://jira.jboss.com/jira/browse/JBRULES-1315?page=all ]
Igor Bolic updated JBRULES-1315:
--------------------------------
Attachment: testRemovePackage.rar
Hi Mark,
I've attached test for this bug. I'm getting the following error when i try to remove package:
java.lang.IllegalArgumentException: Cannot remove a sink, when the list of sinks is null
at org.drools.reteoo.ObjectSource.removeObjectSink(ObjectSource.java:116)
at org.drools.reteoo.ObjectTypeNode.removeObjectSink(ObjectTypeNode.java:299)
at org.drools.reteoo.ObjectTypeNode.remove(ObjectTypeNode.java:226)
at org.drools.reteoo.LeftInputAdapterNode.remove(LeftInputAdapterNode.java:189)
at org.drools.reteoo.BetaNode.remove(BetaNode.java:173)
at org.drools.reteoo.RuleTerminalNode.remove(RuleTerminalNode.java:466)
at org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:224)
at org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java:270)
at org.drools.common.AbstractRuleBase.removeRule(AbstractRuleBase.java:614)
at org.drools.common.AbstractRuleBase.removeRule(AbstractRuleBase.java:595)
at com.sample.DroolsTest.testDynamicRuleRemovals(DroolsTest.java:88)
> Rule that uses a 'collect' and 'from' clause together causes problem
> --------------------------------------------------------------------
>
> Key: JBRULES-1315
> URL: http://jira.jboss.com/jira/browse/JBRULES-1315
> Project: JBoss Drools
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Reteoo
> Affects Versions: 4.0.3
> Reporter: Igor Bolic
> Attachments: testRemovePackage.rar
>
>
> Test case:
> Write a Rule that uses a 'collect' and 'from' clause together, example:
> package com.sample.mypackage
> rule "Apply discount"
> when
> $order: Order();
> $items : ArrayList() from collect (OrderItem() from $order.items)
> then
> #apply discount
> end
> first i add the package to RuleBase object, everthing works fine. When i try to 'refresh' my rules, i.e. first remove the package and again
> add the same (modified) package to the RuleBase object, following error occurs:
> java.lang.IllegalArgumentException: Cannot remove a sink, when the list of sinks is null
> at org.drools.reteoo.ObjectSource.removeObjectSink(ObjectSource.java:116)
> at org.drools.reteoo.AlphaNode.remove(AlphaNode.java:181)
> at org.drools.reteoo.LeftInputAdapterNode.remove(LeftInputAdapterNode.java:204)
> at org.drools.reteoo.FromNode.remove(FromNode.java:153)
> at org.drools.reteoo.RightInputAdapterNode.remove(RightInputAdapterNode.java:167)
> at org.drools.reteoo.BetaNode.remove(BetaNode.java:186)
> at org.drools.reteoo.RuleTerminalNode.remove(RuleTerminalNode.java:461)
> at org.drools.reteoo.ReteooBuilder.removeRule(ReteooBuilder.java:224)
> at org.drools.reteoo.ReteooRuleBase.removeRule(ReteooRuleBase.java:272)
> at org.drools.common.AbstractRuleBase.removePackage(AbstractRuleBase.java:460)
> ...
> I've found a workaround for this error by writing my .drl code as following:
> package com.sample.mypackage
> rule "Explode Cart"
> salience 11
> dialect "java"
> when
> $order: Order()
> $item : OrderItem() from $order.items
> then
> insert( $item );
> end
> rule "Apply discount"
> no-loop true
> when
> $order : Order();
> $items : ArrayList() from collect (OrderItem())
> then
> #apply discount
> end
> Now, my rules are 'refreshed' without any error.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list