Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-6920

Fails to parse a constraint connected with OR with a bind variable on right side in executable-model

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 7.70.0.Final
    • 7.69.0.Final
    • executable model
    • None
    • 2022 Week 17-19 (from Apr 25)
    • 3
    • NEW
    • NEW
    • ---
    • ---

    Description

      executable-model fails to build a rule which has "||" constraint with a bind variable on right side:

      $p : Person(name == "Mario" || $a : age > 20)
      

      It results in

      com.github.javaparser.ParseProblemException: Unknown error
      Problem stacktrace : 
        org.drools.mvel.parser.utils.AstUtils.parseBindingAfterAnd(AstUtils.java:127)
        org.drools.mvel.parser.GeneratedMvelParser.DrlxExpression(GeneratedMvelParser.java:8593)
        org.drools.mvel.parser.DrlxParser.lambda$1(DrlxParser.java:46)
        org.drools.mvel.parser.MvelParser.parse(MvelParser.java:146)
        org.drools.mvel.parser.DrlxParser.simplifiedParse(DrlxParser.java:60)
        org.drools.mvel.parser.DrlxParser.parseExpression(DrlxParser.java:56)
        org.drools.modelcompiler.builder.generator.DrlxParseUtil.parseExpression(DrlxParseUtil.java:675)
        org.drools.modelcompiler.builder.generator.drlxparse.ConstraintParser.drlxParse(ConstraintParser.java:142)
        org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSL.findAllConstraint(PatternDSL.java:147)
        org.drools.modelcompiler.builder.generator.visitor.pattern.PatternDSL.buildPattern(PatternDSL.java:306)
        org.drools.modelcompiler.builder.generator.visitor.ModelGeneratorVisitor.visit(ModelGeneratorVisitor.java:131)
        org.drools.compiler.lang.descr.PatternDescr.accept(PatternDescr.java:303)
        org.drools.modelcompiler.builder.generator.visitor.AndVisitor.visit(AndVisitor.java:51)
        org.drools.modelcompiler.builder.generator.visitor.ModelGeneratorVisitor.visit(ModelGeneratorVisitor.java:69)
        org.drools.modelcompiler.builder.generator.ModelGenerator.processRule(ModelGenerator.java:200)
        org.drools.modelcompiler.builder.generator.ModelGenerator.processRuleDescr(ModelGenerator.java:176)
        org.drools.modelcompiler.builder.generator.ModelGenerator.generateModel(ModelGenerator.java:165)
        org.drools.modelcompiler.builder.ModelBuilderImpl.compileKnowledgePackages(ModelBuilderImpl.java:287)
        org.drools.modelcompiler.builder.ModelBuilderImpl.buildRules(ModelBuilderImpl.java:222)
        org.drools.modelcompiler.builder.ModelBuilderImpl.doSecondBuildStep(ModelBuilderImpl.java:119)
        org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:115)
        org.drools.compiler.builder.impl.CompositeKnowledgeBuilderImpl.build(CompositeKnowledgeBuilderImpl.java:99)
        org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:270)
        org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:216)
        org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:80)
        org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:277)
        org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:245)
        org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:202)
        org.drools.modelcompiler.BaseModelTest.createKieBuilder(BaseModelTest.java:147)
        org.drools.modelcompiler.BaseModelTest.createKieBuilder(BaseModelTest.java:130)
        org.drools.modelcompiler.BaseModelTest.getKieContainer(BaseModelTest.java:119)
        org.drools.modelcompiler.BaseModelTest.getKieContainer(BaseModelTest.java:112)
        org.drools.modelcompiler.BaseModelTest.getKieSession(BaseModelTest.java:108)
        org.drools.modelcompiler.BaseModelTest.getKieSession(BaseModelTest.java:104)
        org.drools.modelcompiler.BindingTest.testBindingOnRightWithOr(BindingTest.java:308)
      

      On both side as well

      $p : Person($n : name == "Mario" || $a : age > 20)
      

      Attachments

        Issue Links

          Activity

            People

              rhn-support-tkobayas Toshiya Kobayashi
              rhn-support-tkobayas Toshiya Kobayashi
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: