Laird Nelson created MRESOLVER-19: ------------------------------------- Summary: DefaultRepositorySystem resolveDependencies() line 370 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
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 357 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)