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