/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.codehaus.mojo.pom; import java.util.regex.Pattern; import org.apache.maven.model.Dependency; import org.apache.maven.project.MavenProject; /** * @author joerg * */ public class DependencyPatternMatcher extends DependencyInfo { private final Pattern patternGroupId; private final Pattern patternArtifactId; private final Pattern patternVersion; /** * @param dependency */ public DependencyPatternMatcher(Dependency dependency) { this(dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), dependency .getType(), dependency.getScope(), dependency.getClassifier()); } /** * @param project */ public DependencyPatternMatcher(MavenProject project) { this(project.getGroupId(), project.getArtifactId(), project.getVersion(), project .getPackaging(), null, null); } /** * @param groupId * @param artifactId * @param version * @param type * @param scope * @param classifier */ public DependencyPatternMatcher(String groupId, String artifactId, String version, String type, String scope, String classifier) { super(groupId, artifactId, version, type, scope, classifier); this.patternGroupId = compileGlob(groupId); this.patternArtifactId = compileGlob(artifactId); this.patternVersion = compileGlob(version); } private static Pattern compileGlob(String pattern) { if (pattern == null) { return null; } String globPattern = pattern.replace("\\", "\\\\").replace("^", "\\^").replace("+", "\\+") .replace("$", "\\$").replace(".", "\\.").replace("(", "\\(").replace("[", "\\[").replace( "{", "\\{").replace("*", ".*").replace("?", "."); return Pattern.compile(globPattern); } /** * {@inheritDoc} */ @Override public boolean isMatching(String groupId, String artifactId, String version, String type, String scope, String classifier) { if (this.patternGroupId != null) { if (!this.patternGroupId.matcher(groupId).matches()) { return false; } } if (this.patternArtifactId != null) { if (!this.patternArtifactId.matcher(artifactId).matches()) { return false; } } if (this.patternVersion != null) { if (!this.patternVersion.matcher(version).matches()) { return false; } } return super.isMatching(null, null, null, type, scope, classifier); } }