You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by to...@apache.org on 2017/08/18 08:48:37 UTC

svn commit: r1805389 - in /sling/trunk/tooling/maven/slingstart-maven-plugin: pom.xml src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java

Author: tomekr
Date: Fri Aug 18 08:48:36 2017
New Revision: 1805389

URL: http://svn.apache.org/viewvc?rev=1805389&view=rev
Log:
SLING-7054: Slingstart artifacts with parametrized version not removed from the effective slingstart model


Modified:
    sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml
    sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java

Modified: sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml?rev=1805389&r1=1805388&r2=1805389&view=diff
==============================================================================
--- sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml (original)
+++ sling/trunk/tooling/maven/slingstart-maven-plugin/pom.xml Fri Aug 18 08:48:36 2017
@@ -110,7 +110,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.provisioning.model</artifactId>
-            <version>1.8.2</version>
+            <version>1.8.3-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>

Modified: sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java?rev=1805389&r1=1805388&r2=1805389&view=diff
==============================================================================
--- sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java (original)
+++ sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/ModelPreprocessor.java Fri Aug 18 08:48:36 2017
@@ -24,6 +24,7 @@ import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -47,6 +48,7 @@ import org.apache.sling.provisioning.mod
 import org.apache.sling.provisioning.model.MergeUtility;
 import org.apache.sling.provisioning.model.Model;
 import org.apache.sling.provisioning.model.ModelConstants;
+import org.apache.sling.provisioning.model.ModelResolveUtility;
 import org.apache.sling.provisioning.model.ModelUtility;
 import org.apache.sling.provisioning.model.ModelUtility.ResolverOptions;
 import org.apache.sling.provisioning.model.RunMode;
@@ -165,7 +167,7 @@ public class ModelPreprocessor {
         // we have to create an effective model to add the dependencies
         final Model effectiveModel = ModelUtility.getEffectiveModel(copyModel, resolverOptions);
 
-        final List<Model> dependencies = searchSlingstartDependencies(env, info, copyModel, effectiveModel);
+        final List<Model> dependencies = searchSlingstartDependencies(env, info, copyModel, effectiveModel, resolverOptions);
         info.model = new Model();
         for(final Model d : dependencies) {
             this.mergeModels(info.model, d);
@@ -267,7 +269,8 @@ public class ModelPreprocessor {
             final Environment env,
             final ProjectInfo info,
             final Model rawModel,
-            final Model effectiveModel)
+            final Model effectiveModel,
+            final ResolverOptions resolverOptions)
     throws MavenExecutionException {
         // slingstart or slingfeature
         final List<Model> dependencies = new ArrayList<>();
@@ -323,7 +326,7 @@ public class ModelPreprocessor {
                                     if ( errors != null ) {
                                         throw new MavenExecutionException("Unable to read model file from " + modelFile + " : " + errors, modelFile);
                                     }
-                                    final Model fullModel = processSlingstartDependencies(env, info, dep,  model);
+                                    final Model fullModel = processSlingstartDependencies(env, info, dep,  model, resolverOptions);
 
                                     dependencies.add(fullModel);
                                 } catch ( final IOException ioe) {
@@ -350,7 +353,7 @@ public class ModelPreprocessor {
                             if ( localRunMode != null ) {
                                 final ArtifactGroup localAG = localRunMode.getArtifactGroup(group.getStartLevel());
                                 if ( localAG != null ) {
-                                    localAG.remove(r);
+                                    removeArtifact(localModelFeature, localAG, r, resolverOptions);
                                 }
                             }
                         }
@@ -362,14 +365,32 @@ public class ModelPreprocessor {
         return dependencies;
     }
 
-    private Model processSlingstartDependencies(final Environment env, final ProjectInfo info, final Dependency dep, final Model rawModel)
+    private static void removeArtifact(Feature feature, ArtifactGroup group, org.apache.sling.provisioning.model.Artifact toRemove, ResolverOptions resolverOptions) {
+        Iterator<org.apache.sling.provisioning.model.Artifact> it = group.iterator();
+        while (it.hasNext()) {
+            org.apache.sling.provisioning.model.Artifact el = it.next();
+
+            String version = ModelResolveUtility.replace(feature, el.getVersion(), resolverOptions.getVariableResolver());
+            org.apache.sling.provisioning.model.Artifact resolved;
+            if (el.getVersion().equals(version)) {
+                resolved = el;
+            } else {
+                resolved = new org.apache.sling.provisioning.model.Artifact(el.getGroupId(), el.getArtifactId(), version, el.getClassifier(), el.getType());
+            }
+            if (resolved.equals(toRemove)) {
+                it.remove();
+            }
+        }
+    }
+
+    private Model processSlingstartDependencies(final Environment env, final ProjectInfo info, final Dependency dep, final Model rawModel, ResolverOptions resolverOptions)
     throws MavenExecutionException {
         env.logger.debug("Processing dependency " + dep);
 
         // we have to create an effective model to add the dependencies
         final Model effectiveModel = ModelUtility.getEffectiveModel(rawModel, new ResolverOptions());
 
-        final List<Model> dependencies = searchSlingstartDependencies(env, info, rawModel, effectiveModel);
+        final List<Model> dependencies = searchSlingstartDependencies(env, info, rawModel, effectiveModel, resolverOptions);
         Model mergingModel = new Model();
         for(final Model d : dependencies) {
             this.mergeModels(mergingModel, d);