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
32
33
34
35 public final class AndDependencyFilter
36 implements DependencyFilter
37 {
38
39 private final Set<DependencyFilter> filters = new LinkedHashSet<DependencyFilter>();
40
41
42
43
44
45
46
47 public AndDependencyFilter( DependencyFilter... filters )
48 {
49 if ( filters != null )
50 {
51 Collections.addAll( this.filters, filters );
52 }
53 }
54
55
56
57
58
59
60 public AndDependencyFilter( Collection<DependencyFilter> filters )
61 {
62 if ( filters != null )
63 {
64 this.filters.addAll( filters );
65 }
66 }
67
68
69
70
71
72
73
74
75 public static DependencyFilter newInstance( DependencyFilter filter1, DependencyFilter filter2 )
76 {
77 if ( filter1 == null )
78 {
79 return filter2;
80 }
81 else if ( filter2 == null )
82 {
83 return filter1;
84 }
85 return new AndDependencyFilter( filter1, filter2 );
86 }
87
88 public boolean accept( DependencyNode node, List<DependencyNode> parents )
89 {
90 for ( DependencyFilter filter : filters )
91 {
92 if ( !filter.accept( node, parents ) )
93 {
94 return false;
95 }
96 }
97 return true;
98 }
99
100 @Override
101 public boolean equals( Object obj )
102 {
103 if ( this == obj )
104 {
105 return true;
106 }
107
108 if ( obj == null || !getClass().equals( obj.getClass() ) )
109 {
110 return false;
111 }
112
113 AndDependencyFilter that = (AndDependencyFilter) obj;
114
115 return this.filters.equals( that.filters );
116 }
117
118 @Override
119 public int hashCode()
120 {
121 int hash = getClass().hashCode();
122 hash = hash * 31 + filters.hashCode();
123 return hash;
124 }
125
126 }