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/09/13 08:26:50 UTC

[sling-org-apache-sling-feature-cpconverter] branch master updated: SLING-8608 - Fail the conversion if the resulting attached content-package is MIXED type

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


The following commit(s) were added to refs/heads/master by this push:
     new 2989182  SLING-8608 - Fail the conversion if the resulting attached content-package is MIXED type
2989182 is described below

commit 2989182a59eef68a96342ef6f00191be9e829f5c
Author: Simo Tripodi <st...@adobe.com>
AuthorDate: Fri Sep 13 10:24:40 2019 +0200

    SLING-8608 - Fail the conversion if the resulting attached
    content-package is MIXED type
---
 README.md                                               |  3 +++
 .../ContentPackage2FeatureModelConverter.java           | 17 +++++++++++++++++
 .../ContentPackage2FeatureModelConverterLauncher.java   |  6 +++++-
 3 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 2bc9007..fac1708 100644
--- a/README.md
+++ b/README.md
@@ -474,6 +474,9 @@ Apache Sling Content Package to Sling Feature converter
                               validated.
   -v, --version             Display version information.
   -X, --verbose             Produce execution debug output.
+  -Z, --fail-on-mixed-packages
+                            Fail the conversion if the resulting attached
+                              content-package is MIXED type
 Copyright(c) 2019 The Apache Software Foundation.
 ```
 
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
index 09abfcd..df52819 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
@@ -84,6 +84,8 @@ public class ContentPackage2FeatureModelConverter extends BaseVaultPackageScanne
 
     private PackagesEventsEmitter emitter;
 
+    private boolean failOnMixedPackages = false;
+
     private boolean dropContent = false;
 
     public ContentPackage2FeatureModelConverter() {
@@ -146,6 +148,11 @@ public class ContentPackage2FeatureModelConverter extends BaseVaultPackageScanne
         return this;
     }
 
+    public ContentPackage2FeatureModelConverter setFailOnMixedPackages(boolean failOnMixedPackages) {
+        this.failOnMixedPackages = failOnMixedPackages;
+        return this;
+    }
+
     public void convert(File...contentPackages) throws Exception {
         requireNonNull(contentPackages , "Null content-package(s) can not be converted.");
         secondPass(firstPass(contentPackages));
@@ -302,6 +309,16 @@ public class ContentPackage2FeatureModelConverter extends BaseVaultPackageScanne
                                               PackageId originalPackageId) throws Exception {
         try (VaultPackage vaultPackage = open(contentPackageArchive)) {
             PackageType packageType = detectPackageType(vaultPackage);
+
+            // SLING-8608 - Fail the conversion if the resulting attached content-package is MIXED type
+            if (PackageType.MIXED == packageType && failOnMixedPackages) {
+                throw new Exception("Generated content-package '"
+                                    + originalPackageId
+                                    + "' located in file "
+                                    + contentPackageArchive
+                                    + " is of MIXED type");
+            }
+
             // don't deploy & add content-packages of type content to featuremodel if dropContent is set
             if (PackageType.CONTENT != packageType || !dropContent) {
                 // deploy the new content-package to the local mvn bundles dir and attach it to the feature
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
index faf0403..1626520 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
@@ -89,6 +89,9 @@ public final class ContentPackage2FeatureModelConverterLauncher implements Runna
     @Parameters(arity = "1..*", paramLabel = "content-packages", description = "The content-package input file(s).")
     private File[] contentPackages;
 
+    @Option(names = { "-Z", "--fail-on-mixed-packages" }, description = "Fail the conversion if the resulting attached content-package is MIXED type", required = false)
+    private boolean failOnMixedPackages = false;
+
     @Override
     public void run() {
         if (quiet) {
@@ -131,7 +134,8 @@ public final class ContentPackage2FeatureModelConverterLauncher implements Runna
                                                              .setBundlesDeployer(new DefaultArtifactsDeployer(artifactsOutputDirectory))
                                                              .setEntryHandlersManager(new DefaultEntryHandlersManager())
                                                              .setAclManager(new DefaultAclManager())
-                                                             .setEmitter(DefaultPackagesEventsEmitter.open(featureModelsOutputDirectory));
+                                                             .setEmitter(DefaultPackagesEventsEmitter.open(featureModelsOutputDirectory))
+                                                             .setFailOnMixedPackages(failOnMixedPackages);
 
             if (filteringPatterns != null && filteringPatterns.length > 0) {
                 RegexBasedResourceFilter filter = new RegexBasedResourceFilter();