[jboss-jira] [JBoss JIRA] Updated: (JBRULES-1079) Problem with "!=" field constraint

Mark Proctor (JIRA) jira-events at lists.jboss.org
Wed Aug 15 21:25:01 EDT 2007


     [ http://jira.jboss.com/jira/browse/JBRULES-1079?page=all ]

Mark Proctor updated JBRULES-1079:
----------------------------------

    Fix Version/s: 4.0.1

> Problem with "!=" field constraint
> ----------------------------------
>
>                 Key: JBRULES-1079
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1079
>             Project: JBoss Rules
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions:  4.0.0.GA
>            Reporter: Markus Reitz
>         Assigned To: Edson Tirelli
>             Fix For: 4.0.1
>
>
> The following code illustrates the problem.
> import org.drools.*;
> import org.drools.compiler.*;
> import org.drools.rule.Package;
> import java.io.*;
> public class DroolsTest {
>   private RuleBase        rules;
>   private StatefulSession memory;
>   public DroolsTest(File file) throws Exception {
>     rules =RuleBaseFactory.newRuleBase();
>     memory=rules.newStatefulSession();
>     
>     rules.addPackage(loadPackage(file));
>   }
>   protected Package loadPackage(File file) throws IOException {
>     FileInputStream stream=null;
>     
>     try {
>       stream=new FileInputStream(file);
>     
>       return(loadPackage(stream));
>     }
>     finally {
>       if (stream!=null)
>         stream.close();
>     }
>   }
>   protected Package loadPackage(InputStream stream) throws IOException {
>     try {
>       PackageBuilder builder=new PackageBuilder();
>       builder.addPackageFromDrl(new InputStreamReader(stream));
>       return(builder.getPackage());
>     }
>     catch(Exception ex) {
>       throw new IOException();
>     }
>   }
>   
>   public StatefulSession getSession() {
>     return(memory);
>   }
>   
>   public static void main(String ... args) {
>     try {
>       DroolsTest test=new DroolsTest(new File(args[0]));
>       
>       SpecialString first42 =new SpecialString("42");
>       SpecialString second42=new SpecialString("42");
>       
>       test.getSession().insert(new SpecialString("World"));
>       test.getSession().insert(first42);
>       test.getSession().insert(second42);
>       
>       System.out.println("Fact handle: "+test.getSession().getFactHandle(first42));
>       System.out.println("Fact handle: "+test.getSession().getFactHandle(second42));
>       
>       System.out.println("Firing rules ...");
>       
>       test.getSession().fireAllRules();
>     }
>     catch (Exception ex) {
>       ex.printStackTrace();
>     }
>   }
> }
> In the above example, three different objects are created and inserted into the working memory of the Drools Engine. Two of the three objects have the same text - "42".
> The class SpecialString uses the standard equals(...) and hashCode(...) implementation:
> public class SpecialString {
>   private String text;
>   
>   public SpecialString(String text) {
>     this.text=text;
>   }
>   
>   public String getText() {
>     return(text);
>   }
>   
>   @Override public String toString() {
>     return(getText()+"["+super.toString()+"]");
>   }
> }
> For the rule
>   package test
>   rule "A test"
>     when
>       x : SpecialString()
>       y : SpecialString(this!=x)
>     then
>       System.out.println(x+"/"+y);
>   end
> The output is 
>   Fact handle: [fid:2:2:42[SpecialString at fde8da]]
>   Fact handle: [fid:3:3:42[SpecialString at e4d6ef]]
>   Firing rules ...
>   42[SpecialString at e4d6ef]/World[SpecialString at faa824]
>   World[SpecialString at faa824]/42[SpecialString at e4d6ef]
>   42[SpecialString at fde8da]/World[SpecialString at faa824]
>   World[SpecialString at faa824]/42[SpecialString at fde8da]
> I would expect that
>   42[SpecialString at e4d6ef]/42[SpecialString at fde8da]
>   42[SpecialString at fde8da]/42[SpecialString at e4d6ef]
> is also contained in the output, but this is not the case.

-- 
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