001: package org.apache.maven.project.artifact;
002:
003: /*
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021:
022: import org.apache.maven.artifact.Artifact;
023: import org.apache.maven.artifact.DefaultArtifact;
024: import org.apache.maven.artifact.InvalidArtifactRTException;
025: import org.apache.maven.artifact.handler.ArtifactHandler;
026: import org.apache.maven.artifact.metadata.ArtifactMetadata;
027: import org.apache.maven.artifact.repository.ArtifactRepository;
028: import org.apache.maven.artifact.versioning.VersionRange;
029:
030: import java.util.Collection;
031: import java.util.Collections;
032: import java.util.List;
033:
034: public class AttachedArtifact extends DefaultArtifact {
035:
036: private final Artifact parent;
037:
038: public AttachedArtifact(Artifact parent, String type,
039: String classifier, ArtifactHandler artifactHandler) {
040: super (parent.getGroupId(), parent.getArtifactId(), parent
041: .getVersionRange(), parent.getScope(), type,
042: classifier, artifactHandler, parent.isOptional());
043:
044: setDependencyTrail(Collections.singletonList(parent.getId()));
045:
046: this .parent = parent;
047:
048: if (getId().equals(parent.getId())) {
049: throw new InvalidArtifactRTException(
050: parent.getGroupId(),
051: parent.getArtifactId(),
052: parent.getVersion(),
053: parent.getType(),
054: "An attached artifact must have a different ID than its corresponding main artifact.");
055: }
056: }
057:
058: public AttachedArtifact(Artifact parent, String type,
059: ArtifactHandler artifactHandler) {
060: this (parent, type, null, artifactHandler);
061: }
062:
063: public void setArtifactId(String artifactId) {
064: throw new UnsupportedOperationException(
065: "Cannot change the artifactId for an attached artifact. It is derived from the main artifact.");
066: }
067:
068: public List getAvailableVersions() {
069: return parent.getAvailableVersions();
070: }
071:
072: public void setAvailableVersions(List availableVersions) {
073: throw new UnsupportedOperationException(
074: "Cannot change the version information for an attached artifact. It is derived from the main artifact.");
075: }
076:
077: public String getBaseVersion() {
078: return parent.getBaseVersion();
079: }
080:
081: public void setBaseVersion(String baseVersion) {
082: throw new UnsupportedOperationException(
083: "Cannot change the version information for an attached artifact. It is derived from the main artifact.");
084: }
085:
086: public String getDownloadUrl() {
087: return parent.getDownloadUrl();
088: }
089:
090: public void setDownloadUrl(String downloadUrl) {
091: throw new UnsupportedOperationException(
092: "Cannot change the download information for an attached artifact. It is derived from the main artifact.");
093: }
094:
095: public void setGroupId(String groupId) {
096: throw new UnsupportedOperationException(
097: "Cannot change the groupId on attached artifacts. It is derived from the main artifact.");
098: }
099:
100: public ArtifactRepository getRepository() {
101: return parent.getRepository();
102: }
103:
104: public void setRepository(ArtifactRepository repository) {
105: throw new UnsupportedOperationException(
106: "Cannot change the repository information for an attached artifact. It is derived from the main artifact.");
107: }
108:
109: public String getScope() {
110: return parent.getScope();
111: }
112:
113: public void setScope(String scope) {
114: throw new UnsupportedOperationException(
115: "Cannot change the scoping information for an attached artifact. It is derived from the main artifact.");
116: }
117:
118: public String getVersion() {
119: return parent.getVersion();
120: }
121:
122: public void setVersion(String version) {
123: throw new UnsupportedOperationException(
124: "Cannot change the version information for an attached artifact. It is derived from the main artifact.");
125: }
126:
127: public VersionRange getVersionRange() {
128: return parent.getVersionRange();
129: }
130:
131: public void setVersionRange(VersionRange range) {
132: throw new UnsupportedOperationException(
133: "Cannot change the version information for an attached artifact. It is derived from the main artifact.");
134: }
135:
136: public boolean isRelease() {
137: return parent.isRelease();
138: }
139:
140: public void setRelease(boolean release) {
141: throw new UnsupportedOperationException(
142: "Cannot change the version information for an attached artifact. It is derived from the main artifact.");
143: }
144:
145: public boolean isSnapshot() {
146: return parent.isSnapshot();
147: }
148:
149: public void addMetadata(ArtifactMetadata metadata) {
150: // ignore. The parent artifact will handle metadata.
151: // we must fail silently here to avoid problems with the artifact transformers.
152: }
153:
154: public Collection getMetadataList() {
155: return Collections.EMPTY_LIST;
156: }
157:
158: }
|