You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2025/12/16 18:34:42 UTC
(jackrabbit-filevault) 01/01: JCRVLT-832: test coverage for handling namespace information in PATH typed property values
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch JCRVLT-832
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
commit db8b1a1626f36a3086b41470bba1ecc729a74871
Author: Julian Reschke <re...@apache.org>
AuthorDate: Tue Dec 16 19:34:21 2025 +0100
JCRVLT-832: test coverage for handling namespace information in PATH typed property values
---
.../vault/fs/impl/io/DocViewSaxFormatterIT.java | 52 ++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java b/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java
index 6da0e4f9..fc50736e 100644
--- a/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java
+++ b/vault-core-it/vault-core-integration-tests/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java
@@ -38,6 +38,7 @@ import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.Value;
+import javax.jcr.ValueFactory;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
@@ -48,6 +49,7 @@ import javax.jcr.version.VersionException;
import org.apache.jackrabbit.api.security.JackrabbitAccessControlList;
import org.apache.jackrabbit.commons.JcrUtils;
+import org.apache.jackrabbit.commons.NamespaceHelper;
import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
import org.apache.jackrabbit.util.ISO8601;
@@ -260,4 +262,54 @@ public class DocViewSaxFormatterIT extends IntegrationTestBase {
" jcr:uuid=\"" + node.getIdentifier() + "\"/>\n"
, serialization);
}
+
+ private static final String NL = "\n";
+
+ private static String q(String input) {
+ return '"' + input + '"';
+ }
+
+ private static String qns(String prefix, String name) {
+ return "xmlns:" + prefix + "=" + q(name);
+ }
+
+ private static String XMLNS_JCR = qns("jcr", NamespaceHelper.JCR);
+ private static String XMLNS_NT = qns("nt", NamespaceHelper.NT);
+ private static String XMLNS_MIX = qns("mix", NamespaceHelper.MIX);
+
+ @Test
+ // JCRVLT-832
+ public void testNamePathPropertyValueNamespacePrefixes() throws RepositoryException, URISyntaxException, IOException {
+ ValueFactory vf = admin.getValueFactory();
+
+ NamespaceHelper nh = new NamespaceHelper(admin);
+ nh.registerNamespace("foo1", "bar1:");
+ nh.registerNamespace("foo2", "bar2:");
+
+ Node node = JcrUtils.getOrCreateByPath("/testroot", NodeType.NT_UNSTRUCTURED, admin);
+
+ // simple multivalued Boolean
+ node.setProperty("mvbool", new Value[] {vf.createValue(true), vf.createValue(false), vf.createValue(true)});
+ // single valued name property
+ node.setProperty("svname", vf.createValue("svname-test", PropertyType.NAME));
+ // multi valued name property using namespace
+ node.setProperty("mvname",
+ new Value[] {vf.createValue("foo1:mvname-test", PropertyType.NAME), vf.createValue("xyz", PropertyType.NAME)});
+ // single valued path property using namespace
+ node.setProperty("svpath", vf.createValue("/foo1:a/foo2:b", PropertyType.PATH));
+
+ admin.save();
+
+ String serialization = getSerializedAggregate(admin, "/testroot");
+
+ assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + NL +
+ "<jcr:root " + XMLNS_JCR + " " + XMLNS_NT + " " + qns("foo1", "bar1:") + " " + qns("foo2", "bar2:") + NL +
+ " jcr:primaryType=\"nt:unstructured\"" + NL +
+ " mvbool=\"{Boolean}[true,false,true]\"" + NL +
+ " mvname=\"{Name}[foo1:mvname-test,xyz]\"" + NL +
+ " svname=\"{Name}svname-test\"" + NL +
+ " svpath=\"{Path}/foo1:a/foo2:b\"" +
+ "/>" + NL
+ , serialization);
+ }
}