You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2014/02/18 02:10:26 UTC
svn commit: r1569157 - in /jackrabbit/commons/filevault/trunk/vault-core/src:
main/java/org/apache/jackrabbit/vault/fs/impl/io/
test/java/org/apache/jackrabbit/vault/packaging/integration/
test/resources/org/apache/jackrabbit/vault/packaging/integratio...
Author: tripod
Date: Tue Feb 18 01:10:25 2014
New Revision: 1569157
URL: http://svn.apache.org/r1569157
Log:
JCRVLT-28 Improve package import for subtrees
- fix minor error when root node is already new. this only happens with relative imports
Added:
jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/tmp_with_thumbnail.zip
Modified:
jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java
jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java
jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java?rev=1569157&r1=1569156&r2=1569157&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSAXImporter.java Tue Feb 18 01:10:25 2014
@@ -686,7 +686,7 @@ public class DocViewSAXImporter extends
// special case for root node update
node = currentNode;
} else if (ni.uuid == null) {
- if (!stack.isNew && currentNode.hasNode(ni.label)) {
+ if (stack.checkForNode() && currentNode.hasNode(ni.label)) {
node = currentNode.getNode(ni.label);
if (ni.primary != null && !node.getPrimaryNodeType().getName().equals(ni.primary)) {
// if node type mismatches => replace
@@ -713,7 +713,7 @@ public class DocViewSAXImporter extends
// ignore
}
if (node == null) {
- if (!stack.isNew && currentNode.hasNode(ni.label)) {
+ if (stack.checkForNode() && currentNode.hasNode(ni.label)) {
node = currentNode.getNode(ni.label);
if (ni.primary != null && !node.getPrimaryNodeType().getName().equals(ni.primary)) {
// if node type mismatches => replace
@@ -1278,6 +1278,10 @@ public class DocViewSAXImporter extends
return parent == null;
}
+ public boolean checkForNode() {
+ // we should check if child node exist if stack is not new or if it's a root node
+ return !isNew || parent == null;
+ }
public void addName(String name) {
childNames.addName(name);
}
@@ -1286,7 +1290,7 @@ public class DocViewSAXImporter extends
}
public void restoreOrder() throws RepositoryException {
- if (!isNew && childNames.needsReorder(node)) {
+ if (checkForNode() && childNames.needsReorder(node)) {
ensureCheckedOut();
childNames.restoreOrder(node);
}
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java?rev=1569157&r1=1569156&r2=1569157&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/ImportTests.java Tue Feb 18 01:10:25 2014
@@ -26,6 +26,8 @@ import javax.jcr.RepositoryException;
import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
+import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
+import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.ImportOptions;
import org.apache.jackrabbit.vault.fs.io.Importer;
import org.apache.jackrabbit.vault.fs.io.JcrArchive;
@@ -33,21 +35,15 @@ import org.apache.jackrabbit.vault.fs.io
import org.apache.jackrabbit.vault.packaging.PackageException;
import org.junit.Before;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
/**
* <code>ImportTests</code>...
*/
public class ImportTests extends IntegrationTestBase {
- /**
- * default logger
- */
- private static final Logger log = LoggerFactory.getLogger(ImportTests.class);
-
public static final String TEST_ROOT = "/testroot";
public static final String ARCHIVE_ROOT = "/archiveroot";
@@ -223,4 +219,34 @@ public class ImportTests extends Integra
}
+ @Test
+ public void testSubArchiveExtract() throws IOException, RepositoryException, ConfigurationException {
+ ZipArchive archive = new ZipArchive(getTempFile("testpackages/tmp_with_thumbnail.zip"));
+ archive.open(true);
+ Node rootNode = admin.getRootNode();
+ Node tmpNode = rootNode.addNode("tmp");
+ Node fileNode = tmpNode.addNode("package.zip", "nt:file");
+ Node contentNode = fileNode.addNode("jcr:content", "nt:resource");
+ contentNode.setProperty("jcr:data", "");
+ contentNode.setProperty("jcr:lastModified", 0);
+ contentNode.addMixin("vlt:Package");
+ Node defNode = contentNode.addNode("vlt:definition", "vlt:PackageDefinition");
+
+ ImportOptions opts = getDefaultOptions();
+ Archive subArchive = archive.getSubArchive("META-INF/vault/definition", true);
+
+ DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
+ filter.add(new PathFilterSet(defNode.getPath()));
+
+ Importer importer = new Importer(opts);
+ importer.getOptions().setAutoSaveThreshold(Integer.MAX_VALUE);
+ importer.getOptions().setFilter(filter);
+ importer.run(subArchive, defNode);
+ admin.save();
+
+ assertFalse("Importer must not have any errors", importer.hasErrors());
+ assertNodeExists("/tmp/package.zip/jcr:content/vlt:definition/thumbnail.png");
+ }
+
+
}
\ No newline at end of file
Modified: jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java?rev=1569157&r1=1569156&r2=1569157&view=diff
==============================================================================
--- jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java (original)
+++ jackrabbit/commons/filevault/trunk/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestPackageInstall.java Tue Feb 18 01:10:25 2014
@@ -23,7 +23,6 @@ import java.io.IOException;
import javax.jcr.RepositoryException;
import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.vault.packaging.InstallContext;
import org.apache.jackrabbit.vault.packaging.JcrPackage;
import org.apache.jackrabbit.vault.packaging.PackageException;
import org.apache.tika.io.IOUtils;
@@ -54,6 +53,19 @@ public class TestPackageInstall extends
}
/**
+ * Installs a package that contains and checks if everything is correct.
+ */
+ @Test
+ public void testUploadWithThumbnail() throws RepositoryException, IOException, PackageException {
+ JcrPackage pack = packMgr.upload(getStream("testpackages/tmp_with_thumbnail.zip"), false);
+ assertNotNull(pack);
+ assertNodeExists("/etc/packages/my_packages/tmp.zip");
+
+ // upload already unrwapps it, so check if definition is ok
+ assertNodeExists("/etc/packages/my_packages/tmp.zip/jcr:content/vlt:definition/thumbnail.png");
+ }
+
+ /**
* Installs a package that contains /tmp/fullcoverage/a/aa using a vlt:FullCoverage mixin.
* check if the package manager installs that node type although not present in the package.
*/
Added: jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/tmp_with_thumbnail.zip
URL: http://svn.apache.org/viewvc/jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/tmp_with_thumbnail.zip?rev=1569157&view=auto
==============================================================================
Files jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/tmp_with_thumbnail.zip (added) and jackrabbit/commons/filevault/trunk/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/tmp_with_thumbnail.zip Tue Feb 18 01:10:25 2014 differ