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