From 3c2027f52a444c58f0c34b34aaf146b57da7907f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Locker?= Date: Thu, 21 Mar 2024 11:55:18 +0100 Subject: [PATCH] Enable time literal --- .../drl/parser/antlr4/MiscDRLParserTest.java | 23 +++++++++++++++++++ .../org/drools/drl/parser/antlr4/DRLParser.g4 | 1 + 2 files changed, 24 insertions(+) diff --git a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java index ebc86082aa79..f996d25d5a46 100644 --- a/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java +++ b/drools-drl/drools-drl-parser-tests/src/test/java/org/drools/drl/parser/antlr4/MiscDRLParserTest.java @@ -3749,10 +3749,33 @@ void lhsPatternAnnotation() { "then\n" + "end\n"; PackageDescr packageDescr = parser.parse(text); + assertThat(parser.hasErrors()).as(parser.getErrors().toString()).isFalse(); + RuleDescr ruleDescr = packageDescr.getRules().get(0); PatternDescr patternDescr = (PatternDescr) ruleDescr.getLhs().getDescrs().get(0); AnnotationDescr annotationDescr = patternDescr.getAnnotations().iterator().next(); + assertThat(annotationDescr.getName()).isEqualTo("watch"); assertThat(annotationDescr.getSingleValueAsString()).isEqualTo("!*, age"); } + + @Test + public void testExpires() { + String text = "package org.drools\n" + + "declare StockFact\n" + + " @role( value = event )\n" + + " @expires( value = 2s, policy = TIME_SOFT )\n" + + "end"; + + PackageDescr packageDescr = parser.parse(text); + assertThat(parser.hasErrors()).as(parser.getErrors().toString()).isFalse(); + + AnnotationDescr annotationDescr = packageDescr + .getTypeDeclarations().get(0) + .getAnnotation("expires"); + + assertThat(annotationDescr.getSingleValueAsString()).isEqualTo("2s"); + assertThat(annotationDescr.getValueAsString("value")).isEqualTo("2s"); + assertThat(annotationDescr.getValueAsString("policy")).isEqualTo("TIME_SOFT"); + } } diff --git a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4 b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4 index a218c069b117..fab8ee8fac01 100644 --- a/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4 +++ b/drools-drl/drools-drl-parser/src/main/antlr4/org/drools/drl/parser/antlr4/DRLParser.g4 @@ -321,6 +321,7 @@ drlLiteral | BOOL_LITERAL | NULL_LITERAL | TEXT_BLOCK // Java17 + | TIME_INTERVAL ; inlineListExpression