### Eclipse Workspace Patch 1.0 #P jackrabbit-jcr-commons Index: src/main/java/org/apache/jackrabbit/util/Text.java =================================================================== --- src/main/java/org/apache/jackrabbit/util/Text.java (revision 705186) +++ src/main/java/org/apache/jackrabbit/util/Text.java (working copy) @@ -477,7 +477,28 @@ } return buffer.toString(); } - + + /** Escapes all illegal XPath search characters of a string. + *
Example:
+ * A search string like 'test?' will run into a ParseException
+ * documented in http://issues.apache.org/jira/browse/JCR-1248
+ *
+ * @param string the string to encode
+ * @return the escaped string
+ */
+ public static String escapeIllegalXpathSearchChars(String s) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(s.substring(0, (s.length() - 1)));
+ char c = s.charAt(s.length() - 1);
+ // NOTE: keep this in sync with _ESCAPED_CHAR below!
+ if (c == '!' || c == '(' || c == ':' || c == '^'
+ || c == '[' || c == ']' || c == '\"' || c == '{'
+ || c == '}' || c == '?') {
+ sb.append('\\');
+ }
+ sb.append(c);
+ return sb.toString();
+ }
/**
* Unescapes previously escaped jcr chars.
*