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/05/24 12:42:02 UTC
[sling-org-apache-sling-feature-cpconverter] 02/02: Merge branch
'master' of github.com:apache/sling-org-apache-sling-feature-cpconverter
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 459e4f7ace7e7421acdc1231f2b22d5c23294f87
Merge: 6ec4ee0 fe34c7a
Author: Simo Tripodi <st...@adobe.com>
AuthorDate: Fri May 24 14:41:53 2019 +0200
Merge branch 'master' of
github.com:apache/sling-org-apache-sling-feature-cpconverter
# Conflicts:
# pom.xml
# src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
# src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
.../ContentPackage2FeatureModelConverter.java | 36 ++++++++++++++++++++--
.../cpconverter/vltpkg/VaultPackageAssembler.java | 11 ++++---
.../vltpkg/VaultPackageAssemblerTest.java | 8 -----
3 files changed, 40 insertions(+), 15 deletions(-)
diff --cc src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
index f8c97ee,9e79404..4094db2
--- a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
@@@ -25,8 -25,12 +25,13 @@@ import java.util.HashSet
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+ import org.apache.jackrabbit.vault.fs.api.DumpContext;
+ 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.fs.filter.DefaultPathFilter;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
import org.apache.jackrabbit.vault.packaging.CyclicDependencyException;
@@@ -248,28 -254,48 +253,55 @@@ public class ContentPackage2FeatureMode
idPackageMapping.remove(pack.getId());
}
- public void processSubPackage(String path, File contentPackage) throws Exception {
+ public void processSubPackage(String path, VaultPackage vaultPackage) throws Exception {
requireNonNull(path, "Impossible to process a null vault package");
- requireNonNull(contentPackage, "Impossible to process a null vault package");
-
- try (VaultPackage vaultPackage = packageManager.open(contentPackage, isStrictValidation())) {
- // scan the detected package, first
- traverse(vaultPackage);
-
- // merge filters to the main new package
- mainPackageAssembler.mergeFilters(vaultPackage.getMetaInf().getFilter());
-
- // add the metadata-only package one to the main package with overriden filter
- DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
- PathFilterSet pfs = new PathFilterSet();
- DefaultPathFilter dpf = new DefaultPathFilter() {
-
- @Override
- public boolean matches(String path) {
- return true;
- }
-
- @Override
- public void dump(DumpContext ctx, boolean isLast) {
- ctx.println(isLast, "ALL");
- }
-
- @Override
- public boolean isAbsolute() {
- return true;
- }
-
- @Override
- public String getPattern() {
- return ".*";
- }
- };
- pfs.addExclude(dpf);
- pfs.setImportMode(ImportMode.MERGE);
- filter.add(pfs);
- File clonedPackage = VaultPackageAssembler.create(vaultPackage, filter).createPackage();
- mainPackageAssembler.addEntry(path, clonedPackage);
+ requireNonNull(vaultPackage, "Impossible to process a null vault package");
+
+ if (!isSubContentPackageIncluded(path)) {
+ logger.info("Sub content-package {} is filtered out, so it won't be processed.", path);
+ return;
}
+
+ // scan the detected package, first
+ traverse(vaultPackage);
+
+ // merge filters to the main new package
+ mainPackageAssembler.mergeFilters(vaultPackage.getMetaInf().getFilter());
+
- // add the metadata-only package one to the main package
- File clonedPackage = VaultPackageAssembler.create(vaultPackage).createPackage();
++ // add the metadata-only package one to the main package with overriden filter
++ DefaultWorkspaceFilter filter = new DefaultWorkspaceFilter();
++ PathFilterSet pfs = new PathFilterSet();
++ DefaultPathFilter dpf = new DefaultPathFilter() {
++
++ @Override
++ public boolean matches(String path) {
++ return true;
++ }
++
++ @Override
++ public void dump(DumpContext ctx, boolean isLast) {
++ ctx.println(isLast, "ALL");
++ }
++
++ @Override
++ public boolean isAbsolute() {
++ return true;
++ }
++
++ @Override
++ public String getPattern() {
++ return ".*";
++ }
++ };
++ pfs.addExclude(dpf);
++ pfs.setImportMode(ImportMode.MERGE);
++ filter.add(pfs);
++ File clonedPackage = VaultPackageAssembler.create(vaultPackage, filter).createPackage();
+ mainPackageAssembler.addEntry(path, clonedPackage);
+ }
+
+ protected boolean isSubContentPackageIncluded(String path) {
+ return subContentPackages.containsValue(path);
}
@Override
diff --cc src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
index 366b8e0,d47413e..f24f2d9
--- a/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
@@@ -56,11 -55,15 +55,15 @@@ public class VaultPackageAssembler impl
private static final String[] INCLUDE_RESOURCES = { "definition/.content.xml", "config.xml", "settings.xml" };
- private static final File TMP_DIR = new File(System.getProperty("java.io.tmpdir"));
+ private static final File TMP_DIR = new File(System.getProperty("java.io.tmpdir"), "syntethic-content-packages");
private static final Pattern OSGI_BUNDLE_PATTERN = Pattern.compile("(jcr_root)?/apps/[^/]+/install(\\.([^/]+))?/.+\\.jar");
-
+
public static VaultPackageAssembler create(VaultPackage vaultPackage) {
+ return create(vaultPackage, vaultPackage.getMetaInf().getFilter());
+ }
+
+ public static VaultPackageAssembler create(VaultPackage vaultPackage, WorkspaceFilter filter) {
File storingDirectory = new File(TMP_DIR, vaultPackage.getFile().getName() + "-deflated");
// avoid any possible Stream is not a content package. Missing 'jcr_root' error
File jcrRootDirectory = new File(storingDirectory, JCR_ROOT_DIR_NAME);