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.shared.dependency.analyzer;
20
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.regex.Pattern;
24 import java.util.stream.Collectors;
25
26 /**
27 * Patterns for classes
28 */
29 public class ClassesPatterns {
30
31 private final Collection<Pattern> patterns;
32
33 /**
34 * Default constructor.
35 *
36 * @param patterns a patterns to mach
37 */
38 public ClassesPatterns(Collection<String> patterns) {
39 if (patterns == null) {
40 this.patterns = Collections.emptyList();
41 } else {
42 this.patterns = patterns.stream().map(Pattern::compile).collect(Collectors.toSet());
43 }
44 }
45
46 public ClassesPatterns() {
47 this.patterns = Collections.emptySet();
48 }
49
50 public boolean isMatch(String className) {
51 if (patterns.isEmpty()) {
52 return false;
53 }
54 return patterns.stream().anyMatch(pattern -> pattern.matcher(className).matches());
55 }
56 }