You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2015/06/08 18:12:31 UTC
svn commit: r1684216 - in
/ofbiz/trunk/framework/base/src/org/ofbiz/base/util: StringUtil.java
test/StringUtilTests.java
Author: adrianc
Date: Mon Jun 8 16:12:30 2015
New Revision: 1684216
URL: http://svn.apache.org/r1684216
Log:
Fix a thread-safety issue. Trivial unit test changes.
Modified:
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java
ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/StringUtilTests.java
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java?rev=1684216&r1=1684215&r2=1684216&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/StringUtil.java Mon Jun 8 16:12:30 2015
@@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingExcept
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
@@ -45,17 +46,17 @@ public class StringUtil {
public static final StringUtil INSTANCE = new StringUtil();
public static final String module = StringUtil.class.getName();
- // FIXME: Not thread safe
- protected static final Map<String, Pattern> substitutionPatternMap;
+ private static final Map<String, Pattern> substitutionPatternMap = createSubstitutionPatternMap();
- static {
- substitutionPatternMap = new LinkedHashMap<String, Pattern>();
+ private static Map<String, Pattern> createSubstitutionPatternMap() {
+ Map<String, Pattern> substitutionPatternMap = new LinkedHashMap<String, Pattern>(); // Preserve insertion order
substitutionPatternMap.put("&&", Pattern.compile("@and", Pattern.LITERAL));
substitutionPatternMap.put("||", Pattern.compile("@or", Pattern.LITERAL));
substitutionPatternMap.put("<=", Pattern.compile("@lteq", Pattern.LITERAL));
substitutionPatternMap.put(">=", Pattern.compile("@gteq", Pattern.LITERAL));
substitutionPatternMap.put("<", Pattern.compile("@lt", Pattern.LITERAL));
substitutionPatternMap.put(">", Pattern.compile("@gt", Pattern.LITERAL));
+ return Collections.unmodifiableMap(substitutionPatternMap);
}
private StringUtil() {
@@ -523,7 +524,7 @@ public class StringUtil {
*/
public static String convertOperatorSubstitutions(String expression) {
String result = expression;
- if (result != null && (result.contains("@") || result.contains("'"))) {
+ if (result != null && (result.contains("@"))) {
for (Map.Entry<String, Pattern> entry: substitutionPatternMap.entrySet()) {
Pattern pattern = entry.getValue();
result = pattern.matcher(result).replaceAll(entry.getKey());
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/StringUtilTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/StringUtilTests.java?rev=1684216&r1=1684215&r2=1684216&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/StringUtilTests.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/StringUtilTests.java Mon Jun 8 16:12:30 2015
@@ -263,9 +263,9 @@ public class StringUtilTests extends Gen
}
public void testConvertOperatorSubstitutions() {
- assertNull("null pass-thrue", StringUtil.convertOperatorSubstitutions(null));
+ assertNull("null pass-thru", StringUtil.convertOperatorSubstitutions(null));
assertEquals("none", "abc", StringUtil.convertOperatorSubstitutions("abc"));
- assertEquals("noe", "a'c", StringUtil.convertOperatorSubstitutions("a'c"));
+ assertEquals("none", "a'c", StringUtil.convertOperatorSubstitutions("a'c"));
assertEquals("all converions", "one && two || three > four >= five < six <= seven", StringUtil.convertOperatorSubstitutions("one @and two @or three @gt four @gteq five @lt six @lteq seven"));
}