From 49f07563e2049dfee49552a8cb15aba992141e87 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Wed, 11 Jun 2025 13:52:57 +0200 Subject: [PATCH] JCR-5153 escapeIllegalJcrChars does not properly escape non XML characters --- .../java/org/apache/jackrabbit/util/TextTest.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/util/TextTest.java b/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/util/TextTest.java index 6d034c3834c..67479edd876 100644 --- a/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/util/TextTest.java +++ b/jackrabbit-jcr-commons/src/test/java/org/apache/jackrabbit/util/TextTest.java @@ -191,8 +191,19 @@ public void testEscapeIllegalJcr10Chars() throws Exception { public void testEscapeIllegalJcrChars() throws Exception { // single and double quote are valid since JCR 2.0 - assertEquals("local'name", Text.escapeIllegalJcrChars("local'name")); - assertEquals("local\"name", Text.escapeIllegalJcrChars("local\"name")); + assertEscapeIllegalJcrChars("local'name", "local'name"); + assertEscapeIllegalJcrChars("local\"name", "local\"name"); + assertEscapeIllegalJcrChars("..", "%2E%2E"); + assertEscapeIllegalJcrChars("...", "..."); + // FIXME: JCR-5153 + assertEscapeIllegalJcrChars("\u000F", "\u000F"); + } + + private void assertEscapeIllegalJcrChars(String name, String expectedEscapedName) { + String escaped = Text.escapeIllegalJcrChars(name); + assertEquals(expectedEscapedName, escaped); + assertTrue("Escaped name is not valid in JCR local names", Text.isValidJcrLocalName(escaped)); + assertEquals(name, Text.unescapeIllegalJcrChars(escaped)); } public void testEscapeXML() {