This is an automated email from the ASF dual-hosted git repository.
mariofusco pushed a commit to branch dev-new-parser
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git
The following commit(s) were added to refs/heads/dev-new-parser by this push:
new b8b0464969 [incubator-kie-drools-5933] [new-parser]
PackageDescr.resource not set (#5984)
b8b0464969 is described below
commit b8b04649696d3d133af6f2af0b1983ba27f72908
Author: Toshiya Kobayashi <[email protected]>
AuthorDate: Fri Jun 7 15:23:45 2024 +0900
[incubator-kie-drools-5933] [new-parser] PackageDescr.resource not set
(#5984)
---
.../drl/parser/antlr4/DescrCommonPropertyTest.java | 17 ++++-
.../main/java/org/drools/drl/parser/DrlParser.java | 2 +-
.../drools/drl/parser/antlr4/BaseDescrFactory.java | 6 ++
.../drools/drl/parser/antlr4/DRLParserHelper.java | 7 +-
.../drools/drl/parser/antlr4/DRLParserWrapper.java | 9 ++-
.../drools/drl/parser/antlr4/DRLVisitorImpl.java | 77 +++++++++++++++++++---
6 files changed, 100 insertions(+), 18 deletions(-)
diff --git
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrCommonPropertyTest.java
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrCommonPropertyTest.java
index 25c51ca9b7..0582c9faf5 100644
---
a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrCommonPropertyTest.java
+++
b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/DescrCommonPropertyTest.java
@@ -18,6 +18,11 @@
*/
package org.drools.drl.parser.antlr4;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
import org.drools.drl.ast.descr.AccumulateDescr;
import org.drools.drl.ast.descr.AccumulateImportDescr;
import org.drools.drl.ast.descr.AndDescr;
@@ -49,8 +54,10 @@ import org.drools.drl.ast.descr.WindowDeclarationDescr;
import org.drools.drl.ast.descr.WindowReferenceDescr;
import org.drools.drl.parser.DrlParser;
import org.drools.drl.parser.DroolsParserException;
+import org.drools.io.InputStreamResource;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.kie.api.io.Resource;
import static org.assertj.core.api.Assertions.assertThat;
@@ -61,17 +68,20 @@ class DescrCommonPropertyTest {
private DrlParser parser;
+ private Resource resource;
+
@BeforeEach
public void setUp() {
parser = ParserTestUtils.getParser();
}
private PackageDescr parseAndGetPackageDescr(String drl) {
- try {
- PackageDescr pkg = parser.parse(null, drl);
+ try (InputStream inputStream = new
ByteArrayInputStream(drl.getBytes(StandardCharsets.UTF_8))) {
+ resource = new InputStreamResource(inputStream);
+ PackageDescr pkg = parser.parse(resource);
assertThat(parser.hasErrors()).as(parser.getErrors().toString()).isFalse();
return pkg;
- } catch (DroolsParserException e) {
+ } catch (DroolsParserException | IOException e) {
throw new RuntimeException(e);
}
}
@@ -83,6 +93,7 @@ class DescrCommonPropertyTest {
assertThat(descr.getColumn()).isEqualTo(column); // first column of
the start token. column is 0-based
assertThat(descr.getEndLine()).isEqualTo(endLine); // line of the end
token. line is 1-based
assertThat(descr.getEndColumn()).isEqualTo(endColumn); // last column
of the end token. column is 0-based
+ assertThat(descr.getResource()).isEqualTo(resource);
}
@Test
diff --git
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
index 26ee6dffb7..398e5f4992 100644
---
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
+++
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/DrlParser.java
@@ -200,7 +200,7 @@ public class DrlParser {
private PackageDescr compileWithAntlr4Parser(Function<DRLParserWrapper,
PackageDescr> packageDescrFunction) throws DroolsParserException {
try {
// we don't use languageLevel here, assuming DRL6 compatible
- DRLParserWrapper parser = new DRLParserWrapper();
+ DRLParserWrapper parser = new DRLParserWrapper(resource);
PackageDescr packageDescr = packageDescrFunction.apply(parser);
for (final DRLParserError drlParserError : parser.getErrors()) {
final ParserError err = new ParserError(resource,
diff --git
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/BaseDescrFactory.java
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/BaseDescrFactory.java
index 31fe45747e..f48db5926b 100644
---
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/BaseDescrFactory.java
+++
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/BaseDescrFactory.java
@@ -20,6 +20,7 @@ package org.drools.drl.parser.antlr4;
import org.antlr.v4.runtime.ParserRuleContext;
import org.drools.drl.ast.descr.BaseDescr;
+import org.kie.api.io.Resource;
import static
org.drools.drl.parser.antlr4.DescrHelper.populateCommonProperties;
@@ -53,6 +54,11 @@ public class BaseDescrFactory {
return this;
}
+ public Builder<T> withResource(Resource resource) {
+ toReturn.setResource(resource);
+ return this;
+ }
+
public T build() {
return toReturn;
}
diff --git
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserHelper.java
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserHelper.java
index 7d945f6bb8..131145b2d7 100644
---
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserHelper.java
+++
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserHelper.java
@@ -33,6 +33,7 @@ import org.antlr.v4.runtime.tree.ErrorNode;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.drools.drl.ast.descr.PackageDescr;
+import org.kie.api.io.Resource;
import org.kie.internal.builder.conf.LanguageLevelOption;
/**
@@ -49,7 +50,7 @@ public class DRLParserHelper {
*/
public static PackageDescr parse(String drl) {
DRLParser drlParser = createDrlParser(drl);
- return
compilationUnitContext2PackageDescr(drlParser.compilationUnit(),
drlParser.getTokenStream());
+ return
compilationUnitContext2PackageDescr(drlParser.compilationUnit(),
drlParser.getTokenStream(), null);
}
public static DRLParser createDrlParser(String drl) {
@@ -89,8 +90,8 @@ public class DRLParserHelper {
/**
* DRLVisitorImpl visits a parse tree and creates a PackageDescr
*/
- public static PackageDescr
compilationUnitContext2PackageDescr(DRLParser.CompilationUnitContext ctx,
TokenStream tokenStream) {
- DRLVisitorImpl visitor = new DRLVisitorImpl(tokenStream);
+ public static PackageDescr
compilationUnitContext2PackageDescr(DRLParser.CompilationUnitContext ctx,
TokenStream tokenStream, Resource resource) {
+ DRLVisitorImpl visitor = new DRLVisitorImpl(tokenStream, resource);
Object descr = visitor.visit(ctx);
if (descr instanceof PackageDescr) {
return (PackageDescr) descr;
diff --git
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserWrapper.java
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserWrapper.java
index e2f8ee9960..e89ad66919 100644
---
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserWrapper.java
+++
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLParserWrapper.java
@@ -25,6 +25,7 @@ import java.util.List;
import java.util.stream.Collectors;
import org.drools.drl.ast.descr.PackageDescr;
+import org.kie.api.io.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -39,6 +40,12 @@ public class DRLParserWrapper {
private final List<DRLParserError> errors = new ArrayList<>();
+ private final Resource resource;
+
+ public DRLParserWrapper(Resource resource) {
+ this.resource = resource;
+ }
+
/**
* Main entry point for parsing DRL
*/
@@ -72,7 +79,7 @@ public class DRLParserWrapper {
errors.addAll(errorListener.getErrors());
try {
- return compilationUnitContext2PackageDescr(cxt,
drlParser.getTokenStream());
+ return compilationUnitContext2PackageDescr(cxt,
drlParser.getTokenStream(), resource);
} catch (Exception e) {
LOGGER.error("Exception while creating PackageDescr", e);
errors.add(new DRLParserError(e));
diff --git
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
index cefce9921c..47d1b40bf9 100644
---
a/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
+++
b/drools-drl/drools-drl-parser/src/main/java/org/drools/drl/parser/antlr4/DRLVisitorImpl.java
@@ -65,6 +65,7 @@ import org.drools.drl.ast.descr.TypeFieldDescr;
import org.drools.drl.ast.descr.UnitDescr;
import org.drools.drl.ast.descr.WindowDeclarationDescr;
import org.drools.drl.ast.descr.WindowReferenceDescr;
+import org.kie.api.io.Resource;
import static
org.drools.drl.parser.antlr4.Antlr4ParserStringUtils.extractNamedConsequenceName;
import static
org.drools.drl.parser.antlr4.Antlr4ParserStringUtils.getTextPreservingWhitespace;
@@ -83,9 +84,11 @@ import static org.drools.util.StringUtils.unescapeJava;
public class DRLVisitorImpl extends DRLParserBaseVisitor<Object> {
private final TokenStream tokenStream;
+ private final Resource resource;
- public DRLVisitorImpl(TokenStream tokenStream) {
+ public DRLVisitorImpl(TokenStream tokenStream, Resource resource) {
this.tokenStream = tokenStream;
+ this.resource = resource;
}
/**
@@ -95,6 +98,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public PackageDescr visitCompilationUnit(DRLParser.CompilationUnitContext
ctx) {
PackageDescr packageDescr = BaseDescrFactory.builder(new
PackageDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.packagedef() != null) {
packageDescr.setName(getTextWithoutErrorNode(ctx.packagedef().name));
@@ -158,6 +162,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public UnitDescr visitUnitdef(DRLParser.UnitdefContext ctx) {
return BaseDescrFactory.builder(new UnitDescr(ctx.name.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
}
@@ -170,6 +175,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public GlobalDescr visitGlobaldef(DRLParser.GlobaldefContext ctx) {
return BaseDescrFactory.builder(new
GlobalDescr(ctx.drlIdentifier().getText(), ctx.type().getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
}
@@ -179,12 +185,14 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
if (ctx.DRL_FUNCTION() != null || ctx.STATIC() != null) {
FunctionImportDescr functionImportDescr =
BaseDescrFactory.builder(new FunctionImportDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
functionImportDescr.setTarget(target);
return functionImportDescr;
} else {
ImportDescr importDescr = BaseDescrFactory.builder(new
ImportDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
importDescr.setTarget(target);
return importDescr;
@@ -195,6 +203,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public AccumulateImportDescr
visitImportAccumulateDef(DRLParser.ImportAccumulateDefContext ctx) {
AccumulateImportDescr accumulateImportDescr =
BaseDescrFactory.builder(new AccumulateImportDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
accumulateImportDescr.setTarget(ctx.drlQualifiedName().getText());
accumulateImportDescr.setFunctionName(ctx.drlIdentifier().getText());
@@ -205,6 +214,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public FunctionDescr visitFunctiondef(DRLParser.FunctiondefContext ctx) {
FunctionDescr functionDescr = BaseDescrFactory.builder(new
FunctionDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.typeTypeOrVoid() != null) {
functionDescr.setReturnType(getTextPreservingWhitespace(ctx.typeTypeOrVoid()));
@@ -237,6 +247,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public TypeDeclarationDescr
visitTypeDeclaration(DRLParser.TypeDeclarationContext ctx) {
TypeDeclarationDescr typeDeclarationDescr =
BaseDescrFactory.builder(new TypeDeclarationDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
typeDeclarationDescr.setTypeName(ctx.name.getText());
@@ -262,6 +273,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public EnumDeclarationDescr
visitEnumDeclaration(DRLParser.EnumDeclarationContext ctx) {
EnumDeclarationDescr enumDeclarationDescr =
BaseDescrFactory.builder(new EnumDeclarationDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
enumDeclarationDescr.setTypeName(ctx.name.getText());
@@ -286,6 +298,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public EnumLiteralDescr visitEnumerative(DRLParser.EnumerativeContext ctx)
{
EnumLiteralDescr enumLiteralDescr = BaseDescrFactory.builder(new
EnumLiteralDescr(ctx.drlIdentifier().getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
ctx.expression().stream()
.map(Antlr4ParserStringUtils::getTextPreservingWhitespace)
@@ -297,6 +310,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public EntryPointDeclarationDescr
visitEntryPointDeclaration(DRLParser.EntryPointDeclarationContext ctx) {
EntryPointDeclarationDescr entryPointDeclarationDescr =
BaseDescrFactory.builder(new EntryPointDeclarationDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
entryPointDeclarationDescr.setEntryPointId(safeStripStringDelimiters(ctx.name.getText()));
ctx.drlAnnotation().stream()
@@ -309,6 +323,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public WindowDeclarationDescr
visitWindowDeclaration(DRLParser.WindowDeclarationContext ctx) {
WindowDeclarationDescr windowDeclarationDescr =
BaseDescrFactory.builder(new WindowDeclarationDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
windowDeclarationDescr.setName(ctx.name.getText());
ctx.drlAnnotation().stream()
@@ -325,6 +340,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public RuleDescr visitRuledef(DRLParser.RuledefContext ctx) {
RuleDescr ruleDescr = BaseDescrFactory.builder(new
RuleDescr(safeStripStringDelimiters(ctx.name.getText())))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.EXTENDS() != null) {
@@ -359,7 +375,9 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
lhsDescrList.forEach(rootDescr::addOrMerge);
DescrHelper.populateCommonProperties(rootDescr,
ctx.lhs().lhsExpression());
} else {
- ruleDescr.setLhs(new AndDescr());
+ ruleDescr.setLhs(BaseDescrFactory.builder(new AndDescr())
+ .withResource(resource)
+ .build());
}
if (ctx.rhs() != null) {
@@ -383,6 +401,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public QueryDescr visitQuerydef(DRLParser.QuerydefContext ctx) {
QueryDescr queryDescr = BaseDescrFactory.builder(new
QueryDescr(safeStripStringDelimiters(ctx.name.getText())))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
DRLParser.ParametersContext parametersContext = ctx.parameters();
@@ -414,12 +433,14 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
}
return BaseDescrFactory.builder(ctx.anno.result)
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
}
// A chunk that is neither a single value nor a list of key-value
pairs. For example `!*, age` in `@watch(!*, age)`.
AnnotationDescr annotationDescr = BaseDescrFactory.builder(new
AnnotationDescr(ctx.name.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.chunk() != null) {
annotationDescr.setValue(getTextPreservingWhitespace(ctx.chunk()));
@@ -431,6 +452,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public TypeFieldDescr visitField(DRLParser.FieldContext ctx) {
TypeFieldDescr typeFieldDescr = BaseDescrFactory.builder(new
TypeFieldDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
typeFieldDescr.setFieldName(ctx.label().drlIdentifier().getText());
typeFieldDescr.setPattern(new PatternDescr(ctx.type().getText()));
@@ -447,6 +469,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public AttributeDescr
visitExpressionAttribute(DRLParser.ExpressionAttributeContext ctx) {
AttributeDescr attributeDescr = BaseDescrFactory.builder(new
AttributeDescr(ctx.name.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
attributeDescr.setValue(getTextPreservingWhitespace(ctx.conditionalAttributeValue()));
attributeDescr.setType(AttributeDescr.Type.EXPRESSION);
@@ -457,6 +480,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public AttributeDescr
visitBooleanAttribute(DRLParser.BooleanAttributeContext ctx) {
AttributeDescr attributeDescr = BaseDescrFactory.builder(new
AttributeDescr(ctx.name.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
attributeDescr.setValue(ctx.BOOL_LITERAL() != null ?
ctx.BOOL_LITERAL().getText() : "true");
attributeDescr.setType(AttributeDescr.Type.BOOLEAN);
@@ -467,6 +491,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public AttributeDescr
visitStringAttribute(DRLParser.StringAttributeContext ctx) {
AttributeDescr attributeDescr = BaseDescrFactory.builder(new
AttributeDescr(ctx.name.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
attributeDescr.setValue(unescapeJava(safeStripStringDelimiters(ctx.DRL_STRING_LITERAL().getText())));
attributeDescr.setType(AttributeDescr.Type.STRING);
@@ -477,6 +502,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public AttributeDescr
visitStringListAttribute(DRLParser.StringListAttributeContext ctx) {
AttributeDescr attributeDescr = BaseDescrFactory.builder(new
AttributeDescr(ctx.name.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
List<String> valueList = ctx.DRL_STRING_LITERAL().stream()
.map(ParseTree::getText)
@@ -503,6 +529,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public AttributeDescr
visitIntOrChunkAttribute(DRLParser.IntOrChunkAttributeContext ctx) {
AttributeDescr attributeDescr = BaseDescrFactory.builder(new
AttributeDescr(ctx.name.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.DECIMAL_LITERAL() != null) {
attributeDescr.setValue(ctx.DECIMAL_LITERAL().getText());
@@ -557,6 +584,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
private OrDescr
getOrDescrWithMultiplePatternDescr(DRLParser.LhsPatternBindContext ctx) {
OrDescr orDescr = BaseDescrFactory.builder(new OrDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
List<BaseDescr> descrList = visitDescrChildren(ctx);
descrList.stream()
@@ -581,11 +609,13 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
String constraint = visitConstraintChildren(ctx);
ExprConstraintDescr constraintDescr = BaseDescrFactory.builder(new
ExprConstraintDescr(constraint))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
constraintDescr.setType(ExprConstraintDescr.Type.NAMED);
constraintDescr.setPosition(0);
PatternDescr patternDescr = BaseDescrFactory.builder(new
PatternDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
patternDescr.addConstraint(constraintDescr);
return patternDescr;
@@ -593,6 +623,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
PatternDescr patternDescr = BaseDescrFactory.builder(new
PatternDescr(ctx.objectType.getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.QUESTION() != null) {
patternDescr.setQuery(true);
@@ -621,6 +652,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public NamedConsequenceDescr
visitNamedConsequenceInvocation(DRLParser.NamedConsequenceInvocationContext
ctx) {
NamedConsequenceDescr namedConsequenceDescr =
BaseDescrFactory.builder(new
NamedConsequenceDescr(ctx.drlIdentifier().getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
return namedConsequenceDescr;
}
@@ -629,6 +661,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public NamedConsequenceDescr
visitBreakingNamedConsequenceInvocation(DRLParser.BreakingNamedConsequenceInvocationContext
ctx) {
NamedConsequenceDescr namedConsequenceDescr =
BaseDescrFactory.builder(new
NamedConsequenceDescr(ctx.drlIdentifier().getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
namedConsequenceDescr.setBreaking(true);
return namedConsequenceDescr;
@@ -645,9 +678,11 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public ConditionalBranchDescr
visitConditionalBranch(DRLParser.ConditionalBranchContext ctx) {
ConditionalBranchDescr conditionalBranchDescr =
BaseDescrFactory.builder(new ConditionalBranchDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
EvalDescr evalDescr = BaseDescrFactory.builder(new EvalDescr())
.withParserRuleContext(ctx.conditionalOrExpression())
+ .withResource(resource)
.build();
evalDescr.setContent(getTextPreservingWhitespace(ctx.conditionalOrExpression()));
conditionalBranchDescr.setCondition(evalDescr);
@@ -665,6 +700,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
if (ctx.do2 != null) {
ConditionalBranchDescr elseBranchDescr =
BaseDescrFactory.builder(new ConditionalBranchDescr())
.withParserRuleContext(ctx.do2)
+ .withResource(resource)
.build();
conditionalBranchDescr.setElseBranch(elseBranchDescr);
NamedConsequenceDescr namedConsequenceDescr =
visitNamedConsequenceInvocation(ctx.do2);
@@ -672,6 +708,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
} else if (ctx.break2 != null) {
ConditionalBranchDescr elseBranchDescr =
BaseDescrFactory.builder(new ConditionalBranchDescr())
.withParserRuleContext(ctx.break2)
+ .withResource(resource)
.build();
conditionalBranchDescr.setElseBranch(elseBranchDescr);
NamedConsequenceDescr namedConsequenceDescr =
visitBreakingNamedConsequenceInvocation(ctx.break2);
@@ -689,6 +726,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public ForallDescr visitLhsForall(DRLParser.LhsForallContext ctx) {
ForallDescr forallDescr = BaseDescrFactory.builder(new ForallDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
visitDescrChildren(ctx).forEach(forallDescr::addDescr);
return forallDescr;
@@ -698,6 +736,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public PatternDescr visitLhsAccumulate(DRLParser.LhsAccumulateContext ctx)
{
AccumulateDescr accumulateDescr = BaseDescrFactory.builder(new
AccumulateDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
// accumulateDescr.input is always AndDescr
accumulateDescr.setInput(wrapWithAndDescr(visitLhsAndDef(ctx.lhsAndDef()),
ctx.lhsAndDef()));
@@ -707,7 +746,9 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
accumulateDescr.addFunction(visitAccumulateFunction(accumulateFunctionContext));
}
- PatternDescr patternDescr = new PatternDescr("Object");
+ PatternDescr patternDescr = BaseDescrFactory.builder(new
PatternDescr("Object"))
+ .withResource(resource)
+ .build();
patternDescr.setSource(accumulateDescr);
List<ExprConstraintDescr> constraintDescrList =
visitConstraints(ctx.constraints());
constraintDescrList.forEach(patternDescr::addConstraint);
@@ -731,6 +772,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public Object visitLhsGroupBy(DRLParser.LhsGroupByContext ctx) {
GroupByDescr groupByDescr = BaseDescrFactory.builder(new
GroupByDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
groupByDescr.setInput(visitLhsAndDef(ctx.lhsAndDef()));
@@ -744,7 +786,9 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
groupByDescr.addFunction(visitAccumulateFunction(accumulateFunctionContext));
}
- PatternDescr patternDescr = new PatternDescr("Object");
+ PatternDescr patternDescr = BaseDescrFactory.builder(new
PatternDescr("Object"))
+ .withResource(resource)
+ .build();
patternDescr.setSource(groupByDescr);
List<ExprConstraintDescr> constraintDescrList =
visitConstraints(ctx.constraints());
constraintDescrList.forEach(patternDescr::addConstraint);
@@ -756,6 +800,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public BehaviorDescr visitPatternFilter(DRLParser.PatternFilterContext
ctx) {
BehaviorDescr behaviorDescr = BaseDescrFactory.builder(new
BehaviorDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
behaviorDescr.setType(ctx.DRL_WINDOW().getText());
behaviorDescr.setSubType(ctx.drlIdentifier().getText());
@@ -769,6 +814,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public FromDescr visitFromExpression(DRLParser.FromExpressionContext ctx) {
FromDescr fromDescr = BaseDescrFactory.builder(new FromDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
fromDescr.setDataSource(new
MVELExprDescr(getTextPreservingWhitespace(ctx)));
return fromDescr;
@@ -778,6 +824,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public CollectDescr visitFromCollect(DRLParser.FromCollectContext ctx) {
CollectDescr collectDescr = BaseDescrFactory.builder(new
CollectDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
collectDescr.setInputPattern((PatternDescr)
visitLhsPatternBind(ctx.lhsPatternBind()));
return collectDescr;
@@ -787,6 +834,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public AccumulateDescr visitFromAccumulate(DRLParser.FromAccumulateContext
ctx) {
AccumulateDescr accumulateDescr = BaseDescrFactory.builder(new
AccumulateDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
// accumulateDescr.input is always AndDescr
accumulateDescr.setInput(wrapWithAndDescr(visitLhsAndDef(ctx.lhsAndDef()),
ctx.lhsAndDef()));
@@ -827,6 +875,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public EntryPointDescr visitFromEntryPoint(DRLParser.FromEntryPointContext
ctx) {
return BaseDescrFactory.builder(new
EntryPointDescr(safeStripStringDelimiters(ctx.stringId().getText())))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
}
@@ -834,6 +883,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public WindowReferenceDescr visitFromWindow(DRLParser.FromWindowContext
ctx) {
return BaseDescrFactory.builder(new
WindowReferenceDescr(ctx.drlIdentifier().getText()))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
}
@@ -887,8 +937,9 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
String constraint = visitConstraintChildren(ctx);
if (!constraint.isEmpty()) {
ExprConstraintDescr constraintDescr = BaseDescrFactory.builder(new
ExprConstraintDescr(constraint))
- .withParserRuleContext(ctx)
- .build();
+ .withParserRuleContext(ctx)
+ .withResource(resource)
+ .build();
constraintDescr.setType(ExprConstraintDescr.Type.NAMED);
descrList.add(constraintDescr);
return descrList;
@@ -922,6 +973,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public ExistsDescr visitLhsExists(DRLParser.LhsExistsContext ctx) {
ExistsDescr existsDescr = BaseDescrFactory.builder(new ExistsDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.lhsExpression() != null) {
// exists( A() or B() )
@@ -943,6 +995,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public NotDescr visitLhsNot(DRLParser.LhsNotContext ctx) {
NotDescr notDescr = BaseDescrFactory.builder(new NotDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
if (ctx.lhsExpression() != null) {
// not ( A() or B() )
@@ -964,6 +1017,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
public EvalDescr visitLhsEval(DRLParser.LhsEvalContext ctx) {
return BaseDescrFactory.builder(new
EvalDescr(getTextPreservingWhitespace(ctx.conditionalOrExpression())))
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
}
@@ -982,8 +1036,9 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
return descrList.get(0).getDescr();
} else {
OrDescr orDescr = BaseDescrFactory.builder(new OrDescr())
- .withParserRuleContext(ctx)
- .build();
+ .withParserRuleContext(ctx)
+ .withResource(resource)
+ .build();
// For example, in case of A() or B() or C(),
// Parser creates AST like this:
// lhsOr
@@ -1033,8 +1088,9 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
return descrList.get(0).getDescr();
} else {
AndDescr andDescr = BaseDescrFactory.builder(new AndDescr())
- .withParserRuleContext(ctx)
- .build();
+ .withParserRuleContext(ctx)
+ .withResource(resource)
+ .build();
// For example, in case of A() and B() and C(),
// Parser creates AST like this:
// lhsAnd
@@ -1083,6 +1139,7 @@ public class DRLVisitorImpl extends
DRLParserBaseVisitor<Object> {
// lhsUnary may have multiple children e.g. consequenceInvocation,
connect with AND
AndDescr andDescr = BaseDescrFactory.builder(new AndDescr())
.withParserRuleContext(ctx)
+ .withResource(resource)
.build();
children.forEach(andDescr::addDescr);
return andDescr;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]