You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:58:31 UTC

[sling-org-apache-sling-provisioning-model] 04/06: SLING-5318 : Sling provisioning model does not propagate Artifact metadata during processing. Apply patch from David Bosschaert

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

rombert pushed a commit to annotated tag org.apache.sling.provisioning.model-1.4.2
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-provisioning-model.git

commit 967d25a0bb0336717aca9b4d6a7de3476703fed7
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Nov 27 07:21:10 2015 +0000

    SLING-5318 : Sling provisioning model does not propagate Artifact metadata during processing. Apply patch from David Bosschaert
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/tooling/support/provisioning-model@1716803 13f79535-47bb-0310-9956-ffa450edef68
---
 .../apache/sling/provisioning/model/Artifact.java  | 20 +++++++++++++++
 .../model/EffectiveModelProcessor.java             |  4 +--
 .../sling/provisioning/model/ModelUtility.java     |  3 ++-
 .../sling/provisioning/model/package-info.java     |  2 +-
 .../org/apache/sling/provisioning/model/U.java     | 30 ++++++++++++++--------
 src/test/resources/example.txt                     |  4 +--
 6 files changed, 46 insertions(+), 17 deletions(-)

diff --git a/src/main/java/org/apache/sling/provisioning/model/Artifact.java b/src/main/java/org/apache/sling/provisioning/model/Artifact.java
index 9649671..f410066 100644
--- a/src/main/java/org/apache/sling/provisioning/model/Artifact.java
+++ b/src/main/java/org/apache/sling/provisioning/model/Artifact.java
@@ -16,6 +16,7 @@
  */
 package org.apache.sling.provisioning.model;
 
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -54,6 +55,24 @@ public class Artifact extends Commentable implements Comparable {
             final String version,
             final String classifier,
             final String type) {
+        this(gId, aId, version, classifier, type, Collections.<String, String>emptyMap());
+    }
+
+    /**
+     * Create a new artifact object
+     * @param gId   The group id (required)
+     * @param aId   The artifact id (required)
+     * @param version The version (required)
+     * @param classifier The classifier (optional)
+     * @param type The type/extension (optional, defaults to jar)
+     * @param metadata The metadata associated with the Artifact
+     */
+    public Artifact(final String gId,
+            final String aId,
+            final String version,
+            final String classifier,
+            final String type,
+            final Map<String, String> metadata) {
         this.groupId = (gId != null ? gId.trim() : null);
         this.artifactId = (aId != null ? aId.trim() : null);
         this.version = (version != null ? version.trim() : null);
@@ -69,6 +88,7 @@ public class Artifact extends Commentable implements Comparable {
         } else {
             this.classifier = trimmedClassifier;
         }
+        this.metadata.putAll(metadata);
     }
 
     /**
diff --git a/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java b/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java
index 8a18d8f..c2efa5c 100644
--- a/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java
+++ b/src/main/java/org/apache/sling/provisioning/model/EffectiveModelProcessor.java
@@ -31,7 +31,7 @@ import org.apache.sling.provisioning.model.ModelUtility.VariableResolver;
  * Resolves all variables and artifact dependencies for the {@link ModelUtility#getEffectiveModel(Model)} method.
  */
 class EffectiveModelProcessor extends ModelProcessor {
-    
+
     private final ResolverOptions options;
 
     public EffectiveModelProcessor(ResolverOptions options) {
@@ -50,7 +50,7 @@ class EffectiveModelProcessor extends ModelProcessor {
         final String type = replace(newFeature, artifact.getType(), options.getVariableResolver());
         final String resolvedVersion = resolveArtifactVersion(groupId, artifactId, version, classifier, type,
                 options.getArtifactVersionResolver());
-        return new Artifact(groupId, artifactId, resolvedVersion, classifier, type);
+        return new Artifact(groupId, artifactId, resolvedVersion, classifier, type, artifact.getMetadata());
     }
 
     @Override
diff --git a/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java b/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
index f01445d..376a80a 100644
--- a/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
+++ b/src/main/java/org/apache/sling/provisioning/model/ModelUtility.java
@@ -310,7 +310,8 @@ public abstract class ModelUtility {
                         artifact.getArtifactId(),
                         newVersion,
                         artifact.getClassifier(),
-                        artifact.getType());
+                        artifact.getType(),
+                        artifact.getMetadata());
             }
         };
 
diff --git a/src/main/java/org/apache/sling/provisioning/model/package-info.java b/src/main/java/org/apache/sling/provisioning/model/package-info.java
index 656dcb0..a8beffb 100644
--- a/src/main/java/org/apache/sling/provisioning/model/package-info.java
+++ b/src/main/java/org/apache/sling/provisioning/model/package-info.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-@Version("1.4.0")
+@Version("1.5.0")
 package org.apache.sling.provisioning.model;
 
 import aQute.bnd.annotation.Version;
diff --git a/src/test/java/org/apache/sling/provisioning/model/U.java b/src/test/java/org/apache/sling/provisioning/model/U.java
index 45ac79c..064cc0e 100644
--- a/src/test/java/org/apache/sling/provisioning/model/U.java
+++ b/src/test/java/org/apache/sling/provisioning/model/U.java
@@ -16,22 +16,23 @@
  */
 package org.apache.sling.provisioning.model;
 
-import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_RUN_MODE;
-import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_START_LEVEL;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
 import org.apache.sling.provisioning.model.io.ModelReader;
 
+import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_RUN_MODE;
+import static org.apache.sling.provisioning.model.ModelConstants.DEFAULT_START_LEVEL;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 /** Test utilities */
 public class U {
 
@@ -39,10 +40,16 @@ public class U {
             new String[] {"boot.txt", "example.txt", "main.txt", "oak.txt"};
 
     public static void assertArtifact(ArtifactGroup g, String mvnUrl) {
+        assertArtifact(g, mvnUrl, Collections.<String,String>emptyMap());
+    }
+
+    public static void assertArtifact(ArtifactGroup g, String mvnUrl, Map<String, String> metadata) {
         final Artifact a = Artifact.fromMvnUrl(mvnUrl);
-        if(!g.items.contains(a)) {
+        int idx = g.items.indexOf(a);
+        if(idx < 0) {
             fail("Expecting ArtifactGroup to contain '" + mvnUrl + "': " + g);
         }
+        assertEquals("Incorrect metadata", metadata, g.items.get(idx).getMetadata());
     }
 
     /** Read our test model by merging our TEST_MODEL_FILENAMES */
@@ -111,7 +118,8 @@ public class U {
 
         {
             final ArtifactGroup g = getGroup(m, "example", DEFAULT_RUN_MODE, DEFAULT_START_LEVEL);
-            U.assertArtifact(g, "mvn:commons-collections/commons-collections/3.2.1/jar");
+            U.assertArtifact(g, "mvn:commons-collections/commons-collections/3.2.1/jar",
+                    Collections.singletonMap("private-packages", "*"));
             U.assertArtifact(g, "mvn:org.example/jar-is-default/1.2/jar");
         }
 
@@ -135,7 +143,7 @@ public class U {
         final Feature exampleFeature = m.getFeature("example");
         final RunMode defaultExampleRM = exampleFeature.getRunMode();
         final List<Configuration> configs = assertConfigurationsInRunMode(defaultExampleRM, 3);
-        assertEquals(FeatureTypes.SUBSYSTEM_FEATURE, exampleFeature.getType());
+        assertEquals(FeatureTypes.SUBSYSTEM_COMPOSITE, exampleFeature.getType());
         final Configuration cfg = assertConfiguration(configs, "org.apache.sling.another.config");
     }
 
diff --git a/src/test/resources/example.txt b/src/test/resources/example.txt
index 8dc198b..796ce17 100644
--- a/src/test/resources/example.txt
+++ b/src/test/resources/example.txt
@@ -20,7 +20,7 @@
 #
 # A feature consists of variables and run mode dependent artifacts.
 #
-[feature name=example type=osgi.subsystem.feature]
+[feature name=example type=osgi.subsystem.composite]
 # The variables are global and can be used within artifact definitions, configurations,
 # and settings.
 #
@@ -38,7 +38,7 @@
 [artifacts]
     commons-io/commons-io/1.4/jar
     commons-fileupload/commons-fileupload/1.3.1/jar
-    commons-collections/commons-collections/3.2.1/jar
+    commons-collections/commons-collections/3.2.1/jar [private-packages=*]
     commons-codec/commons-codec/1.9/jar
     commons-lang/commons-lang/2.6/jar
     org.apache.commons/commons-math/2.2/jar

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.