1 package org.apache.maven.plugins.dependency.utils.translators;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.LinkedHashSet;
23 import java.util.Set;
24
25 import org.apache.maven.artifact.Artifact;
26 import org.apache.maven.artifact.handler.ArtifactHandler;
27 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
28 import org.apache.maven.plugin.logging.Log;
29 import org.apache.maven.shared.transfer.artifact.ArtifactCoordinate;
30 import org.apache.maven.shared.transfer.artifact.DefaultArtifactCoordinate;
31 import org.codehaus.plexus.util.StringUtils;
32
33
34
35
36 public class ClassifierTypeTranslator
37 implements ArtifactTranslator
38 {
39 private final ArtifactHandlerManager artifactHandlerManager;
40
41 private String classifier;
42
43 private String type;
44
45
46
47
48
49
50 public ClassifierTypeTranslator( ArtifactHandlerManager artifactHanderManager, String theClassifier,
51 String theType )
52 {
53 this.artifactHandlerManager = artifactHanderManager;
54 this.classifier = theClassifier;
55 this.type = theType;
56 }
57
58
59
60
61
62
63 @Override
64 public Set<ArtifactCoordinate> translate( Set<Artifact> artifacts, Log log )
65 {
66 Set<ArtifactCoordinate> results;
67
68 log.debug( "Translating Artifacts using Classifier: " + this.classifier + " and Type: " + this.type );
69 results = new LinkedHashSet<>();
70 for ( Artifact artifact : artifacts )
71 {
72
73
74
75 final String useType;
76 if ( StringUtils.isNotEmpty( this.type ) )
77 {
78 useType = this.type;
79 }
80 else
81 {
82 useType = artifact.getType();
83 }
84
85 ArtifactHandler artifactHandler = artifactHandlerManager.getArtifactHandler( useType );
86
87 final String extension;
88 if ( artifactHandler != null )
89 {
90 extension = artifactHandler.getExtension();
91 }
92 else
93 {
94 extension = this.type;
95 }
96
97 String useClassifier;
98 if ( StringUtils.isNotEmpty( this.classifier ) )
99 {
100 useClassifier = this.classifier;
101 }
102 else
103 {
104 useClassifier = artifact.getClassifier();
105 }
106
107 DefaultArtifactCoordinate coordinate = new DefaultArtifactCoordinate();
108 coordinate.setGroupId( artifact.getGroupId() );
109 coordinate.setArtifactId( artifact.getArtifactId() );
110 coordinate.setVersion( artifact.getVersion() );
111 coordinate.setClassifier( useClassifier );
112 coordinate.setExtension( extension );
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 results.add( coordinate );
131 }
132
133 return results;
134 }
135
136
137
138
139 public String getType()
140 {
141 return this.type;
142 }
143
144
145
146
147 public void setType( String theType )
148 {
149 this.type = theType;
150 }
151
152
153
154
155 public String getClassifier()
156 {
157 return this.classifier;
158 }
159
160
161
162
163 public void setClassifier( String theClassifier )
164 {
165 this.classifier = theClassifier;
166 }
167
168 }