Skip to content

Commit

Permalink
[MRESOLVER-447] Expose flatten method w/ filter (#389)
Browse files Browse the repository at this point in the history
As this now exposes full "third step" in resolveDependencies, so client code can reuse and have all of it.

---

https://issues.apache.org/jira/browse/MRESOLVER-447
  • Loading branch information
cstamas authored Dec 6, 2023
1 parent 45c5bdf commit a2e2912
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.eclipse.aether.deployment.DeployRequest;
import org.eclipse.aether.deployment.DeployResult;
import org.eclipse.aether.deployment.DeploymentException;
import org.eclipse.aether.graph.DependencyFilter;
import org.eclipse.aether.graph.DependencyNode;
import org.eclipse.aether.installation.InstallRequest;
import org.eclipse.aether.installation.InstallResult;
Expand Down Expand Up @@ -153,10 +154,12 @@ DependencyResult resolveDependencies(RepositorySystemSession session, Dependency
*
* @param session The repository session, must not be {@code null}.
* @param root The dependency node root of the graph, must not be {@code null}.
* @param filter The filter to apply, may be {@code null}.
* @return The flattened list of dependency nodes, never {@code null}.
* @since 2.0.0
*/
List<DependencyNode> flattenDependencyNodes(RepositorySystemSession session, DependencyNode root);
List<DependencyNode> flattenDependencyNodes(
RepositorySystemSession session, DependencyNode root, DependencyFilter filter);

/**
* Resolves the path for an artifact. The artifact will be downloaded to the local repository if necessary. An
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,13 +260,8 @@ public DependencyResult resolveDependencies(RepositorySystemSession session, Dep
throw new NullPointerException("dependency node and collect request cannot be null");
}

final ArrayList<DependencyNode> dependencyNodes = new ArrayList<>();
DependencyVisitor builder = getDependencyVisitor(session, dependencyNodes::add);
DependencyFilter filter = request.getFilter();
DependencyVisitor visitor = (filter != null) ? new FilteringDependencyVisitor(builder, filter) : builder;
if (result.getRoot() != null) {
result.getRoot().accept(visitor);
}
final List<DependencyNode> dependencyNodes =
doFlattenDependencyNodes(session, result.getRoot(), request.getFilter());

final List<ArtifactRequest> requests = dependencyNodes.stream()
.map(n -> {
Expand Down Expand Up @@ -302,12 +297,23 @@ public DependencyResult resolveDependencies(RepositorySystemSession session, Dep
}

@Override
public List<DependencyNode> flattenDependencyNodes(RepositorySystemSession session, DependencyNode root) {
public List<DependencyNode> flattenDependencyNodes(
RepositorySystemSession session, DependencyNode root, DependencyFilter dependencyFilter) {
validateSession(session);
requireNonNull(root, "root cannot be null");

return doFlattenDependencyNodes(session, root, dependencyFilter);
}

private List<DependencyNode> doFlattenDependencyNodes(
RepositorySystemSession session, DependencyNode root, DependencyFilter dependencyFilter) {
final ArrayList<DependencyNode> dependencyNodes = new ArrayList<>();
root.accept(getDependencyVisitor(session, dependencyNodes::add));
if (root != null) {
DependencyVisitor builder = getDependencyVisitor(session, dependencyNodes::add);
DependencyVisitor visitor =
(dependencyFilter != null) ? new FilteringDependencyVisitor(builder, dependencyFilter) : builder;
root.accept(visitor);
}
return dependencyNodes;
}

Expand Down

0 comments on commit a2e2912

Please sign in to comment.