I have an expression where I am comparing a Boolean to a String which I would expect to fail but the expression always returns true. Is this expected behaviour?


I modified the Drools HelloWorldExample and changed the status from an int to a boolean.


import org.drools.examples.HelloWorldExample.Message;

rule "Hello World"


        m : Message( status == "hello", message : message )


        System.out.println( message );



public static class Message {

        public static final boolean HELLO   = false;

        public static final boolean GOODBYE = true;

        private String message;

        private Boolean status;


        public Message() {}

        public String getMessage() { return this.message; }

        public void setMessage(final String message) { this.message = message; }

        public boolean getStatus() { return this.status; }

        public void setStatus(final boolean status) { this.status = status; }




final Message message = new Message();

message.setMessage( "Hello World" );

message.setStatus( Message.HELLO );


final StatefulSession session = ruleBase.newStatefulSession();

session.insert( message );




Thanks very much,