You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2016/05/01 12:56:49 UTC
[47/50] [abbrv] maven-aether git commit: Bug 451566 -
DefaultRepositorySystem.resolveDependencies() fails with NPE when dependency
collection fails early and yields not even a root node
Bug 451566 - DefaultRepositorySystem.resolveDependencies() fails with NPE when dependency collection fails early and yields not even a root node
Skipped artifact resolution step if dependency collection didn't yield any nodes and allowed underlying exception from collector to bubble up
Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/ab199198
Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/ab199198
Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/ab199198
Branch: refs/heads/master
Commit: ab19919869fb90be10e2904c6e01851d0b12dfef
Parents: 1cbc81d
Author: Benjamin Bentmann <be...@sonatype.com>
Authored: Sun Nov 16 22:02:02 2014 +0100
Committer: Benjamin Bentmann <be...@sonatype.com>
Committed: Sun Nov 16 22:02:02 2014 +0100
----------------------------------------------------------------------
.../internal/impl/DefaultRepositorySystem.java | 49 +++++++++++---------
.../impl/DefaultRepositorySystemTest.java | 34 ++++++++++++++
2 files changed, 62 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/ab199198/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
index 8882814..f15683f 100644
--- a/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
+++ b/aether-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultRepositorySystem.java
@@ -345,35 +345,42 @@ public class DefaultRepositorySystem
dce = e;
collectResult = e.getResult();
}
- result.setRoot( collectResult.getRoot() );
- result.setCycles( collectResult.getCycles() );
- result.setCollectExceptions( collectResult.getExceptions() );
+ if ( collectResult != null )
+ {
+ result.setRoot( collectResult.getRoot() );
+ result.setCycles( collectResult.getCycles() );
+ result.setCollectExceptions( collectResult.getExceptions() );
+ }
}
else
{
throw new IllegalArgumentException( "dependency node or collect request missing" );
}
- 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 );
- List<ArtifactRequest> requests = builder.getRequests();
-
- List<ArtifactResult> results;
- try
+ if ( result.getRoot() != null )
{
- results = artifactResolver.resolveArtifacts( session, requests );
- }
- catch ( ArtifactResolutionException e )
- {
- are = e;
- results = e.getResults();
- }
- result.setArtifactResults( results );
+ 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 );
+
+ List<ArtifactResult> results;
+ try
+ {
+ List<ArtifactRequest> requests = builder.getRequests();
+ results = artifactResolver.resolveArtifacts( session, requests );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ are = e;
+ results = e.getResults();
+ }
+ result.setArtifactResults( results );
- updateNodesWithResolvedArtifacts( results );
+ updateNodesWithResolvedArtifacts( results );
+ }
if ( dce != null )
{
http://git-wip-us.apache.org/repos/asf/maven-aether/blob/ab199198/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java
----------------------------------------------------------------------
diff --git a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java
index 2cdb035..9a0b609 100644
--- a/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java
+++ b/aether-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultRepositorySystemTest.java
@@ -16,10 +16,19 @@ import java.util.Arrays;
import java.util.List;
import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.collection.CollectResult;
+import org.eclipse.aether.collection.DependencyCollectionException;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.impl.DependencyCollector;
import org.eclipse.aether.internal.test.util.TestUtils;
import org.eclipse.aether.repository.Authentication;
import org.eclipse.aether.repository.Proxy;
import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.eclipse.aether.resolution.DependencyResolutionException;
import org.eclipse.aether.util.repository.AuthenticationBuilder;
import org.eclipse.aether.util.repository.DefaultAuthenticationSelector;
import org.eclipse.aether.util.repository.DefaultMirrorSelector;
@@ -103,4 +112,29 @@ public class DefaultRepositorySystemTest
assertSame( auth, deployRepo.getAuthentication() );
}
+ @Test
+ public void testResolveDependencies_NoRootNode()
+ throws Exception
+ {
+ DependencyRequest request = new DependencyRequest();
+ request.setCollectRequest( new CollectRequest().setRoot( new Dependency( new DefaultArtifact( "g:a:v" ), "" ) ) );
+ system.setDependencyCollector( new DependencyCollector()
+ {
+ public CollectResult collectDependencies( RepositorySystemSession session, CollectRequest request )
+ throws DependencyCollectionException
+ {
+ throw new DependencyCollectionException( null );
+ }
+ } );
+ try
+ {
+ system.resolveDependencies( session, request );
+ fail( "Expected exception" );
+ }
+ catch ( DependencyResolutionException e )
+ {
+ assertTrue( e.getCause() instanceof DependencyCollectionException );
+ }
+ }
+
}