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.handler.ArtifactHandler;
024 import org.apache.maven.artifact.metadata.ArtifactMetadata;
025 import org.apache.maven.artifact.repository.ArtifactRepository;
026 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
027 import org.apache.maven.artifact.versioning.ArtifactVersion;
028 import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
029 import org.apache.maven.artifact.versioning.VersionRange;
030 import org.apache.maven.project.MavenProject;
031
032 import java.io.File;
033 import java.util.Collection;
034 import java.util.List;
035
036 /**
037 * Wraps an active project instance to be able to receive updates from its artifact without affecting the original
038 * attributes of this artifact.
039 *
040 * @author <a href="mailto:brett@apache.org">Brett Porter</a>
041 * @todo I think this exposes a design flaw in that the immutable and mutable parts of an artifact are in one class and
042 * should be split. ie scope, file, etc depend on the context of use, whereas everything else is immutable.
043 */
044 @Deprecated
045 public class ActiveProjectArtifact
046 implements Artifact
047 {
048 private final Artifact artifact;
049
050 private final MavenProject project;
051
052 public ActiveProjectArtifact( MavenProject project, Artifact artifact )
053 {
054 this.artifact = artifact;
055 this.project = project;
056
057 artifact.setFile( project.getArtifact().getFile() );
058 artifact.setResolved( true );
059 }
060
061 /** {@inheritDoc} */
062 public File getFile()
063 {
064 // we need to get the latest file for the project, not the artifact that was created at one point in time
065 return project.getArtifact().getFile();
066 }
067
068 /** {@inheritDoc} */
069 public String getGroupId()
070 {
071 return artifact.getGroupId();
072 }
073
074 /** {@inheritDoc} */
075 public String getArtifactId()
076 {
077 return artifact.getArtifactId();
078 }
079
080 /** {@inheritDoc} */
081 public String getVersion()
082 {
083 return artifact.getVersion();
084 }
085
086 /** {@inheritDoc} */
087 public void setVersion( String version )
088 {
089 artifact.setVersion( version );
090 }
091
092 /** {@inheritDoc} */
093 public String getScope()
094 {
095 return artifact.getScope();
096 }
097
098 /** {@inheritDoc} */
099 public String getType()
100 {
101 return artifact.getType();
102 }
103
104 /** {@inheritDoc} */
105 public String getClassifier()
106 {
107 return artifact.getClassifier();
108 }
109
110 /** {@inheritDoc} */
111 public boolean hasClassifier()
112 {
113 return artifact.hasClassifier();
114 }
115
116 /** {@inheritDoc} */
117 public void setFile( File destination )
118 {
119 artifact.setFile( destination );
120 project.getArtifact().setFile( destination );
121 }
122
123 /** {@inheritDoc} */
124 public String getBaseVersion()
125 {
126 return artifact.getBaseVersion();
127 }
128
129 /** {@inheritDoc} */
130 public void setBaseVersion( String baseVersion )
131 {
132 artifact.setBaseVersion( baseVersion );
133 }
134
135 /** {@inheritDoc} */
136 public String getId()
137 {
138 return artifact.getId();
139 }
140
141 /** {@inheritDoc} */
142 public String getDependencyConflictId()
143 {
144 return artifact.getDependencyConflictId();
145 }
146
147 /** {@inheritDoc} */
148 public void addMetadata( ArtifactMetadata metadata )
149 {
150 artifact.addMetadata( metadata );
151 }
152
153 /** {@inheritDoc} */
154 public Collection<ArtifactMetadata> getMetadataList()
155 {
156 return artifact.getMetadataList();
157 }
158
159 /** {@inheritDoc} */
160 public void setRepository( ArtifactRepository remoteRepository )
161 {
162 artifact.setRepository( remoteRepository );
163 }
164
165 /** {@inheritDoc} */
166 public ArtifactRepository getRepository()
167 {
168 return artifact.getRepository();
169 }
170
171 /** {@inheritDoc} */
172 public void updateVersion( String version, ArtifactRepository localRepository )
173 {
174 artifact.updateVersion( version, localRepository );
175 }
176
177 /** {@inheritDoc} */
178 public String getDownloadUrl()
179 {
180 return artifact.getDownloadUrl();
181 }
182
183 /** {@inheritDoc} */
184 public void setDownloadUrl( String downloadUrl )
185 {
186 artifact.setDownloadUrl( downloadUrl );
187 }
188
189 /** {@inheritDoc} */
190 public ArtifactFilter getDependencyFilter()
191 {
192 return artifact.getDependencyFilter();
193 }
194
195 /** {@inheritDoc} */
196 public void setDependencyFilter( ArtifactFilter artifactFilter )
197 {
198 artifact.setDependencyFilter( artifactFilter );
199 }
200
201 /** {@inheritDoc} */
202 public ArtifactHandler getArtifactHandler()
203 {
204 return artifact.getArtifactHandler();
205 }
206
207 /** {@inheritDoc} */
208 public List<String> getDependencyTrail()
209 {
210 return artifact.getDependencyTrail();
211 }
212
213 /** {@inheritDoc} */
214 public void setDependencyTrail( List<String> dependencyTrail )
215 {
216 artifact.setDependencyTrail( dependencyTrail );
217 }
218
219 /** {@inheritDoc} */
220 public void setScope( String scope )
221 {
222 artifact.setScope( scope );
223 }
224
225 /** {@inheritDoc} */
226 public VersionRange getVersionRange()
227 {
228 return artifact.getVersionRange();
229 }
230
231 /** {@inheritDoc} */
232 public void setVersionRange( VersionRange newRange )
233 {
234 artifact.setVersionRange( newRange );
235 }
236
237 /** {@inheritDoc} */
238 public void selectVersion( String version )
239 {
240 artifact.selectVersion( version );
241 }
242
243 /** {@inheritDoc} */
244 public void setGroupId( String groupId )
245 {
246 artifact.setGroupId( groupId );
247 }
248
249 /** {@inheritDoc} */
250 public void setArtifactId( String artifactId )
251 {
252 artifact.setArtifactId( artifactId );
253 }
254
255 /** {@inheritDoc} */
256 public boolean isSnapshot()
257 {
258 return artifact.isSnapshot();
259 }
260
261 /** {@inheritDoc} */
262 public int compareTo( Artifact a )
263 {
264 return artifact.compareTo( a );
265 }
266
267 /** {@inheritDoc} */
268 public void setResolved( boolean resolved )
269 {
270 artifact.setResolved( resolved );
271 }
272
273 /** {@inheritDoc} */
274 public boolean isResolved()
275 {
276 return artifact.isResolved();
277 }
278
279 /** {@inheritDoc} */
280 public void setResolvedVersion( String version )
281 {
282 artifact.setResolvedVersion( version );
283 }
284
285 /** {@inheritDoc} */
286 public void setArtifactHandler( ArtifactHandler handler )
287 {
288 artifact.setArtifactHandler( handler );
289 }
290
291 /** {@inheritDoc} */
292 public String toString()
293 {
294 return "active project artifact:\n\tartifact = " + artifact + ";\n\tproject: " + project;
295 }
296
297 /** {@inheritDoc} */
298 public boolean isRelease()
299 {
300 return artifact.isRelease();
301 }
302
303 /** {@inheritDoc} */
304 public void setRelease( boolean release )
305 {
306 artifact.setRelease( release );
307 }
308
309 /** {@inheritDoc} */
310 public List<ArtifactVersion> getAvailableVersions()
311 {
312 return artifact.getAvailableVersions();
313 }
314
315 /** {@inheritDoc} */
316 public void setAvailableVersions( List<ArtifactVersion> versions )
317 {
318 artifact.setAvailableVersions( versions );
319 }
320
321 /** {@inheritDoc} */
322 public boolean isOptional()
323 {
324 return artifact.isOptional();
325 }
326
327 /** {@inheritDoc} */
328 public ArtifactVersion getSelectedVersion()
329 throws OverConstrainedVersionException
330 {
331 return artifact.getSelectedVersion();
332 }
333
334 /** {@inheritDoc} */
335 public boolean isSelectedVersionKnown()
336 throws OverConstrainedVersionException
337 {
338 return artifact.isSelectedVersionKnown();
339 }
340
341 /** {@inheritDoc} */
342 public void setOptional( boolean optional )
343 {
344 artifact.setOptional( optional );
345 }
346
347 /** {@inheritDoc} */
348 public int hashCode()
349 {
350 int result = 17;
351
352 result = 37 * result + getGroupId().hashCode();
353 result = 37 * result + getArtifactId().hashCode();
354 result = 37 * result + getType().hashCode();
355 if ( getVersion() != null )
356 {
357 result = 37 * result + getVersion().hashCode();
358 }
359 result = 37 * result + ( getClassifier() != null ? getClassifier().hashCode() : 0 );
360
361 return result;
362 }
363
364 /** {@inheritDoc} */
365 public boolean equals( Object o )
366 {
367 if ( o == this )
368 {
369 return true;
370 }
371
372 if ( !( o instanceof Artifact ) )
373 {
374 return false;
375 }
376
377 Artifact a = (Artifact) o;
378
379 if ( !a.getGroupId().equals( getGroupId() ) )
380 {
381 return false;
382 }
383 else if ( !a.getArtifactId().equals( getArtifactId() ) )
384 {
385 return false;
386 }
387 else if ( !a.getVersion().equals( getVersion() ) )
388 {
389 return false;
390 }
391 else if ( !a.getType().equals( getType() ) )
392 {
393 return false;
394 }
395 else if ( a.getClassifier() == null ? getClassifier() != null : !a.getClassifier().equals( getClassifier() ) )
396 {
397 return false;
398 }
399
400 return true;
401 }
402
403 }