[jboss-jira] [JBoss JIRA] (DROOLS-1402) Incremental Compilation class update fails MVELAnalysis

Matteo Mortari (JIRA) issues at jboss.org
Wed Jan 11 07:50:01 EST 2017


     [ https://issues.jboss.org/browse/DROOLS-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matteo Mortari updated DROOLS-1402:
-----------------------------------
    Forum Reference: https://groups.google.com/d/msg/drools-usage/GA5lT6UT-Dk/EysaPccVEgAJ


> Incremental Compilation class update fails MVELAnalysis
> -------------------------------------------------------
>
>                 Key: DROOLS-1402
>                 URL: https://issues.jboss.org/browse/DROOLS-1402
>             Project: Drools
>          Issue Type: Bug
>          Components: core engine
>    Affects Versions: 7.0.0.Beta5
>            Reporter: Matteo Mortari
>            Assignee: Mario Fusco
>
> Error:
> {code:java}
> Unable to Analyse Expression lastName == null:
> [Error: unable to resolve method using strict-mode: org.test.MyBean.lastName()]
> [Near : {... lastName == null ....}]
>              ^ : [Rule name='Row 1 HelloRules']
> {code}
> Reproducer:
> {code:java}
> @Test
>     public void testMTatteo() {
>         String JAVA1 = "package org.test;" +
>                 "    public class MyBean {\n" + 
>                 "        private String firstName;\n" + 
>                 "        public MyBean() { /* empty constructor */ }\n" + 
>                 "        public MyBean(String firstName) { this.firstName = firstName; }\n" + 
>                 "        public String getFirstName() { return firstName; }\n" + 
>                 "        public void setFirstName(String firstName) { this.firstName = firstName; }\n" + 
>                 "    }";
>         
>         String DRL1 = "package org.test;\n" + 
>                 "\n" + 
>                 "//from row number: 1\n" + 
>                 "rule \"Row 1 HelloRules\"\n" + 
>                 "    dialect \"mvel\"\n" + 
>                 "    when\n" + 
>                 "        helloProfile : MyBean( firstName == null )\n" + 
>                 "    then\n" + 
>                 "        System.out.println(helloProfile);" + 
>                 "end";
>         
>         String INIT_DRL = "package org.test; rule RINIT when eval(true) then insert(new MyBean()); end";
>         
>         String JAVA2 = "package org.test;" +
>                 "    public class MyBean {\n" + 
>                 "        private String firstName;\n" + 
>                 "        private String lastName;\n" + 
>                 "        public MyBean() { /* empty constructor */ }\n" + 
>                 "        public MyBean(String firstName) { this.firstName = firstName; }\n" + 
>                 "        public MyBean(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; }\n" + 
>                 "        public String getFirstName() { return firstName; }\n" + 
>                 "        public void setFirstName(String firstName) { this.firstName = firstName; }\n" + 
>                 "        public String getLastName() { return lastName; }\n" + 
>                 "        public void setLastName(String lastName) { this.lastName = lastName; }\n" + 
>                 "    }";
>         
>         String DRL2 = "package org.test;\n" + 
>                 "\n" + 
>                 "//from row number: 1\n" + 
>                 "rule \"Row 1 HelloRules\"\n" + 
>                 "    dialect \"mvel\"\n" + 
>                 "    when\n" + 
>                 "        helloProfile : MyBean( firstName == null , lastName == null )\n" + 
>                 "    then\n" + 
>                 "        System.out.println(helloProfile);" + 
>                 "end";
>         
>             KieServices ks = KieServices.Factory.get();
>             
>             KieFileSystem kfs = ks.newKieFileSystem();
>             ReleaseId id = ks.newReleaseId( "org.test", "myTest", "1.0.0" );
>             KieBuilder kieBuilder = ks.newKieBuilder( kfs );
>             kfs.generateAndWritePomXML( id );
>             kfs.write("src/main/java/org/test/MyBean.java",
>                       ks.getResources().newReaderResource(new StringReader(JAVA1)));
>             kfs.write( ks.getResources()
>                          .newReaderResource( new StringReader( DRL1 ) )
>                          .setResourceType( ResourceType.DRL )
>                          .setSourcePath( "rules.drl" ) );
>             
>             kfs.write( ks.getResources()
>                     .newReaderResource( new StringReader( INIT_DRL ) )
>                     .setResourceType( ResourceType.DRL )
>                     .setSourcePath( "INIT_DRL.drl" ) );
>             kieBuilder.buildAll();
>             KieContainer kc = ks.newKieContainer( id );
>             KieSession ksession = kc.newKieSession();
>             
>             int fired = ksession.fireAllRules();
>             
>             
>             ReleaseId id2 = ks.newReleaseId( "org.test", "myTest", "2.0.0" );
>             KieFileSystem kfs2 = ks.newKieFileSystem();
>             KieBuilder kieBuilder2 = ks.newKieBuilder( kfs2 );
>             kfs2.generateAndWritePomXML( id2 );
>             kfs2.write("src/main/java/org/test/MyBean.java",
>                       ks.getResources().newReaderResource(new StringReader(JAVA2)));
>             kfs2.write( ks.getResources()
>                          .newReaderResource( new StringReader( DRL2 ) )
>                          .setResourceType( ResourceType.DRL )
>                          .setSourcePath( "rules.drl" ) );
>             
>             kfs2.write( ks.getResources()
>                     .newReaderResource( new StringReader( INIT_DRL ) )
>                     .setResourceType( ResourceType.DRL )
>                     .setSourcePath( "INIT_DRL.drl" ) );
>             kieBuilder2.buildAll();
>             
>             
>             
>             
>             kc.updateToVersion(id2);
>             
>             
>             ksession.fireAllRules();
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list