blob: 43d4cd2aee7fb7029a587a739a6490537bfb2334 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed 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.jetbrains.idea.maven.server.embedder;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.DefaultArtifactFactory;
import org.apache.maven.artifact.versioning.VersionRange;
public class CustomMaven3ArtifactFactory extends DefaultArtifactFactory {
private static final VersionRange UNKNOWN_VERSION_RANGE = VersionRange.createFromVersion("unknown");
private boolean myCustomized;
public void customize() {
myCustomized = true;
}
public void reset() {
myCustomized = false;
}
@Override
public Artifact createArtifact(String groupId, String artifactId, String version, String scope, String type) {
return wrap(super.createArtifact(checkValue(groupId), checkValue(artifactId), checkVersion(version), scope, type));
}
@Override
public Artifact createArtifactWithClassifier(String groupId, String artifactId, String version, String type, String classifier) {
return wrap(super.createArtifactWithClassifier(checkValue(groupId), checkValue(artifactId), checkVersion(version), type, classifier));
}
@Override
public Artifact createDependencyArtifact(String groupId, String artifactId, VersionRange versionRange, String type, String classifier, String scope) {
return wrap(super.createDependencyArtifact(checkValue(groupId), checkValue(artifactId), checkVersionRange(versionRange), type, classifier, scope));
}
@Override
public Artifact createDependencyArtifact(String groupId, String artifactId, VersionRange versionRange, String type, String classifier, String scope, boolean optional) {
return wrap(super.createDependencyArtifact(checkValue(groupId), checkValue(artifactId), checkVersionRange(versionRange), type, classifier, scope, optional));
}
@Override
public Artifact createDependencyArtifact(String groupId, String artifactId, VersionRange versionRange, String type, String classifier, String scope, String inheritedScope) {
return wrap(super.createDependencyArtifact(checkValue(groupId), checkValue(artifactId), checkVersionRange(versionRange), type, classifier, scope, inheritedScope));
}
@Override
public Artifact createDependencyArtifact(String groupId, String artifactId, VersionRange versionRange, String type, String classifier, String scope, String inheritedScope, boolean optional) {
return wrap(super.createDependencyArtifact(checkValue(groupId), checkValue(artifactId), checkVersionRange(versionRange), type, classifier, scope, inheritedScope, optional));
}
@Override
public Artifact createBuildArtifact(String groupId, String artifactId, String version, String packaging) {
return wrap(super.createBuildArtifact(checkValue(groupId), checkValue(artifactId), checkVersion(version), packaging));
}
@Override
public Artifact createProjectArtifact(String groupId, String artifactId, String version) {
return wrap(super.createProjectArtifact(checkValue(groupId), checkValue(artifactId), checkVersion(version)));
}
@Override
public Artifact createParentArtifact(String groupId, String artifactId, String version) {
return wrap(super.createParentArtifact(checkValue(groupId), checkValue(artifactId), checkVersion(version)));
}
@Override
public Artifact createPluginArtifact(String groupId, String artifactId, VersionRange versionRange) {
return wrap(super.createPluginArtifact(checkValue(groupId), checkValue(artifactId), checkVersionRange(versionRange)));
}
@Override
public Artifact createProjectArtifact(String groupId, String artifactId, String version, String scope) {
return wrap(super.createProjectArtifact(checkValue(groupId), checkValue(artifactId), checkVersion(version), scope));
}
@Override
public Artifact createExtensionArtifact(String groupId, String artifactId, VersionRange versionRange) {
return wrap(super.createExtensionArtifact(checkValue(groupId), checkValue(artifactId), checkVersionRange(versionRange)));
}
private Artifact wrap(Artifact a) {
if (!myCustomized) return a;
return a != null ? new CustomMaven3Artifact(a) : null;
}
private String checkValue(String value) {
return value == null || value.trim().length() == 0 ? "error" : value;
}
private String checkVersion(String value) {
return value == null ? "unknown" : value;
}
private VersionRange checkVersionRange(VersionRange range) {
return range == null ? UNKNOWN_VERSION_RANGE : range;
}
}