You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2022/04/04 21:31:42 UTC

[jackrabbit-filevault] branch master updated: releng: add integration tests for DocViewSAXFormatter for same-name (#219)

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git


The following commit(s) were added to refs/heads/master by this push:
     new d858f542 releng: add integration tests for DocViewSAXFormatter for same-name (#219)
d858f542 is described below

commit d858f542096394dee6f922ca63453124a329d5e9
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Mon Apr 4 23:31:38 2022 +0200

    releng: add integration tests for DocViewSAXFormatter for same-name (#219)
---
 .../vault/fs/impl/io/DocViewSAXFormatter.java      |  2 +-
 .../vault/fs/impl/io/DocViewSaxFormatterIT.java    | 60 ++++++++++++++++++++++
 2 files changed, 61 insertions(+), 1 deletion(-)

diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXFormatter.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXFormatter.java
index b5e40a7b..b52c646a 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXFormatter.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXFormatter.java
@@ -49,7 +49,7 @@ import org.apache.jackrabbit.vault.util.JcrConstants;
 import org.xml.sax.SAXException;
 
 /**
- * The docview sax formatter generates SAX events to a given ContentHandler based on the aggregate tree.
+ * Writes the enhanced docview XML based on the aggregate tree to a given {@link XMLStreamWriter}.
  */
 public class DocViewSAXFormatter implements AggregateWalkListener {
 
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java
index 98b3cc37..09da9d64 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSaxFormatterIT.java
@@ -18,12 +18,15 @@
 package org.apache.jackrabbit.vault.fs.impl.io;
 
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.jcr.GuestCredentials;
 import javax.jcr.Node;
 import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Value;
 import javax.jcr.nodetype.NodeType;
@@ -143,4 +146,61 @@ public class DocViewSaxFormatterIT extends IntegrationTestBase {
                 "    testproperty=\"lowercase\"/>\n", out.toString("utf-8"));
     }
 
+    @Test
+    public void testSnsNodeNames() throws RepositoryException, URISyntaxException, IOException {
+        Assume.assumeFalse(isOak()); // same-name siblings are only supported by Jackrabbit2
+        Node node = JcrUtils.getOrCreateByPath("/testroot", NodeType.NT_UNSTRUCTURED, admin);
+        node.addNode("childnode",  NodeType.NT_UNSTRUCTURED);
+        node.addNode("childnode",  NodeType.NT_UNSTRUCTURED);
+        node.addNode("childnode",  NodeType.NT_UNSTRUCTURED);
+        admin.save();
+
+        DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
+        filter.add(new PathFilterSet("/testroot"));
+        RepositoryAddress addr = new RepositoryAddress("/" + admin.getWorkspace().getName() + "/");
+        VaultFileSystem jcrfs = Mounter.mount(null, filter, addr, null, admin);
+        Aggregate a = jcrfs.getAggregateManager().getRoot().getAggregate("testroot");
+        DocViewSerializer s = new DocViewSerializer(a);
+
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        s.writeContent(out);
+
+        assertEquals("valid xml",
+                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<jcr:root xmlns:jcr=\"http://www.jcp.org/jcr/1.0\" xmlns:nt=\"http://www.jcp.org/jcr/nt/1.0\"\n" +
+                "    jcr:primaryType=\"nt:unstructured\">\n" +
+                "    <childnode jcr:primaryType=\"nt:unstructured\"/>\n" +
+                "    <childnode_x005b_2_x005d_ jcr:primaryType=\"nt:unstructured\"/>\n" +
+                "    <childnode_x005b_3_x005d_ jcr:primaryType=\"nt:unstructured\"/>\n" +
+                "</jcr:root>\n", out.toString("utf-8"));
+    }
+
+    @Test
+    public void testSpecialNames() throws RepositoryException, URISyntaxException, IOException {
+        Node node = JcrUtils.getOrCreateByPath("/testroot", NodeType.NT_UNSTRUCTURED, admin);
+        node.addNode("1test",  NodeType.NT_UNSTRUCTURED);
+        Node childNode = node.addNode("test%test",  NodeType.NT_UNSTRUCTURED);
+        childNode.setProperty("_test&test", "test");
+        admin.save();
+
+        DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
+        filter.add(new PathFilterSet("/testroot"));
+        RepositoryAddress addr = new RepositoryAddress("/" + admin.getWorkspace().getName() + "/");
+        VaultFileSystem jcrfs = Mounter.mount(null, filter, addr, null, admin);
+        Aggregate a = jcrfs.getAggregateManager().getRoot().getAggregate("testroot");
+        DocViewSerializer s = new DocViewSerializer(a);
+
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        s.writeContent(out);
+
+        assertEquals("valid xml",
+                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+                "<jcr:root xmlns:jcr=\"http://www.jcp.org/jcr/1.0\" xmlns:nt=\"http://www.jcp.org/jcr/nt/1.0\"\n" +
+                "    jcr:primaryType=\"nt:unstructured\">\n" +
+                "    <_x0031_test jcr:primaryType=\"nt:unstructured\"/>\n" +
+                "    <test_x0025_test\n" +
+                "        jcr:primaryType=\"nt:unstructured\"\n" +
+                "        _test_x0026_test=\"test\"/>\n" +
+                "</jcr:root>\n", out.toString("utf-8"));
+    }
 }