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