[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1315) Rule that uses a 'collect' and 'from' clause together causes problem
Edson Tirelli (JIRA)
jira-events at lists.jboss.org
Wed Feb 6 15:15:03 EST 2008
[ http://jira.jboss.com/jira/browse/JBRULES-1315?page=comments#action_12398548 ]
Edson Tirelli commented on JBRULES-1315:
----------------------------------------
Fixes applied to trunk.
> 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
> Assigned To: Edson Tirelli
> 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