Hi All,

 

I believe that I have encountered two potential bugs (Expert), I am using Drools 5.1.1.

It seems that they are related to namespaces and inner classes in particularly. 

 

I have a class with an internal inner class (enum):

 

public class X {

 

public enum State {

                INIT,

DONE;

}

 

                Private State state;        

}

 

In the DRL file I would import the class X (e.g. import com.stub.X)

And in the LHS of the rule I could state something like

 

$x:          X(X.State.INIT == state)

 

As far as I understand this is a legal syntax, the problem is that I get the following exception: “Exception executing predicate X.State.INIT == state”

I found that I can work around this by importing com.stub.X.State and changing the LHS rule to

$x:          X(State.INIT == state)

 

This brings me to the second issue. If I have an additional class let’s say

 

public class Y {

 

public enum State {

                ALIVE,

TERMINATED;

}

 

                Private State state;        

}

 

In this case importing both classes using the workaround above, hence:

import com.stub.X.State

import com.stub.Y.State

result in an import collision with the State class so it is kind of a deadlock situation.

 

I can always overcome this by changing the names of the inner classes (which is what I am currently doing) but I thought it would be helpful to state this.

Perhaps this is not a bug but rather something I am doing wrong.

 

Hezi