[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