1 package org.eclipse.aether.util.filter;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Collection;
23 import java.util.Collections;
24 import java.util.LinkedHashSet;
25 import java.util.List;
26 import java.util.Set;
27
28 import org.eclipse.aether.graph.DependencyFilter;
29 import org.eclipse.aether.graph.DependencyNode;
30
31 import static java.util.Objects.requireNonNull;
32
33
34
35
36
37 public final class AndDependencyFilter
38 implements DependencyFilter
39 {
40
41 private final Set<DependencyFilter> filters = new LinkedHashSet<>();
42
43
44
45
46
47
48
49 public AndDependencyFilter( DependencyFilter... filters )
50 {
51 if ( filters != null )
52 {
53 Collections.addAll( this.filters, filters );
54 }
55 }
56
57
58
59
60
61
62 public AndDependencyFilter( Collection<DependencyFilter> filters )
63 {
64 if ( filters != null )
65 {
66 this.filters.addAll( filters );
67 }
68 }
69
70
71
72
73
74
75
76
77 public static DependencyFilter newInstance( DependencyFilter filter1, DependencyFilter filter2 )
78 {
79 if ( filter1 == null )
80 {
81 return filter2;
82 }
83 else if ( filter2 == null )
84 {
85 return filter1;
86 }
87 return new AndDependencyFilter( filter1, filter2 );
88 }
89
90 public boolean accept( DependencyNode node, List<DependencyNode> parents )
91 {
92 requireNonNull( node, "node cannot be null" );
93 requireNonNull( parents, "parents cannot be null" );
94 for ( DependencyFilter filter : filters )
95 {
96 if ( !filter.accept( node, parents ) )
97 {
98 return false;
99 }
100 }
101 return true;
102 }
103
104 @Override
105 public boolean equals( Object obj )
106 {
107 if ( this == obj )
108 {
109 return true;
110 }
111
112 if ( obj == null || !getClass().equals( obj.getClass() ) )
113 {
114 return false;
115 }
116
117 AndDependencyFilter that = (AndDependencyFilter) obj;
118
119 return this.filters.equals( that.filters );
120 }
121
122 @Override
123 public int hashCode()
124 {
125 int hash = getClass().hashCode();
126 hash = hash * 31 + filters.hashCode();
127 return hash;
128 }
129
130 }