View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.artifact.resolver.filter;
20  
21  import java.util.Collection;
22  import java.util.LinkedHashSet;
23  import java.util.Set;
24  import org.apache.maven.artifact.Artifact;
25  
26  /**
27   * Apply multiple filters, accepting an artifact if at least one of the filters accepts it.
28   *
29   * @author Benjamin Bentmann
30   */
31  public class OrArtifactFilter implements ArtifactFilter {
32  
33      private Set<ArtifactFilter> filters;
34  
35      public OrArtifactFilter() {
36          this.filters = new LinkedHashSet<>();
37      }
38  
39      public OrArtifactFilter(Collection<ArtifactFilter> filters) {
40          this.filters = new LinkedHashSet<>(filters);
41      }
42  
43      public boolean include(Artifact artifact) {
44          for (ArtifactFilter filter : filters) {
45              if (filter.include(artifact)) {
46                  return true;
47              }
48          }
49  
50          return false;
51      }
52  
53      public void add(ArtifactFilter artifactFilter) {
54          filters.add(artifactFilter);
55      }
56  
57      @Override
58      public int hashCode() {
59          int hash = 17;
60          hash = hash * 31 + filters.hashCode();
61          return hash;
62      }
63  
64      @Override
65      public boolean equals(Object obj) {
66          if (this == obj) {
67              return true;
68          }
69  
70          if (!(obj instanceof OrArtifactFilter)) {
71              return false;
72          }
73  
74          OrArtifactFilter other = (OrArtifactFilter) obj;
75  
76          return filters.equals(other.filters);
77      }
78  }