[rules-users] NPE from LHS of rule is not returned by Drools to calling program

Wolfgang Laun wolfgang.laun at gmail.com
Thu Mar 29 02:40:27 EDT 2012


Consider these rules:

rule kickOff
when
then
    Inner square1 = new Inner( "inner", "4", "4" );
    Outer namedSquare1 = new Outer( "4x4", square1 );
    insert( namedSquare1 );

    Inner square2 = new Inner( "inner", "5", "5" );
    Outer namedSquare2 = new Outer( "5x5", null /* square2 */ );
    insert( namedSquare2 );
end

rule innerOuter
dialect "mvel"
when
    Outer( inner.length == '4' && name == '4x4' && inner.width == '4' )
then
    System.out.println( "Hit rule" );
end

and the call for firing all rules:

        try {
            kSession.fireAllRules();
        } catch( RuntimeException e ){
            System.out.println( "Caught " + e.getMessage() );
        }

This produces the output (with additional printlns before and after):

compiled =     1.020
Caught Exception executing consequence for rule "kickOff" in nested:
java.lang.RuntimeException: cannot invoke getter: getInner
[declr.class: nested.Outer; act.class: nested.Outer] (see trace)
all fired =     0.007

With the try/catch surrounding the call that results in the firing of
rule kickOff where the facts Outer are inserted that cause the
evaluation of the LHS of rule innerOuter where it runs into the
NPE/RuntimeException: you can catch this exception.

-W







On 28/03/2012, scottleff <scott.leff at fbfs.com> wrote:
> I understand that I cannot expect to catch NPE in my calling java program.
> I
> am actually catching java.lang.Exception.  I simply continued to call it an
> NPE because that was the true issue.  My issue can easily be broadened to
> apply to any RuntimeException thrown from LHS.
>
> --
> View this message in context:
> http://drools.46999.n3.nabble.com/NPE-from-LHS-of-rule-is-not-returned-by-Drools-to-calling-program-tp3865110p3866004.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



More information about the rules-users mailing list