You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2019/08/21 20:55:29 UTC

[sling-org-apache-sling-feature-launcher] 01/01: SLING-8647: Provide policies for configuration merging

This is an automated email from the ASF dual-hosted git repository.

pauls pushed a commit to branch issues/SLING-8647
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-launcher.git

commit 98e5a207186f39e967dbc2ce9edac9302a4bc1a3
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Wed Aug 21 22:55:09 2019 +0200

    SLING-8647: Provide policies for configuration merging
---
 pom.xml                                                           | 2 +-
 .../org/apache/sling/feature/launcher/impl/FeatureProcessor.java  | 1 +
 .../org/apache/sling/feature/launcher/impl/LauncherConfig.java    | 7 +++++++
 src/main/java/org/apache/sling/feature/launcher/impl/Main.java    | 8 ++++++++
 4 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 444b542..fa6c1ff 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,7 +113,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature</artifactId>
-            <version>1.0.6</version>
+            <version>1.0.7-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
         <dependency>
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java b/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
index 68facce..764afab 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/FeatureProcessor.java
@@ -81,6 +81,7 @@ public class FeatureProcessor {
             }
         });
         builderContext.addArtifactsOverrides(config.getArtifactClashOverrides());
+        builderContext.addConfigsOverrides(config.getConfigClashOverrides());
         builderContext.addVariablesOverrides(config.getVariables());
         builderContext.addFrameworkPropertiesOverrides(config.getInstallation().getFrameworkProperties());
         builderContext.addMergeExtensions(StreamSupport.stream(Spliterators.spliteratorUnknownSize(
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java b/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
index 5dd73cd..bacb449 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/LauncherConfig.java
@@ -20,6 +20,7 @@ import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
@@ -40,6 +41,8 @@ public class LauncherConfig
 
     private final List<String> artifactClashOverrides = new ArrayList<>();
 
+    private final Map<String,String> configClashOverrides = new LinkedHashMap<>();
+
     private final Map<String, Map<String,String>> extensionConfiguration = new HashMap<>();
 
     /** The feature files or directories. */
@@ -67,6 +70,10 @@ public class LauncherConfig
         return this.artifactClashOverrides;
     }
 
+    public Map<String, String> getConfigClashOverrides() {
+        return this.configClashOverrides;
+    }
+
     public Map<String, Map<String, String>> getExtensionConfiguration() {
         return this.extensionConfiguration;
     }
diff --git a/src/main/java/org/apache/sling/feature/launcher/impl/Main.java b/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
index 890d20b..0ecef1f 100644
--- a/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
+++ b/src/main/java/org/apache/sling/feature/launcher/impl/Main.java
@@ -81,6 +81,7 @@ public class Main {
         final Options options = new Options();
 
         final Option artifactClashOverride = new Option("C", true, "Set artifact clash override");
+        final Option configClashOverride = new Option("CC", true, "Set config clash override");
         final Option repoOption =  new Option("u", true, "Set repository url");
         final Option featureOption =  new Option("f", true, "Set feature files");
         final Option fwkProperties = new Option("D", true, "Set framework properties");
@@ -95,6 +96,7 @@ public class Main {
         final Option frameworkArtifactOption = new Option("fa", true, "Set framework artifact (overrides felix framework version)");
 
         options.addOption(artifactClashOverride);
+        options.addOption(configClashOverride);
         options.addOption(repoOption);
         options.addOption(featureOption);
         options.addOption(fwkProperties);
@@ -119,6 +121,12 @@ public class Main {
                     config.getArtifactClashOverrides().add(override);
                 }
             }
+            if ( cl.hasOption(configClashOverride.getOpt()) ) {
+                for(final String override : cl.getOptionValues(configClashOverride.getOpt())) {
+                    final String[] keyVal = split(override);
+                    config.getConfigClashOverrides().put(keyVal[0], keyVal[1]);
+                }
+            }
             if ( cl.hasOption(fwkProperties.getOpt()) ) {
                 for(final String value : cl.getOptionValues(fwkProperties.getOpt())) {
                     final String[] keyVal = split(value);