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;
+		}
 	}
 }