/** * Copyright 2015-2016 Red Hat, Inc, and individual contributors. * * 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.wildfly.swarm.tools; import java.io.File; import org.wildfly.swarm.bootstrap.util.MavenArtifactDescriptor; import org.wildfly.swarm.fractions.FractionDescriptor; /** * @author Bob McWhirter */ public class ArtifactSpec extends MavenArtifactDescriptor { public final String scope; public File file; public boolean shouldGather = true; public ArtifactSpec(final String scope, final String groupId, final String artifactId, final String version, final String packaging, final String classifier, final File file) { super(groupId, artifactId, packaging, classifier, version); this.scope = scope; this.file = file; } public static ArtifactSpec fromMscGav(String gav) { String[] parts = gav.split(":"); if (parts.length == 3) { return new ArtifactSpec("compile", parts[0], parts[1], parts[2], "jar", null, null); } else if (parts.length == 4) { return new ArtifactSpec("compile", parts[0], parts[1], parts[2], "jar", parts[3], null); } else { throw new RuntimeException("Invalid gav: " + gav); } } public FractionDescriptor toFractionDescriptor() { return new FractionDescriptor(groupId(), artifactId(), version()); } public static ArtifactSpec fromFractionDescriptor(FractionDescriptor descriptor) { return fromMscGav(descriptor.toString()); } public String jarName() { String classifier = classifier(); if (classifier != null && classifier.length() > 0) { classifier = "-" + classifier; } else { classifier = ""; } return String.format("%s-%s%s.%s", artifactId(), version(), classifier, type()); } public String jarRepoPath() { return String.format("%s/%s/%s/%s", groupId().replace('.', '/'), artifactId(), version(), jarName()); } public boolean isResolved() { return this.file != null; } public String toString() { return mavenGav() + " [" + this.scope + "]"; } }