Hans Aikema created MSHARED-998:
-----------------------------------

             Summary: NPE when resolving dependencies with 
PatternInclusionsFilter that holds a pattern with a classifier
                 Key: MSHARED-998
                 URL: https://issues.apache.org/jira/browse/MSHARED-998
             Project: Maven Shared Components
          Issue Type: Improvement
          Components: maven-artifact-transfer
    Affects Versions: maven-artifact-transfer-0.13.1
            Reporter: Hans Aikema


After migrating from ArtifactResolver to DependencyResolver in OWASP 
DependencyCheck in order to properly take repositories into account that are 
expected to be added by the ancestry of a transitive dependency we received 
notifications of NullPointerExceptions during dependencyresolution in our 
plugin.

Analysis has led me to believe that its rootcause is a bug in 
Maven31DependencyResolver.

The issues in our project:

[https://github.com/jeremylong/DependencyCheck/issues/3679]

[https://github.com/jeremylong/DependencyCheck/issues/3694]

We call [resolveDependencies(ProjectBuildingRequest , Collection<Dependency> , 
Collection<Dependency>, 
TransformableFilter)|https://github.com/apache/maven-artifact-transfer/blob/ea7e7af3a97dda668166c481c3eb075bca5b51d6/maven-artifact-transfer-api/src/main/java/org/apache/maven/shared/transfer/dependencies/resolve/DependencyResolver.java#L76]
 with an 
org.apache.maven.shared.artifact.filter.resolve.PatternInclusionsFilter.

This works fine for a pattern {{<group>:<artifact>:<extension>:<version>}}, but 
fails with an NPE for a pattern 
{{<group>:<artifact>:<extension>:<classifier>:<version>}}.

Maven31DependencyResolver implementation creates a root-less CollectRequest 
which is transformed into a DependencyRequest that is offered to the 
RepositorySystem.

The rootless (no {{root}} and no {{rootArtifact}}) CollectRequest results in a 
null-filled {{new DefaultDependencyNode(null)}} root to be received in the 
CollectResult in DefaultRepositorySystem.

This null-artifact root of the CollectResult than triggers the NPE (inside the 
filter constructed inside newAdvancedPatternInclusionFilter of 
org.apache.maven.shared.artifact.filter.resolve.transform.EclipseAetherFilterTransformer)
 when that filter tries to determine the classifier of the rootNode when the 
filtering visitor starts traversing the tree.







--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to