You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Laird Nelson (JIRA)" <ji...@apache.org> on 2017/03/17 18:14:41 UTC
[jira] [Created] (MRESOLVER-19) DefaultRepositorySystem
resolveDependencies() line 370 can yield a NullPointerException
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)