[rules-users] Re: About for and inheritance

Chris Woodrow woodrow.chris at gmail.com
Thu Sep 27 09:18:23 EDT 2007


I am sorry I didn't mean 'for' but 'from'.
:D

2007/9/27, Chris Woodrow <woodrow.chris at gmail.com>:
>
> Hi,
> I recently find out a few issues using for, and I wanted to share it with
> you. I made a simple exemple to illustrate my purpose.
>
> My classes are (I did not represent accessors & constructors):
>
> public class Cheese {
>     protected String name;
> }
>
> public class FrenchCheese extends Cheese{
>     private String smell;
> }
>
> public class Person {
>     private Cheese likes;
> }
>
> Here is my rule set :
>
> package rules
>
> rule "likes cheese"
>     when
>         $person : Person ()
>         Cheese(  ) from $person.getLikes()
>     then
>         System.out.println ("likes cheese");
> end
>
>
> rule "likes french cheese"
>     when
>         $person : Person ()
>         FrenchCheese(  ) from $person.getLikes()
>     then
>         System.out.println("likes french cheese");
> end
>
> First test :
>         Cheese cheese = new FrenchCheese("good", "camembert");
>         Person person = new Person();
>         person.setLikes(cheese);
>
> Output :
> likes french cheese
> likes cheese
>
> Wich is expected...
>
> Second test :
>         Cheese cheese = new Cheese();
>         Person person = new Person();
>         person.setLikes(cheese);
>
> Output :
> likes french cheese
> likes cheese
>
> That's the first strange thing. As far as I am concerned, rule "likes
> french cheese" should not match (since a Cheese is not a FrenchCheese).
>
> I made a change to the second rule :
> rule "likes french cheese"
>     when
>         $person : Person ()
>         FrenchCheese( smell == "good" ) from $person.getLikes()
>     then
>         System.out.println("likes french cheese");
> end
>
> Third test :
>         Cheese cheese = new Cheese();
>         Person person = new Person();
>         person.setLikes(cheese);
>
> output :
> It throwed an exception : Exception in thread "main"
> java.lang.ClassCastException: rules.Cheese
> I am not saying the ClassCastException is not to expect in such a case but
> I think I would simply expect it not to match (as far as a Cheese is not a
> FrenchCheese).
>
> Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070927/644b8a07/attachment.html 


More information about the rules-users mailing list