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 2020/03/09 12:55:01 UTC

svn commit: r1875006 - in /jackrabbit/commons/filevault/trunk/vault-core/src: main/java/org/apache/jackrabbit/vault/fs/impl/io/ main/java/org/apache/jackrabbit/vault/fs/io/ test/java/org/apache/jackrabbit/vault/packaging/integration/ test/resources/tes...

Author: kwin
Date: Mon Mar  9 12:55:01 2020
New Revision: 1875006

URL: http://svn.apache.org/viewvc?rev=1875006&view=rev
Log:
JCRVLT-417 preferably use parent's default node type for intermediate
folders


This closes #73

Removed:
    jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/test-packages/folder-without-docview-element.zip/META-INF/vault/definition/.content.xml
Modified:
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java
    jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
    jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFolderArtifactHandler.java

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java?rev=1875006&r1=1875005&r2=1875006&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/FolderArtifactHandler.java Mon Mar  9 12:55:01 2020
@@ -78,7 +78,18 @@ public class FolderArtifactHandler exten
             return info;
         }
         if (!parent.hasNode(dir.getRelativePath())) {
-            Node node = parent.addNode(dir.getRelativePath(), nodeType);
+            final Node node;
+            if (wspFilter.contains(parent.getPath() + "/" + dir.getRelativePath())) {
+                node = parent.addNode(dir.getRelativePath(), nodeType);
+            } else {
+                // preferably use default node type for intermediate nodes
+                if (parent.getPrimaryNodeType().canAddChildNode(dir.getRelativePath())) {
+                    node = parent.addNode(dir.getRelativePath());
+                } else {
+                    node = parent.addNode(dir.getRelativePath(), nodeType);
+                }
+                
+            }
             info.onCreated(node.getPath());
         } else {
             // sync nodes

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java?rev=1875006&r1=1875005&r2=1875006&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/MemoryArchive.java Mon Mar  9 12:55:01 2020
@@ -273,7 +273,7 @@ public class MemoryArchive extends Abstr
          * @return the new entry
          */
         @NotNull
-        public VirtualEntry add(@NotNull String name, long time, @Nullable byte[] data) {
+        public VirtualEntry add(@NotNull String name, long time, byte[] data) {
             if (children != null) {
                 VirtualEntry ret = children.get(name);
                 if (ret != null) {

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java?rev=1875006&r1=1875005&r2=1875006&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/IntegrationTestBase.java Mon Mar  9 12:55:01 2020
@@ -394,6 +394,21 @@ public class IntegrationTestBase  {
         return extractVaultPackage(name, null);
     }
 
+    /**
+     * Returns an ZipVaultPackage which has been extracted in the repository.
+     * 
+     * @param name either the name of a zip file or the name of a directory which contains an exploded package
+     * @return an extracted vault package
+     * @throws IOException
+     * @throws PackageException
+     * @throws RepositoryException
+     */
+    public VaultPackage extractVaultPackageStrict(String name) throws IOException, PackageException, RepositoryException {
+        ImportOptions  opts = getDefaultOptions();
+        opts.setStrict(true);
+        return extractVaultPackage(name, opts);
+    }
+
     public VaultPackage extractVaultPackage(String name, ImportOptions opts) throws IOException, PackageException, RepositoryException {
         if (opts == null) {
             opts = getDefaultOptions();

Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFolderArtifactHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFolderArtifactHandler.java?rev=1875006&r1=1875005&r2=1875006&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFolderArtifactHandler.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestFolderArtifactHandler.java Mon Mar  9 12:55:01 2020
@@ -33,12 +33,13 @@ public class TestFolderArtifactHandler e
     /* JCRVLT-415 */
     @Test
     public void testModifyingContainedNodeNonNtFolderPrimaryType() throws RepositoryException, IOException, PackageException {
-        // create node "/test/foo" with node type "nt:unstructured"
+        // create node "/testroot/foo" with node type "nt:unstructured"
         Node rootNode = admin.getRootNode();
         Node testNode = rootNode.addNode("testroot", "nt:unstructured");
         Node fooNode = testNode.addNode("foo", "nt:unstructured");
         fooNode.setProperty("testProperty", "test");
-        try (VaultPackage vltPackage = extractVaultPackage("/test-packages/folder-without-docview-element.zip")) {
+        admin.save();
+        try (VaultPackage vltPackage = extractVaultPackageStrict("/test-packages/folder-without-docview-element.zip")) {
             // make sure the primary type from "/test/foo" got overwritten!
             assertPropertyMissing("/testroot/foo/testProperty");
             assertNodeHasPrimaryType("/testroot/foo", "nt:folder");
@@ -47,12 +48,13 @@ public class TestFolderArtifactHandler e
 
     @Test
     public void testNotModifyingContainedNodeNtFolderPrimaryType() throws RepositoryException, IOException, PackageException {
-        // create node "/test/foo" with node type "nt:unstructured"
+        // create node "/testroot/foo" with node type "nt:unstructured"
         Node rootNode = admin.getRootNode();
         Node testNode = rootNode.addNode("testroot", "nt:unstructured");
         Node fooNode = testNode.addNode("foo", "nt:folder");
         String oldId = fooNode.getIdentifier();
-        try (VaultPackage vltPackage = extractVaultPackage("/test-packages/folder-without-docview-element.zip")) {
+        admin.save();
+        try (VaultPackage vltPackage = extractVaultPackageStrict("/test-packages/folder-without-docview-element.zip")) {
             assertNodeHasPrimaryType("/testroot/foo", "nt:folder");
             assertPropertyMissing("/testroot/value");
             assertEquals(oldId, admin.getNode("/testroot/foo").getIdentifier());
@@ -61,16 +63,40 @@ public class TestFolderArtifactHandler e
 
     @Test
     public void testNotModifyingIntermediateNodePrimaryType() throws RepositoryException, IOException, PackageException {
-        // create node "/test/foo" with node type "nt:unstructured"
+        // create node "/var/foo" with node type "nt:unstructured"
         Node rootNode = admin.getRootNode();
         Node testNode = rootNode.addNode("var", "nt:unstructured");
-        //assertNodeMissing("/test2/foo");
         Node fooNode = testNode.addNode("foo", "nt:unstructured");
         assertNodeHasPrimaryType("/var/foo", "nt:unstructured");
         fooNode.setProperty("testProperty", "test");
-        try (VaultPackage vltPackage = extractVaultPackage("/test-packages/folder-without-docview-element.zip")) {
+        admin.save();
+        try (VaultPackage vltPackage = extractVaultPackageStrict("/test-packages/folder-without-docview-element.zip")) {
             assertNodeHasPrimaryType("/var/foo", "nt:unstructured");
             assertProperty("/var/foo/testProperty", "test");
         }
     }
+
+    @Test
+    public void testCreatingIntermediateNodesWithDefaultType() throws RepositoryException, IOException, PackageException {
+        // create node "/var/foo" with node type "nt:unstructured"
+        Node rootNode = admin.getRootNode();
+        Node testNode = rootNode.addNode("var", "nt:unstructured");
+        admin.save();
+        try (VaultPackage vltPackage = extractVaultPackageStrict("/test-packages/folder-without-docview-element.zip")) {
+            assertNodeHasPrimaryType("/var/foo", "nt:unstructured");
+        }
+    }
+
+    @Test
+    public void testCreatingIntermediateNodesWithFallbackType() throws RepositoryException, IOException, PackageException {
+        // create node "/var/foo" with node type "nt:unstructured"
+        Node rootNode = admin.getRootNode();
+        Node testNode = rootNode.addNode("var", "nt:folder");
+        admin.save();
+        assertNodeHasPrimaryType("/var", "nt:folder");
+        try (VaultPackage vltPackage = extractVaultPackage("/test-packages/folder-without-docview-element.zip")) {
+            assertNodeHasPrimaryType("/var", "nt:folder");
+            assertNodeHasPrimaryType("/var/foo", "nt:folder");
+        }
+    }
 }