1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.enforcer.rules.utils;
20
21 import java.util.HashMap;
22 import java.util.Map;
23 import java.util.Stack;
24
25 import org.eclipse.aether.graph.DependencyNode;
26 import org.eclipse.aether.graph.DependencyVisitor;
27
28
29
30
31 public class ParentsVisitor implements DependencyVisitor, ParentNodeProvider {
32
33 private final Map<DependencyNode, DependencyNode> parents = new HashMap<>();
34 private final Stack<DependencyNode> parentStack = new Stack<>();
35
36 @Override
37 public DependencyNode getParent(DependencyNode node) {
38 return parents.get(node);
39 }
40
41 @Override
42 public boolean visitEnter(DependencyNode node) {
43 parents.put(node, parentStack.isEmpty() ? null : parentStack.peek());
44 parentStack.push(node);
45 return true;
46 }
47
48 @Override
49 public boolean visitLeave(DependencyNode node) {
50 parentStack.pop();
51 return true;
52 }
53 }