You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2019/07/09 18:38:45 UTC
[juneau] branch master updated: JUNEAU-125 Use
StringUtils.getMatchPattern() consistently throughout code.
This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new a945149 JUNEAU-125 Use StringUtils.getMatchPattern() consistently throughout code.
a945149 is described below
commit a945149f79230cdf3826bcfc15d6110a79a8ec28
Author: JamesBognar <ja...@apache.org>
AuthorDate: Tue Jul 9 14:38:32 2019 -0400
JUNEAU-125 Use StringUtils.getMatchPattern() consistently throughout
code.
---
.../main/java/org/apache/juneau/internal/StringUtils.java | 15 ++++++++++++++-
.../org/apache/juneau/pojotools/NumberMatcherFactory.java | 7 +++++++
.../org/apache/juneau/pojotools/StringMatcherFactory.java | 9 ++++++++-
3 files changed, 29 insertions(+), 2 deletions(-)
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 @@ public final class StringUtils {
* @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 @@ public final class StringUtils {
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 @@ public class NumberMatcherFactory extends MatcherFactory {
*/
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 class NumberMatcherFactory extends MatcherFactory {
public NumberMatcher(String s) {
s = s.trim();
+ pattern = s;
List<NumberRange> l = new LinkedList<>();
@@ -241,6 +243,11 @@ public class NumberMatcherFactory extends MatcherFactory {
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 @@ public class StringMatcherFactory extends MatcherFactory {
* 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 class StringMatcherFactory extends MatcherFactory {
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 @@ public class StringMatcherFactory extends MatcherFactory {
return true;
return orPatterns.length == 0;
}
+
+ @Override
+ public String toString() {
+ return pattern;
+ }
}
}