Bug 1121985

Summary: Test scenario: Not working with Java enums
Product: [Retired] JBoss BRMS Platform 6 Reporter: Toni Rikkola <trikkola>
Component: Business CentralAssignee: Toni Rikkola <trikkola>
Status: CLOSED EOL QA Contact: Lukáš Petrovický <lpetrovi>
Severity: unspecified Docs Contact:
Priority: high    
Version: 6.0.0CC: bingalee7, fspolti, kverlaen, lpetrovi
Target Milestone: ER3   
Target Release: 6.1.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-03-27 20:00:46 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Toni Rikkola 2014-07-22 09:24:32 UTC
Description of problem:

Test scenario fails to run when using enums. Tested with the setup below.

Email from the rules-users mailing list:

"Hi all, I'm defining a test scenario within guvnor (now called kie-workbench)
and I'm experiencing some issues about using java enums.

The case is simple, I have a java model (deploying a jar) with a class
having a member of enum type. The enum is defined in the same package but in
a different java file, not an inner class. This is packed in a jar that I
deploy manually uploading the file to the embedded maven repo using the
workbench.

/
public class ClassWithMemberAsEnum { private EnumType enumMember;
/*getters/setters included*/}
public enum EnumType {HELLO, BYE}
/

Then I write a dummy rule with the guided editor like this:

/
import es.shin.test.ClassWithMemberAsEnum;
import es.shin.test.EnumType;
        
rule "DummyRule"
    dialect "mvel"
    when
        x : ClassWithMemberAsEnum( enumMember == EnumType.HELLO )
    then
        x.setEnumMember( EnumType.BYE );
end
/

And finally a test scenario inserting a ClassWithMemberAsEnum initialized
with enumMember=EnumType.HELLO and checking that it is changed to
EnumType.BYE after firing all rules.

The error message returned in the reporting console is:

/
EnumTest : [Error: unable to resolve method using strict-mode:
java.lang.Object.es()] [Near : {... es.shin.test.EnumType.HELLO ....}] ^
[Line: 1, Column: 1]
/

I have tried the same case but defining the class in the data modeler and
the enum with the enumeration editor, without using any jar artifact. The
case worked as expected."

Comment 3 Spolti 2014-11-12 17:04:42 UTC
The same test was made in the following versions:

5.3.1 -> worked as expected
6.0.2 -> same problem
6.0.3 -> same problem

Comment 5 b5a7_ 2015-07-03 00:01:42 UTC
Similar use case - trying to set the value of an enum, I got an error:
testdrl : [Error: could not access/write property (gender) in: au.gov.tas.test.Person] [Near : {... __fact__.gender= __val__ ....}] ^ [Line: 1, Column: 15]
When creating the test scenario, the workbench correctly interprets the enumeration, allowing the appropriate value to be selected but is obviously passing the string because, I needed to add a setter that accepted a string value.