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");
+ }
+ }
}