This is an automated email from the ASF dual-hosted git repository.
baedke pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
The following commit(s) were added to refs/heads/trunk by this push:
new 9821deb5db OAK-10624: o.a.j.o.namepath.JcrPathParser does not accept
some valid local names containing "{" or "}".
9821deb5db is described below
commit 9821deb5db252617b3e969eca9f9f53ee6b5fd33
Author: Manfred Baedke <[email protected]>
AuthorDate: Wed Jan 24 12:31:22 2024 +0100
OAK-10624: o.a.j.o.namepath.JcrPathParser does not accept some valid local
names containing "{" or "}".
Modified (ignored) test case PathParserTest#testCurlyBracketsInNames().
---
.../jackrabbit/oak/namepath/PathParserTest.java | 135 ++++++++++++++++++---
1 file changed, 118 insertions(+), 17 deletions(-)
diff --git
a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/namepath/PathParserTest.java
b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/namepath/PathParserTest.java
index dec4c01a50..3a3cc0bdda 100755
---
a/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/namepath/PathParserTest.java
+++
b/oak-core-spi/src/test/java/org/apache/jackrabbit/oak/namepath/PathParserTest.java
@@ -362,12 +362,11 @@ public class PathParserTest {
@Test
@Ignore //OAK-10624
public void testCurlyBracketsInNames() throws RepositoryException {
- String path = "/{";
+ String path = "{a";
TestListener listener = new TestListener(
- CALLBACKRESULT_ROOT,
- CALLBACKRESULT_ERROR("'/{' is not a valid path. Missing '}'.")
+ CALLBACKRESULT_NAME("{a")
);
- verifyResult(path, listener, false);
+ verifyResult(path, listener, true);
path = "/a{";
listener = new TestListener(
@@ -376,6 +375,61 @@ public class PathParserTest {
);
verifyResult(path, listener, true);
+ path = "{a[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_NAME("{a", 1)
+ );
+ verifyResult(path, listener, true);
+
+ path = "/a{[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a{", 1)
+ );
+ verifyResult(path, listener, true);
+
+ path = "/{/a";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("{"),
+ CALLBACKRESULT_NAME("a")
+ );
+ verifyResult(path, listener, true);
+
+ path = "/{[1]/a";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("{", 1),
+ CALLBACKRESULT_NAME("a")
+ );
+ verifyResult(path, listener, true);
+
+ path = "{";
+ listener = new TestListener(
+ CALLBACKRESULT_NAME("{")
+ );
+ verifyResult(path, listener, true);
+
+ path = "{[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_NAME("{", 1)
+ );
+ verifyResult(path, listener, true);
+
+ path = "/{";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("{")
+ );
+ verifyResult(path, listener, true);
+
+ path = "/{[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("{", 1)
+ );
+ verifyResult(path, listener, true);
+
path = "/}";
listener = new TestListener(
CALLBACKRESULT_ROOT,
@@ -383,24 +437,24 @@ public class PathParserTest {
);
verifyResult(path, listener, true);
- path = "/a}";
+ path = "/}[1]";
listener = new TestListener(
CALLBACKRESULT_ROOT,
- CALLBACKRESULT_NAME("a}")
+ CALLBACKRESULT_NAME("}", 1)
);
verifyResult(path, listener, true);
- path = "/a}[1]";
+ path = "/a}";
listener = new TestListener(
CALLBACKRESULT_ROOT,
- CALLBACKRESULT_NAME("a}", 1)
+ CALLBACKRESULT_NAME("a}")
);
verifyResult(path, listener, true);
- path = "/a{[1]";
+ path = "/a}[1]";
listener = new TestListener(
CALLBACKRESULT_ROOT,
- CALLBACKRESULT_NAME("a{", 1)
+ CALLBACKRESULT_NAME("a}", 1)
);
verifyResult(path, listener, true);
@@ -452,15 +506,62 @@ public class PathParserTest {
CALLBACKRESULT_ERROR("'/ab}:c' is not a valid path. Invalid
name prefix: ab}")
);
verifyResult(path, listener, false);
- }
- @Test
- public void testMissingClosingCurlyBracket() throws RepositoryException {
- String path = "{a";
- TestListener listener = new TestListener(
- CALLBACKRESULT_ERROR(errorMissingClosingCurlyBracket(path))
+ path = "/a:{";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:{")
);
- verifyResult(path, listener, false);
+ verifyResult(path, listener, true);
+
+ path = "/a:}";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:}")
+ );
+ verifyResult(path, listener, true);
+
+ path = "/a:{}";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:{}")
+ );
+ verifyResult(path, listener, true);
+
+ path = "/a:}{";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:}{")
+ );
+ verifyResult(path, listener, true);
+
+ path = "/a:{[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:{", 1)
+ );
+ verifyResult(path, listener, true);
+
+ path = "/a:}[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:}", 1)
+ );
+ verifyResult(path, listener, true);
+
+ path = "/a:{}[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:{}", 1)
+ );
+ verifyResult(path, listener, true);
+
+ path = "/a:}{[1]";
+ listener = new TestListener(
+ CALLBACKRESULT_ROOT,
+ CALLBACKRESULT_NAME("a:}{", 1)
+ );
+ verifyResult(path, listener, true);
}
@Test