{
validateSession( session );
RequestTrace trace = DefaultRequestTrace.newChild( request.getTrace(), request );
DependencyResult result = new DependencyResult( request );
DependencyCollectionException dce = null;
ArtifactResolutionException are = null;
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.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
{
results = artifactResolver.resolveArtifacts( session, requests );
}
catch ( ArtifactResolutionException e )
{
are = e;
results = e.getResults();
}
result.setArtifactResults( results );
updateNodesWithResolvedArtifacts( results );
if ( dce != null )
{