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