You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2018/07/06 10:27:24 UTC

[sling-org-apache-sling-feature] branch master updated: SLING-7765 Application creation missing variable declarations

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

davidb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature.git


The following commit(s) were added to refs/heads/master by this push:
     new 7f2ea5e  SLING-7765 Application creation missing variable declarations
7f2ea5e is described below

commit 7f2ea5e169b85086351f2aa33e68ae62d315301e
Author: David Bosschaert <bo...@adobe.com>
AuthorDate: Fri Jul 6 11:26:35 2018 +0100

    SLING-7765 Application creation missing variable declarations
    
    This part merges the variables into the application when created.
---
 .../sling/feature/builder/ApplicationBuilder.java  |  1 +
 .../apache/sling/feature/builder/BuilderUtil.java  | 27 +++++++++++--------
 .../feature/builder/ApplicationBuilderTest.java    | 31 +++++++++++++++++++---
 .../sling/feature/builder/BuilderUtilTest.java     | 18 ++++++++++++-
 4 files changed, 61 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/builder/ApplicationBuilder.java b/src/main/java/org/apache/sling/feature/builder/ApplicationBuilder.java
index 4fd88c1..f917436 100644
--- a/src/main/java/org/apache/sling/feature/builder/ApplicationBuilder.java
+++ b/src/main/java/org/apache/sling/feature/builder/ApplicationBuilder.java
@@ -69,6 +69,7 @@ public class ApplicationBuilder {
     }
 
     private static void merge(final Application target, final Feature source) {
+        BuilderUtil.mergeVariables(target.getVariables(), source.getVariables());
         BuilderUtil.mergeBundles(target.getBundles(), source.getBundles(), BuilderUtil.ArtifactMerge.HIGHEST);
         BuilderUtil.mergeConfigurations(target.getConfigurations(), source.getConfigurations());
         BuilderUtil.mergeFrameworkProperties(target.getFrameworkProperties(), source.getFrameworkProperties());
diff --git a/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java b/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java
index 329b1a3..62be9e0 100644
--- a/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java
+++ b/src/main/java/org/apache/sling/feature/builder/BuilderUtil.java
@@ -16,6 +16,17 @@
  */
 package org.apache.sling.feature.builder;
 
+import org.apache.sling.feature.Application;
+import org.apache.sling.feature.Artifact;
+import org.apache.sling.feature.Bundles;
+import org.apache.sling.feature.Configuration;
+import org.apache.sling.feature.Configurations;
+import org.apache.sling.feature.Extension;
+import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.KeyValueMap;
+import org.osgi.resource.Capability;
+import org.osgi.resource.Requirement;
+
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.Enumeration;
@@ -32,17 +43,6 @@ import javax.json.JsonValue;
 import javax.json.JsonValue.ValueType;
 import javax.json.JsonWriter;
 
-import org.apache.sling.feature.Application;
-import org.apache.sling.feature.Artifact;
-import org.apache.sling.feature.Bundles;
-import org.apache.sling.feature.Configuration;
-import org.apache.sling.feature.Configurations;
-import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.KeyValueMap;
-import org.osgi.resource.Capability;
-import org.osgi.resource.Requirement;
-
 /**
  * Utility methods for the builders
  */
@@ -53,6 +53,11 @@ class BuilderUtil {
         HIGHEST
     };
 
+    // variables
+    public static void mergeVariables(KeyValueMap target, KeyValueMap source) {
+        target.putAll(source);
+    }
+
     // bundles
     static void mergeBundles(final Bundles target,
         final Bundles source,
diff --git a/src/test/java/org/apache/sling/feature/builder/ApplicationBuilderTest.java b/src/test/java/org/apache/sling/feature/builder/ApplicationBuilderTest.java
index dfeba3d..60f855a 100644
--- a/src/test/java/org/apache/sling/feature/builder/ApplicationBuilderTest.java
+++ b/src/test/java/org/apache/sling/feature/builder/ApplicationBuilderTest.java
@@ -16,17 +16,16 @@
  */
 package org.apache.sling.feature.builder;
 
-import static org.junit.Assert.assertEquals;
-
 import org.apache.sling.feature.Application;
 import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Feature;
 import org.apache.sling.feature.Include;
+import org.apache.sling.feature.KeyValueMap;
 import org.junit.Test;
 
-public class ApplicationBuilderTest {
-
+import static org.junit.Assert.assertEquals;
 
+public class ApplicationBuilderTest {
     @Test public void testIncludedFeatureProvided() throws Exception {
         final ArtifactId idA = ArtifactId.fromMvnId("g:a:1.0.0");
         final ArtifactId idB = ArtifactId.fromMvnId("g:b:1.0.0");
@@ -48,4 +47,28 @@ public class ApplicationBuilderTest {
         assertEquals(1, app.getFeatureIds().size());
         assertEquals(idB, app.getFeatureIds().get(0));
     }
+
+    @Test public void testMergeHandlesVariables() {
+        Application app = new Application();
+        app.getVariables().put("alreadythere", "aval");
+
+        Feature feat = new Feature(new ArtifactId("gid", "aid", "9.9.9", null, null));
+        KeyValueMap featVars = feat.getVariables();
+        featVars.put("xxx", "yyy");
+        featVars.put("zzz", "123");
+
+        BuilderContext ctx = new BuilderContext(new FeatureProvider() {
+            @Override
+            public Feature provide(ArtifactId id) {
+                return null;
+            }
+        });
+        ApplicationBuilder.assemble(app, ctx, feat);
+
+        KeyValueMap appVars = app.getVariables();
+        assertEquals(3, appVars.size());
+        assertEquals("aval", appVars.get("alreadythere"));
+        assertEquals("yyy", appVars.get("xxx"));
+        assertEquals("123", appVars.get("zzz"));
+    }
 }
diff --git a/src/test/java/org/apache/sling/feature/builder/BuilderUtilTest.java b/src/test/java/org/apache/sling/feature/builder/BuilderUtilTest.java
index 465da4b..298d104 100644
--- a/src/test/java/org/apache/sling/feature/builder/BuilderUtilTest.java
+++ b/src/test/java/org/apache/sling/feature/builder/BuilderUtilTest.java
@@ -21,7 +21,7 @@ import org.apache.sling.feature.ArtifactId;
 import org.apache.sling.feature.Bundles;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
-import org.apache.sling.feature.builder.BuilderUtil;
+import org.apache.sling.feature.KeyValueMap;
 import org.apache.sling.feature.builder.BuilderUtil.ArtifactMerge;
 import org.junit.Test;
 
@@ -168,6 +168,22 @@ public class BuilderUtilTest {
 
     }
 
+    @Test public void testMergeVariables() {
+        KeyValueMap target = new KeyValueMap();
+        target.put("x", "327");
+
+        KeyValueMap source = new KeyValueMap();
+        source.put("a", "b");
+
+        BuilderUtil.mergeVariables(target, source);
+        assertEquals(1, source.size());
+        assertEquals("b", source.get("a"));
+
+        assertEquals(2, target.size());
+        assertEquals("b", target.get("a"));
+        assertEquals("327", target.get("x"));
+    }
+
     public static Artifact createBundle(final String id, final int startOrder) {
         final Artifact a = new Artifact(ArtifactId.parse(id));
         a.getMetadata().put(Artifact.KEY_START_ORDER, String.valueOf(startOrder));