[jboss-jira] [JBoss JIRA] (DROOLS-1318) Using java enum when setting a variable of type enum does not work

Mario Fusco (JIRA) issues at jboss.org
Wed Oct 5 12:25:00 EDT 2016


    [ https://issues.jboss.org/browse/DROOLS-1318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13303108#comment-13303108 ] 

Mario Fusco commented on DROOLS-1318:
-------------------------------------

I added an enum Type to our Address test pojo and used it in a test case as it follows

{code}
    @Test
    public void testMvelWithEnum() {
        String drl =
                "import " + Address.class.getCanonicalName() + ";\n" +
                "rule R dialect \"mvel\" when\n" +
                "    $a : Address(type == Address.Type.OFFICE)\n" +
                "then\n" +
                "    $a.setType(Address.Type.HOME);\n" +
                "    update($a);\n" +
                "end";

        KieSession kieSession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();

        Address address = new Address();
        address.setType( Address.Type.OFFICE );
        kieSession.insert( address );
        kieSession.fireAllRules();

        assertEquals(Address.Type.HOME, address.getType());
    }
{code}

As you can see I'm using the enum in both LHS and RHS and it works as expected.

[~nheron] Please provide a reproducer for this issue.

> Using java enum when setting a variable of type enum does not work
> ------------------------------------------------------------------
>
>                 Key: DROOLS-1318
>                 URL: https://issues.jboss.org/browse/DROOLS-1318
>             Project: Drools
>          Issue Type: Bug
>    Affects Versions: 6.4.0.Final
>            Reporter: Nicolas Heron
>            Assignee: Nicolas Heron
>              Labels: OnBoarding
>
> In project https://github.com/chtiJBUG/onboarding-nautic-project
> when running the TestBirthday reduction
> TestBirthdayReduction : [Error: could not access/write property (seasonType) in: org.chtijbug.example.swimmingpool.Period] [Near :
> the source code of the rule is 
> package org.training.leisure.swimmingpool;
> import java.lang.Number;
> import org.chtijbug.example.swimmingpool.CalculatedAttribute;
> import org.chtijbug.example.swimmingpool.Price;
> import org.chtijbug.example.swimmingpool.Person;
> import org.chtijbug.example.swimmingpool.Period;
> import org.chtijbug.example.swimmingpool.PriceType;
> rule "BirthdayReduction"
> 	dialect "mvel"
> 	ruleflow-group "reduction"
> 	when
> 		ccat : CalculatedAttribute( key == "IsPersonBirthday" , stringValue == "true" )
> 		pper : Person( calculatedAttributeList contains ccat , sprice : standardPrice > 0.0B )
> 		not (pprice : Price( description == "BirthdayReduction" ) and Person( priceList contains pprice , this == pper )) 
> 		Period( seasonType == SeasonType.day )
> 	then
> 		Price nprice = new Price();
> 		nprice.setDescription( "BirthdayReduction" );
> 		nprice.setAmount( sprice.divide(new BigDecimal("10.0"),BigDecimal.ROUND_HALF_UP) );
> 		nprice.setPriceType( PriceType.promotion );
> 		insert( nprice );
> 		pper.addPrice( nprice );
> 		modify( pper ) {
> 				setPriceList( pper.getPriceList() )
> 		}
> end



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jboss-jira mailing list