[jboss-jira] [JBoss JIRA] (DROOLS-5328) Externalize lambda for binding variable

Toshiya Kobayashi (Jira) issues at jboss.org
Wed May 13 23:28:05 EDT 2020


Toshiya Kobayashi created DROOLS-5328:
-----------------------------------------

             Summary: Externalize lambda for binding variable
                 Key: DROOLS-5328
                 URL: https://issues.redhat.com/browse/DROOLS-5328
             Project: Drools
          Issue Type: Task
          Components: executable model
    Affects Versions: 7.37.0.Final
            Reporter: Toshiya Kobayashi
            Assignee: Luca Molteni


When "drools.externaliseCanonicalModelLambda" is enabled, Predicate, Extractor and Consequence are externalized. But still lambda for binding variable exists:
e.g. CompilerTest#testStringValueOf)
{code:java}
    public static org.drools.model.Rule rule_R() {
        final org.drools.model.Variable<java.lang.Integer> var_GENERATED_$pattern_Integer$1$ = D.declarationOf(java.lang.Integer.class,
                   DomainClassesMetadata81A66AD685F7689036AAA5128956C14B.java_lang_Integer_Metadata_INSTANCE,
                   "GENERATED_$pattern_Integer$1$");

        final org.drools.model.Variable<Integer> var_$i = D.declarationOf(Integer.class, "$i");

        final org.drools.model.Variable<org.drools.modelcompiler.domain.Person> var_GENERATED_$pattern_Person$1$ = D.declarationOf(org.drools.modelcompiler.domain.Person.class,
               DomainClassesMetadata81A66AD685F7689036AAA5128956C14B.org_drools_modelcompiler_domain_Person_Metadata_INSTANCE,
               "GENERATED_$pattern_Person$1$");

        org.drools.model.Rule rule = D.rule("R").build(D.pattern(var_GENERATED_$pattern_Integer$1$).bind(var_$i, (java.lang.Integer _this) -> _this.intValue()),
           D.pattern(var_GENERATED_$pattern_Person$1$).expr("476633DA7C4638FC84A32859E0C843E6",
                                                            var_$i,
                                                            (_this, $i) -> org.drools.modelcompiler.util.EvaluationUtil.areNullSafeEquals(_this.getName(),
                                                            (String.valueOf($i))),
                                                            D.reactOn("name")),
           D.on(var_$i).execute(defaultpkg.P1D.LambdaConsequence1D5F4C5CA006007B1D3974ED5A5A05B6.INSTANCE));
        return rule;
    }
{code}

See
{code:java}
bind(var_$i, (java.lang.Integer _this) -> _this.intValue())
{code}

Function1$Impl is instantiated by PatternDSL$PatternDefImpl.bind()

Note: The above example shows another lambda
{code:java}
expr("476633DA7C4638FC84A32859E0C843E6",
                                                            var_$i,
                                                            (_this, $i) -> org.drools.modelcompiler.util.EvaluationUtil.areNullSafeEquals(_this.getName(),
                                                            (String.valueOf($i)))
{code}
This will be addressed by another JIRA.




--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the jboss-jira mailing list