[ https://issues.apache.org/jira/browse/MRESOLVER-19?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Laird Nelson updated MRESOLVER-19: ---------------------------------- Description: 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. was: 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. > 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 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)