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));