jdk/src/share/classes/javax/management/MatchQueryExp.java
changeset 34 2d042367885f
parent 2 90ce3da70b43
child 686 d0c74839e1bd
--- 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();
     }
 
     /*