001package 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 022import org.apache.maven.artifact.Artifact; 023import org.apache.maven.artifact.DefaultArtifact; 024import org.apache.maven.artifact.InvalidArtifactRTException; 025import org.apache.maven.artifact.handler.ArtifactHandler; 026import org.apache.maven.artifact.metadata.ArtifactMetadata; 027import org.apache.maven.artifact.repository.ArtifactRepository; 028import org.apache.maven.artifact.versioning.ArtifactVersion; 029import org.apache.maven.artifact.versioning.VersionRange; 030 031import java.util.Collection; 032import java.util.Collections; 033import java.util.List; 034 035/** 036 *<strong>Warning:</strong> This is an internal utility class that is only public for technical reasons, it is not part 037 * of the public API. In particular, this class can be changed or deleted without prior notice. Use 038 * {@link org.apache.maven.project.MavenProjectHelper#attachArtifact} instead. 039 */ 040@Deprecated 041public class AttachedArtifact 042 extends DefaultArtifact 043{ 044 045 private final Artifact parent; 046 047 public AttachedArtifact( Artifact parent, String type, String classifier, ArtifactHandler artifactHandler ) 048 { 049 super( parent.getGroupId(), parent.getArtifactId(), parent.getVersionRange(), parent.getScope(), type, 050 classifier, artifactHandler, parent.isOptional() ); 051 052 setDependencyTrail( Collections.singletonList( parent.getId() ) ); 053 054 this.parent = parent; 055 056 if ( getId().equals( parent.getId() ) ) 057 { 058 throw new InvalidArtifactRTException( parent.getGroupId(), parent.getArtifactId(), parent.getVersion(), 059 parent.getType(), "An attached artifact must have a different ID" 060 + " than its corresponding main artifact." ); 061 } 062 } 063 064 public AttachedArtifact( Artifact parent, String type, ArtifactHandler artifactHandler ) 065 { 066 this( parent, type, null, artifactHandler ); 067 } 068 069 public void setArtifactId( String artifactId ) 070 { 071 throw new UnsupportedOperationException( "Cannot change the artifactId for an attached artifact." 072 + " It is derived from the main artifact." ); 073 } 074 075 public List<ArtifactVersion> getAvailableVersions() 076 { 077 return parent.getAvailableVersions(); 078 } 079 080 public void setAvailableVersions( List<ArtifactVersion> availableVersions ) 081 { 082 throw new UnsupportedOperationException( "Cannot change the version information for an attached artifact." 083 + " It is derived from the main artifact." ); 084 } 085 086 public String getBaseVersion() 087 { 088 return parent.getBaseVersion(); 089 } 090 091 public void setBaseVersion( String baseVersion ) 092 { 093 throw new UnsupportedOperationException( "Cannot change the version information for an attached artifact." 094 + " It is derived from the main artifact." ); 095 } 096 097 public String getDownloadUrl() 098 { 099 return parent.getDownloadUrl(); 100 } 101 102 public void setDownloadUrl( String downloadUrl ) 103 { 104 throw new UnsupportedOperationException( "Cannot change the download information for an attached artifact." 105 + " It is derived from the main artifact." ); 106 } 107 108 public void setGroupId( String groupId ) 109 { 110 throw new UnsupportedOperationException( "Cannot change the groupId for an attached artifact." 111 + " It is derived from the main artifact." ); 112 } 113 114 public ArtifactRepository getRepository() 115 { 116 return parent.getRepository(); 117 } 118 119 public void setRepository( ArtifactRepository repository ) 120 { 121 throw new UnsupportedOperationException( "Cannot change the repository information for an attached artifact." 122 + " It is derived from the main artifact." ); 123 } 124 125 public String getScope() 126 { 127 return parent.getScope(); 128 } 129 130 public void setScope( String scope ) 131 { 132 throw new UnsupportedOperationException( "Cannot change the scoping information for an attached artifact." 133 + " It is derived from the main artifact." ); 134 } 135 136 public String getVersion() 137 { 138 return parent.getVersion(); 139 } 140 141 public void setVersion( String version ) 142 { 143 throw new UnsupportedOperationException( "Cannot change the version information for an attached artifact." 144 + " It is derived from the main artifact." ); 145 } 146 147 public VersionRange getVersionRange() 148 { 149 return parent.getVersionRange(); 150 } 151 152 public void setVersionRange( VersionRange range ) 153 { 154 throw new UnsupportedOperationException( "Cannot change the version information for an attached artifact." 155 + " It is derived from the main artifact." ); 156 } 157 158 public boolean isRelease() 159 { 160 return parent.isRelease(); 161 } 162 163 public void setRelease( boolean release ) 164 { 165 throw new UnsupportedOperationException( "Cannot change the version information for an attached artifact." 166 + " It is derived from the main artifact." ); 167 } 168 169 public boolean isSnapshot() 170 { 171 return parent.isSnapshot(); 172 } 173 174 public void addMetadata( ArtifactMetadata metadata ) 175 { 176 // ignore. The parent artifact will handle metadata. 177 // we must fail silently here to avoid problems with the artifact transformers. 178 } 179 180 public Collection<ArtifactMetadata> getMetadataList() 181 { 182 return Collections.emptyList(); 183 } 184 185}