This is an automated email from the ASF dual-hosted git repository. henrib pushed a commit to branch JEXL-175 in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
commit 426c282eed8aebc7ea0d729b2c3c884a7defbab2 Author: Dmitri Blinov <[email protected]> AuthorDate: Thu Sep 13 08:56:27 2018 +0300 Regex literal to be parse-time constant --- .../java/org/apache/commons/jexl3/internal/Debugger.java | 2 +- .../org/apache/commons/jexl3/internal/Interpreter.java | 2 +- .../org/apache/commons/jexl3/parser/ASTRegexLiteral.java | 16 ++++++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/apache/commons/jexl3/internal/Debugger.java b/src/main/java/org/apache/commons/jexl3/internal/Debugger.java index 5a57fc0..ef93a59 100644 --- a/src/main/java/org/apache/commons/jexl3/internal/Debugger.java +++ b/src/main/java/org/apache/commons/jexl3/internal/Debugger.java @@ -908,7 +908,7 @@ public class Debugger extends ParserVisitor implements JexlInfo.Detail { @Override protected Object visit(ASTRegexLiteral node, Object data) { - String img = node.getLiteral().replace("/", "\\/"); + String img = node.toString().replace("/", "\\/"); return check(node, "~/" + img + "/", data); } diff --git a/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java b/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java index 5098b9c..5979570 100644 --- a/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java +++ b/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java @@ -792,7 +792,7 @@ public class Interpreter extends InterpreterBase { @Override protected Object visit(ASTRegexLiteral node, Object data) { - return Pattern.compile(node.getLiteral()); + return node.getLiteral(); } @Override diff --git a/src/main/java/org/apache/commons/jexl3/parser/ASTRegexLiteral.java b/src/main/java/org/apache/commons/jexl3/parser/ASTRegexLiteral.java index 30d4dc8..75ce44f 100644 --- a/src/main/java/org/apache/commons/jexl3/parser/ASTRegexLiteral.java +++ b/src/main/java/org/apache/commons/jexl3/parser/ASTRegexLiteral.java @@ -16,9 +16,13 @@ */ package org.apache.commons.jexl3.parser; -public final class ASTRegexLiteral extends JexlNode implements JexlNode.Constant<String> { +import java.util.regex.Pattern; + +public final class ASTRegexLiteral extends JexlNode implements JexlNode.Constant<Pattern> { + /** The actual literal value; the inherited 'value' member may host a cached getter. */ - private String literal = null; + + private Pattern literal = null; ASTRegexLiteral(int id) { super(id); @@ -30,15 +34,15 @@ public final class ASTRegexLiteral extends JexlNode implements JexlNode.Constant @Override public String toString() { - return this.literal; + return literal != null ? literal.toString() : ""; } /** * Gets the literal value. - * @return the string literal + * @return the Pattern literal */ @Override - public String getLiteral() { + public Pattern getLiteral() { return this.literal; } @@ -48,7 +52,7 @@ public final class ASTRegexLiteral extends JexlNode implements JexlNode.Constant } void setLiteral(String literal) { - this.literal = literal; + this.literal = Pattern.compile(literal); } @Override
