diff options
author | Benoit Foucher <benoit@zeroc.com> | 2009-12-20 23:00:17 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2009-12-20 23:00:17 +0100 |
commit | 1bfce436ef24da5886a752f906628472ceb60a96 (patch) | |
tree | ae4fc9bac597df81b4855a0fadbde552c978bbbf /java/src | |
parent | edits to CHANGES & RELEASE_NOTES (diff) | |
download | ice-1bfce436ef24da5886a752f906628472ceb60a96.tar.bz2 ice-1bfce436ef24da5886a752f906628472ceb60a96.tar.xz ice-1bfce436ef24da5886a752f906628472ceb60a96.zip |
Fixed bug 4514 - Ice/facets test failure
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/Ice/PropertiesI.java | 61 | ||||
-rw-r--r-- | java/src/IceUtilInternal/StringUtil.java | 66 |
2 files changed, 67 insertions, 60 deletions
diff --git a/java/src/Ice/PropertiesI.java b/java/src/Ice/PropertiesI.java index 70682ee2a50..fcdba281f71 100644 --- a/java/src/Ice/PropertiesI.java +++ b/java/src/Ice/PropertiesI.java @@ -106,7 +106,7 @@ public final class PropertiesI implements Properties { pv.used = true; - String[] result = splitString(pv.value, ", \t\r\n"); + String[] result = IceUtilInternal.StringUtil.splitString(pv.value, ", \t\r\n"); if(result == null) { Ice.Util.getProcessLogger().warning("mismatched quotes in property " + key @@ -715,64 +715,5 @@ public final class PropertiesI implements Properties _properties.put("Ice.Config", new PropertyValue(value, true)); } - // - // Split string helper; returns null for unmatched quotes - // - private String[] - splitString(String str, String delim) - { - java.util.List<String> l = new java.util.ArrayList<String>(); - char[] arr = new char[str.length()]; - int pos = 0; - - while(pos < str.length()) - { - int n = 0; - char quoteChar = '\0'; - if(str.charAt(pos) == '"' || str.charAt(pos) == '\'') - { - quoteChar = str.charAt(pos); - ++pos; - } - while(pos < str.length()) - { - if(quoteChar != '\0' && str.charAt(pos) == '\\' && pos + 1 < str.length() && - str.charAt(pos + 1) == quoteChar) - { - ++pos; - } - else if(quoteChar != '\0' && str.charAt(pos) == quoteChar) - { - ++pos; - quoteChar = '\0'; - break; - } - else if(delim.indexOf(str.charAt(pos)) != -1) - { - if(quoteChar == '\0') - { - ++pos; - break; - } - } - - if(pos < str.length()) - { - arr[n++] = str.charAt(pos++); - } - } - if(quoteChar != '\0') - { - return null; // Unmatched quote. - } - if(n > 0) - { - l.add(new String(arr, 0, n)); - } - } - - return (String[])l.toArray(new String[0]); - } - private java.util.HashMap<String, PropertyValue> _properties = new java.util.HashMap<String, PropertyValue>(); } diff --git a/java/src/IceUtilInternal/StringUtil.java b/java/src/IceUtilInternal/StringUtil.java index 137bb234e06..dfbb095673f 100644 --- a/java/src/IceUtilInternal/StringUtil.java +++ b/java/src/IceUtilInternal/StringUtil.java @@ -386,6 +386,72 @@ public final class StringUtil return s.toString(); } + // + // Split string helper; returns null for unmatched quotes + // + static public String[] + splitString(String str, String delim) + { + java.util.List<String> l = new java.util.ArrayList<String>(); + char[] arr = new char[str.length()]; + int pos = 0; + + int n = 0; + char quoteChar = '\0'; + while(pos < str.length()) + { + if(quoteChar == '\0' && (str.charAt(pos) == '"' || str.charAt(pos) == '\'')) + { + quoteChar = str.charAt(pos++); + continue; // Skip the quote. + } + else if(quoteChar == '\0' && str.charAt(pos) == '\\' && pos + 1 < str.length() && + (str.charAt(pos + 1) == '"' || str.charAt(pos + 1) == '\'')) + { + ++pos; // Skip the backslash + } + else if(quoteChar != '\0' && str.charAt(pos) == '\\' && pos + 1 < str.length() && + str.charAt(pos + 1) == quoteChar) + { + ++pos; // Skip the backslash + } + else if(quoteChar != '\0' && str.charAt(pos) == quoteChar) + { + ++pos; + quoteChar = '\0'; + continue; // Skip the quote. + } + else if(delim.indexOf(str.charAt(pos)) != -1) + { + if(quoteChar == '\0') + { + ++pos; + if(n > 0) + { + l.add(new String(arr, 0, n)); + n = 0; + } + continue; + } + } + + if(pos < str.length()) + { + arr[n++] = str.charAt(pos++); + } + } + + if(n > 0) + { + l.add(new String(arr, 0, n)); + } + if(quoteChar != '\0') + { + return null; // Unmatched quote. + } + return (String[])l.toArray(new String[0]); + } + public static int checkQuote(String s) { |