JUNEAU-125 Use StringUtils.getMatchPattern() consistently throughout
code.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index cb82e36..618cad1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -2538,6 +2538,17 @@
* @return A regular expression pattern.
*/
public static Pattern getMatchPattern(String s) {
+ return getMatchPattern(s, 0);
+ }
+
+ /**
+ * Converts a string containing <js>"*"</js> meta characters with a regular expression pattern.
+ *
+ * @param s The string to create a pattern from.
+ * @param flags Regular expression flags.
+ * @return A regular expression pattern.
+ */
+ public static Pattern getMatchPattern(String s, int flags) {
if (s == null)
return null;
StringBuilder sb = new StringBuilder();
@@ -2546,11 +2557,13 @@
char c = s.charAt(i);
if (c == '*')
sb.append("\\E").append(".*").append("\\Q");
+ else if (c == '?')
+ sb.append("\\E").append(".").append("\\Q");
else
sb.append(c);
}
sb.append("\\E");
- return Pattern.compile(sb.toString());
+ return Pattern.compile(sb.toString(), flags);
}
/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/NumberMatcherFactory.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/NumberMatcherFactory.java
index 0600397..567b645 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/NumberMatcherFactory.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/NumberMatcherFactory.java
@@ -45,6 +45,7 @@
*/
private static class NumberMatcher extends Matcher {
NumberRange[] numberRanges;
+ String pattern;
private static final AsciiSet
SNUM = AsciiSet.create("-0123456789."),
NUM = AsciiSet.create("0123456789."),
@@ -53,6 +54,7 @@
public NumberMatcher(String s) {
s = s.trim();
+ pattern = s;
List<NumberRange> l = new LinkedList<>();
@@ -241,6 +243,11 @@
return true;
return false;
}
+
+ @Override /* Object */
+ public String toString() {
+ return pattern;
+ }
}
/**
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/StringMatcherFactory.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/StringMatcherFactory.java
index 2e63d6f..06db379 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/StringMatcherFactory.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/pojotools/StringMatcherFactory.java
@@ -45,6 +45,7 @@
* A construct representing a single search pattern.
*/
private static class StringMatcher extends Matcher {
+ private String pattern;
private static final AsciiSet
META_CHARS = AsciiSet.create("*?'\""),
SQ_CHAR = AsciiSet.create("'"),
@@ -55,11 +56,12 @@
public StringMatcher(String searchPattern) {
+ this.pattern = searchPattern.trim();
List<Pattern> ors = new LinkedList<>();
List<Pattern> ands = new LinkedList<>();
List<Pattern> nots = new LinkedList<>();
- for (String s : splitQuoted(searchPattern, true)) {
+ for (String s : splitQuoted(pattern, true)) {
char c0 = s.charAt(0), c9 = s.charAt(s.length()-1);
if (c0 == '/' && c9 == '/' && s.length() > 1) {
@@ -141,5 +143,10 @@
return true;
return orPatterns.length == 0;
}
+
+ @Override
+ public String toString() {
+ return pattern;
+ }
}
}