You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/04/30 21:36:22 UTC
[sling-org-apache-sling-feature-cpconverter] 26/29: SLING-8381 -
Converter produces broken hull subpackages
This is an automated email from the ASF dual-hosted git repository.
simonetripodi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git
commit b85d162afa7e62adc52d2e56e387f437b14b769d
Author: stripodi <st...@simos-mbp>
AuthorDate: Tue Apr 30 12:34:32 2019 +0200
SLING-8381 - Converter produces broken hull subpackages
initial fix implementation
---
.../cpconverter/vltpkg/VaultPackageAssembler.java | 9 ++++++-
.../vltpkg/VaultPackageAssemblerTest.java | 28 ++++++++++++++++++----
2 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
index 08d4e81..941bf27 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
@@ -28,6 +28,7 @@ import java.util.Properties;
import java.util.regex.Pattern;
import org.apache.commons.io.IOUtils;
+import org.apache.jackrabbit.vault.fs.api.ImportMode;
import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
@@ -43,6 +44,8 @@ import org.codehaus.plexus.archiver.util.DefaultFileSet;
public final class VaultPackageAssembler implements EntryHandler {
+ private static final String JCR_ROOT_DIR_NAME = "jcr_root";
+
private static final String META_INF_VAULT_DIRECTORY = "META-INF/vault/";
private static final String VAULT_PROPERTIES_FILE = META_INF_VAULT_DIRECTORY + "properties.xml";
@@ -59,7 +62,9 @@ public final class VaultPackageAssembler implements EntryHandler {
public static VaultPackageAssembler create(VaultPackage vaultPackage) {
File storingDirectory = new File(TMP_DIR, vaultPackage.getFile().getName() + "-deflated");
- storingDirectory.mkdirs();
+ // avoid any possible Stream is not a content package. Missing 'jcr_root' error
+ File jcrRootDirectory = new File(storingDirectory, JCR_ROOT_DIR_NAME);
+ jcrRootDirectory.mkdirs();
PackageProperties packageProperties = vaultPackage.getProperties();
@@ -119,6 +124,8 @@ public final class VaultPackageAssembler implements EntryHandler {
public void mergeFilters(WorkspaceFilter filter) {
for (PathFilterSet pathFilterSet : filter.getFilterSets()) {
if (!OSGI_BUNDLE_PATTERN.matcher(pathFilterSet.getRoot()).matches()) {
+ // make sure (empty sub-)content-packages override existing content
+ pathFilterSet.setImportMode(ImportMode.MERGE);
this.filter.add(pathFilterSet);
}
}
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssemblerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssemblerTest.java
index 011a516..9d613b5 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssemblerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssemblerTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature.cpconverter.vltpkg;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.File;
@@ -26,9 +27,11 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.vault.fs.api.ImportMode;
+import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
+import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
import org.apache.jackrabbit.vault.packaging.VaultPackage;
import org.apache.jackrabbit.vault.packaging.impl.PackageManagerImpl;
-import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -61,12 +64,28 @@ public class VaultPackageAssemblerTest {
@Test
public void packageResource() throws Exception {
- assembler.addEntry(resourceLocation, getClass().getResourceAsStream("../handlers/" + resourceLocation));
+ if (resourceLocation != null) {
+ assembler.addEntry(resourceLocation, getClass().getResourceAsStream("../handlers/" + resourceLocation));
+ }
File contentPackage = assembler.createPackage(testDirectory);
ZipFile zipFile = new ZipFile(contentPackage);
- ZipEntry entry = zipFile.getEntry(resourceLocation);
- assertNotNull(entry);
+ ZipEntry resourceEntry;
+ if (resourceLocation != null) {
+ resourceEntry = zipFile.getEntry(resourceLocation);
+ } else {
+ resourceEntry = zipFile.getEntry("jcr_root");
+ }
+ assertNotNull(resourceEntry);
+
+ DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
+ ZipEntry filtersEntry = zipFile.getEntry("META-INF/vault/filter.xml");
+ filter.load(zipFile.getInputStream(filtersEntry));
+
+ for (PathFilterSet filterSet : filter.getFilterSets()) {
+ assertEquals(ImportMode.MERGE, filterSet.getImportMode());
+ }
+
zipFile.close();
}
@@ -79,6 +98,7 @@ public class VaultPackageAssemblerTest {
VaultPackageAssembler assembler = VaultPackageAssembler.create(vaultPackage);
return Arrays.asList(new Object[][] {
+ { null, assembler },
{ "jcr_root/.content.xml", assembler },
{ "jcr_root/asd/.content.xml", assembler },
{ "jcr_root/asd/public/license.txt", assembler }