This is an automated email from the ASF dual-hosted git repository. reschke pushed a commit to branch 1.22 in repository https://gitbox.apache.org/repos/asf/jackrabbit-oak.git
commit 885c6fc7fb943f8bbf66dba2f9eeca84590df51b Author: Manfred Baedke <manfred.bae...@gmail.com> 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