[
https://issues.apache.org/jira/browse/MRESOLVER-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15930745#comment-15930745
]
Hudson commented on MRESOLVER-19:
---------------------------------
SUCCESS: Integrated in Jenkins build maven-resolver #48 (See
[https://builds.apache.org/job/maven-resolver/48/])
[MRESOLVER-19] DefaultRepositorySystem resolveDependencies() can yield a
(schulte:
[http://git-wip-us.apache.org/repos/asf/?p=maven-resolver.git&a=commit&h=3fc53c052f538169cb7dc6aa9ed9052514b569ca])
* (edit)
maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
> DefaultRepositorySystem resolveDependencies() can yield a NullPointerException
> ------------------------------------------------------------------------------
>
> Key: MRESOLVER-19
> URL: https://issues.apache.org/jira/browse/MRESOLVER-19
> Project: Maven Resolver
> Issue Type: Bug
> Components: resolver
> Affects Versions: Maven Artifact Resolver 1.0.3
> Reporter: Laird Nelson
> Assignee: Christian Schulte
> Fix For: Maven Artifact Resolver 1.1.0
>
>
> If a transfer of an artifact fails, then a {{NullPointerException}} is thrown.
> Starting from line 366:
> {code}
> ArtifactRequestBuilder builder = new ArtifactRequestBuilder( trace );
> DependencyFilter filter = request.getFilter();
> DependencyVisitor visitor = ( filter != null ) ? new
> FilteringDependencyVisitor( builder, filter ) : builder;
> visitor = new TreeDependencyVisitor( visitor );
> result.getRoot().accept( visitor ); // <-- if getRoot() is null: kaboom!
> List<ArtifactRequest> requests = builder.getRequests();
> {code}
> This is the relevant section of my code that causes the error:
> {code}
> final CollectRequest collectRequest = new CollectRequest();
> collectRequest.setRoot(new Dependency(artifact, JavaScopes.COMPILE));
> collectRequest.setRepositories(Collections.singletonList(mavenCentral));
> final DependencyRequest dependencyRequest = new
> DependencyRequest(collectRequest, classpathFilter);
> final DependencyResult dependencyResult =
> repositorySystem.resolveDependencies(repositorySystemSession,
> dependencyRequest);
> {code}
> From looking inside {{DefaultRepositorySystem.java}}, it looks like the
> collection result never gets its root set. At line 340 and following you see
> this:
> {code}
> if ( request.getRoot() != null )
> {
> result.setRoot( request.getRoot() );
> }
> else if ( request.getCollectRequest() != null )
> {
> CollectResult collectResult;
> try
> {
> request.getCollectRequest().setTrace( trace );
> collectResult = dependencyCollector.collectDependencies( session,
> request.getCollectRequest() );
> }
> catch ( DependencyCollectionException e )
> {
> dce = e;
> collectResult = e.getResult();
> }
> result.setRoot( collectResult.getRoot() );
> result.setCycles( collectResult.getCycles() );
> result.setCollectExceptions( collectResult.getExceptions() );
> }
> {code}
> Note in particular this line:
> {code}
> result.setRoot( collectResult.getRoot() );
> {code}
> Unless I'm missing something there's no guarantee that
> {{collectResult.getRoot()}} will be non-{{null}} if the collection request
> failed.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)