You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/08/27 10:55:43 UTC

svn commit: r1698093 - /sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java

Author: cziegeler
Date: Thu Aug 27 08:55:43 2015
New Revision: 1698093

URL: http://svn.apache.org/r1698093
Log:
SLING-4970 : Potential NPE with transitive models

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

Modified: sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java?rev=1698093&r1=1698092&r2=1698093&view=diff
==============================================================================
--- sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java (original)
+++ sling/trunk/tooling/maven/slingstart-maven-plugin/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java Thu Aug 27 08:55:43 2015
@@ -166,7 +166,7 @@ public class DependencyLifecycleParticip
         // we have to create an effective model to add the dependencies
         final Model effectiveModel = ModelUtility.getEffectiveModel(info.localModel, resolverOptions);
 
-        final List<Model> dependencies = searchSlingstartDependencies(env, info, effectiveModel);
+        final List<Model> dependencies = searchSlingstartDependencies(env, info, info.localModel, effectiveModel);
         info.model = new Model();
         for(final Model d : dependencies) {
             ModelUtility.merge(info.model, d);
@@ -255,6 +255,7 @@ public class DependencyLifecycleParticip
     private static List<Model> searchSlingstartDependencies(
             final Environment env,
             final ProjectInfo info,
+            final Model rawModel,
             final Model effectiveModel)
     throws MavenExecutionException {
         // slingstart or slingfeature
@@ -332,7 +333,16 @@ public class DependencyLifecycleParticip
                     }
                     for(final org.apache.sling.provisioning.model.Artifact r : removeList) {
                         group.remove(r);
-                        info.localModel.getFeature(feature.getName()).getRunMode(runMode.getNames()).getArtifactGroup(group.getStartLevel()).remove(r);
+                        final Feature localModelFeature = rawModel.getFeature(feature.getName());
+                        if ( localModelFeature != null ) {
+                            final RunMode localRunMode = localModelFeature.getRunMode(runMode.getNames());
+                            if ( localRunMode != null ) {
+                                final ArtifactGroup localAG = localRunMode.getArtifactGroup(group.getStartLevel());
+                                if ( localAG != null ) {
+                                    localAG.remove(r);
+                                }
+                            }
+                        }
                     }
                 }
             }
@@ -348,7 +358,7 @@ public class DependencyLifecycleParticip
         // 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, effectiveModel);
+        final List<Model> dependencies = searchSlingstartDependencies(env, info, rawModel, effectiveModel);
         Model mergingModel = new Model();
         for(final Model d : dependencies) {
             ModelUtility.merge(mergingModel, d);