Really? That is a surprise to me... we need to handle that...

   Maybe you can open a JIRA for us?

   Thanks,
      Edson

2008/5/6 Alessandro Lazarotti <alessandro@siq.com.br>:
Thanks Michael, I simulate.. your rule fire with successful.

I discovered the problem. The object in property (like Foo in your example), when null, it's not throws NullPointerException, but "org.mvel.PropertyAccessException: unable to resolve property".
With that, I never imagined that the problem was nullPointer, but I thought about any access visibility (duh!).

[]'s
Alessandro



Michael B. escreveu:

Okay, I wrote a test case around the following and it works fine so let me
know if this isnt what you are working with...

Foo Class

public class Foo {
       private String m_name;
       public String getName()
   {
       return m_name;            }
       public void setName(String nm)
   {
       m_name = nm;
   }

}


Bar Class

public class Bar {
       private Foo m_foo;
       public Foo getFoo()
   {
       return m_foo;
   }
       public void setFoo(Foo f)
   {
       m_foo = f;
   }
       public String toString()
   {
       return "I have a foo with a name of " + m_foo.getName();
   }

}

DRL Rule

rule "FooBar Rule"
       
       when
               $bar : Bar( foo.name != "Wrong" )
       then        System.out.println("Test Successful - " + $bar.toString());
               
end


Junit Test Case

   public void testProperties()    {
       try
       {
           final Reader source = new InputStreamReader(
FooBarTest.class.getResourceAsStream( "FooBar.drl" ) );
           RuleBase ruleBase = RuleBaseFactory.newRuleBase();
           PackageBuilder builder = new PackageBuilder();
                       builder.addPackageFromDrl(source);
                       if ( builder.hasErrors() ) {
               System.out.println( builder.getErrors().toString() );
               throw new RuntimeException( "Unable to compile
\"FooBar.drl\".");
           }
                       //get the compiled package (which is serializable)
           final Package pkg = builder.getPackage();

           //add the package to a rulebase (deploy the rule package).
           ruleBase.addPackage( pkg );
           final StatefulSession session = ruleBase.newStatefulSession();
                       Foo foo = new Foo();
           foo.setName("Test");
           Bar bar = new Bar();
           bar.setFoo(foo);
           session.insert(bar);
                       session.fireAllRules();                              }
       catch (Exception e)
       {
           System.out.println(e.getMessage());
           e.printStackTrace();
           fail(e.getMessage());
       }

   }




 
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



--
Edson Tirelli
JBoss Drools Core Development
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @ www.jboss.com