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

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


Matteo Mortari created DROOLS-1402:
--------------------------------------

             Summary: 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