--- a/jdk/src/share/classes/javax/management/MatchQueryExp.java Fri Feb 29 20:04:01 2008 -0800
+++ b/jdk/src/share/classes/javax/management/MatchQueryExp.java Mon Mar 03 10:32:38 2008 +0100
@@ -113,7 +113,32 @@
}
private static String likeTranslate(String s) {
- return s.replace('?', '_').replace('*', '%');
+ StringBuilder sb = new StringBuilder();
+ int c;
+ for (int i = 0; i < s.length(); i += Character.charCount(c)) {
+ c = s.codePointAt(i);
+ switch (c) {
+ case '\\':
+ i += Character.charCount(c);
+ sb.append('\\');
+ if (i < s.length()) {
+ c = s.codePointAt(i);
+ sb.appendCodePoint(c);
+ }
+ break;
+ case '*':
+ sb.append('%'); break;
+ case '?':
+ sb.append('_'); break;
+ case '%':
+ sb.append("\\%"); break;
+ case '_':
+ sb.append("\\_"); break;
+ default:
+ sb.appendCodePoint(c); break;
+ }
+ }
+ return sb.toString();
}
/*