1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.repository.legacy.resolver.transform;
20
21 import javax.inject.Inject;
22
23 import java.util.List;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.artifact.repository.ArtifactRepository;
27 import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
28 import org.apache.maven.artifact.repository.RepositoryRequest;
29 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
30 import org.apache.maven.artifact.repository.metadata.Metadata;
31 import org.apache.maven.artifact.repository.metadata.RepositoryMetadata;
32 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager;
33 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
34 import org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
35 import org.apache.maven.artifact.repository.metadata.Versioning;
36 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
37 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
38 import org.apache.maven.repository.legacy.WagonManager;
39 import org.codehaus.plexus.logging.AbstractLogEnabled;
40
41
42
43
44
45
46 @Deprecated
47 public abstract class AbstractVersionTransformation extends AbstractLogEnabled implements ArtifactTransformation {
48 @Inject
49 protected RepositoryMetadataManager repositoryMetadataManager;
50
51 @Inject
52 protected WagonManager wagonManager;
53
54 @Override
55 public void transformForResolve(
56 Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository)
57 throws ArtifactResolutionException, ArtifactNotFoundException {
58 RepositoryRequest request = new DefaultRepositoryRequest();
59 request.setLocalRepository(localRepository);
60 request.setRemoteRepositories(remoteRepositories);
61 transformForResolve(artifact, request);
62 }
63
64 protected String resolveVersion(
65 Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories)
66 throws RepositoryMetadataResolutionException {
67 RepositoryRequest request = new DefaultRepositoryRequest();
68 request.setLocalRepository(localRepository);
69 request.setRemoteRepositories(remoteRepositories);
70 return resolveVersion(artifact, request);
71 }
72
73 protected String resolveVersion(Artifact artifact, RepositoryRequest request)
74 throws RepositoryMetadataResolutionException {
75 RepositoryMetadata metadata;
76
77 if (!artifact.isSnapshot() || Artifact.LATEST_VERSION.equals(artifact.getBaseVersion())) {
78 metadata = new ArtifactRepositoryMetadata(artifact);
79 } else {
80 metadata = new SnapshotArtifactRepositoryMetadata(artifact);
81 }
82
83 repositoryMetadataManager.resolve(metadata, request);
84
85 artifact.addMetadata(metadata);
86
87 Metadata repoMetadata = metadata.getMetadata();
88 String version = null;
89 if (repoMetadata != null && repoMetadata.getVersioning() != null) {
90 version = constructVersion(repoMetadata.getVersioning(), artifact.getBaseVersion());
91 }
92
93 if (version == null) {
94
95 version = artifact.getBaseVersion();
96 }
97
98
99
100 if (getLogger().isDebugEnabled()) {
101 if (!version.equals(artifact.getBaseVersion())) {
102 String message = artifact.getArtifactId() + ": resolved to version " + version;
103 if (artifact.getRepository() != null) {
104 message += " from repository " + artifact.getRepository().getId();
105 } else {
106 message += " from local repository";
107 }
108 getLogger().debug(message);
109 } else {
110
111 getLogger().debug(artifact.getArtifactId() + ": using locally installed snapshot");
112 }
113 }
114 return version;
115 }
116
117 protected abstract String constructVersion(Versioning versioning, String baseVersion);
118 }