Quote replacement for metadata named decoding
$ and \ are special characters in regex replacements, so we need to
properly encode the replacement so that we have literal characters.
diff --git a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
index 65bfb90..3de9a5c 100644
--- a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
+++ b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
@@ -854,7 +854,7 @@
StringBuffer sb = new StringBuffer();
while (m.find()) {
char c = (char) Integer.parseInt(m.group(1), 16);
- m.appendReplacement(sb, "" + c);
+ m.appendReplacement(sb, Matcher.quoteReplacement("" + c));
}
m.appendTail(sb);
return sb.toString();
diff --git a/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java b/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
index 8223d39..fa5ad7c 100644
--- a/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
+++ b/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
@@ -361,9 +361,9 @@
SharePointAdaptor.decodeMetadataName("_x020__x00020__0020__x0020"));
assertEquals("Simple Space",
SharePointAdaptor.decodeMetadataName("Simple_x0020_Space"));
- assertEquals("Multiple \u0394Replacements\u2ee8",
+ assertEquals("Multiple \u0394Replacements\u2ee8$",
SharePointAdaptor.decodeMetadataName(
- "Multiple_x0020__x0394_Replacements_x2ee8_"));
+ "Multiple_x0020__x0394_Replacements_x2ee8__x0024_"));
}
@Test