001 package org.apache.maven.repository.metadata;
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 java.util.Collection;
023
024 import org.apache.maven.artifact.Artifact;
025 import org.apache.maven.artifact.ArtifactScopeEnum;
026
027 /**
028 * Artifact Metadata that is resolved independent of Artifact itself.
029 *
030 * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
031 *
032 */
033 public class ArtifactMetadata
034 {
035 /**
036 * standard glorified artifact coordinates
037 */
038 protected String groupId;
039 protected String artifactId;
040 protected String version;
041 protected String type;
042 protected ArtifactScopeEnum artifactScope;
043 protected String classifier;
044
045 /**
046 * explanation: why this MD was chosen over it's siblings
047 * in the resulting structure (classpath for now)
048 */
049 protected String why;
050
051 /** dependencies of the artifact behind this metadata */
052 protected Collection<ArtifactMetadata> dependencies;
053
054 /** metadata URI */
055 protected String uri;
056
057 /** is metadata found anywhere */
058 protected boolean resolved = false;
059
060 /** does the actual artifact for this metadata exists */
061 protected boolean artifactExists = false;
062 /** artifact URI */
063 protected String artifactUri;
064
065 /** error message */
066 private String error;
067
068 //------------------------------------------------------------------
069 /**
070 *
071 */
072 public ArtifactMetadata( String name )
073 {
074 if ( name == null )
075 {
076 return;
077 }
078 int ind1 = name.indexOf( ':' );
079 int ind2 = name.lastIndexOf( ':' );
080
081 if ( ind1 == -1 || ind2 == -1 )
082 {
083 return;
084 }
085
086 this.groupId = name.substring( 0, ind1 );
087 if ( ind1 == ind2 )
088 {
089 this.artifactId = name.substring( ind1 + 1 );
090 }
091 else
092 {
093 this.artifactId = name.substring( ind1 + 1, ind2 );
094 this.version = name.substring( ind2 + 1 );
095 }
096 }
097
098 // ------------------------------------------------------------------
099 public ArtifactMetadata( String groupId, String name, String version )
100 {
101 this( groupId, name, version, null );
102 }
103 //------------------------------------------------------------------
104 public ArtifactMetadata( String groupId, String name, String version, String type )
105 {
106 this( groupId, name, version, type, null );
107 }
108
109 //------------------------------------------------------------------
110 public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope )
111 {
112 this( groupId, name, version, type, artifactScope, null );
113 }
114
115 //------------------------------------------------------------------
116 public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope,
117 String classifier )
118 {
119 this( groupId, name, version, type, artifactScope, classifier, null );
120 }
121 //------------------------------------------------------------------
122 public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope,
123 String classifier, String artifactUri )
124 {
125 this( groupId, name, version, type, artifactScope, classifier, artifactUri, null, true, null );
126 }
127 //------------------------------------------------------------------
128 public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope,
129 String classifier, String artifactUri, String why, boolean resolved, String error )
130 {
131 this.groupId = groupId;
132 this.artifactId = name;
133 this.version = version;
134 this.type = type;
135 this.artifactScope = artifactScope;
136 this.classifier = classifier;
137 this.artifactUri = artifactUri;
138 this.why = why;
139 this.resolved = resolved;
140 this.error = error;
141 }
142 //------------------------------------------------------------------
143 public ArtifactMetadata( String groupId, String name, String version, String type, String scopeString,
144 String classifier, String artifactUri, String why, boolean resolved, String error )
145 {
146 this( groupId, name, version, type,
147 scopeString == null ? ArtifactScopeEnum.DEFAULT_SCOPE : ArtifactScopeEnum.valueOf( scopeString ),
148 classifier, artifactUri, why, resolved, error );
149 }
150
151 //------------------------------------------------------------------
152 public ArtifactMetadata( Artifact af )
153 {
154 /*
155 if ( af != null )
156 {
157 init( af );
158 }
159 */
160 }
161 //------------------------------------------------------------------
162 // public void init( ArtifactMetadata af )
163 // {
164 // setGroupId( af.getGroupId() );
165 // setArtifactId( af.getArtifactId() );
166 // setVersion( af.getVersion() );
167 // setType( af.getType() );
168 // setScope( af.getScope() );
169 // setClassifier( af.getClassifier() );
170 // //setUri( af.getDownloadUrl() );
171 //
172 // this.resolved = af.isResolved();
173 // }
174
175 //------------------------------------------------------------------
176 @Override
177 public String toString()
178 {
179 return groupId + ":" + artifactId + ":" + version;
180 }
181
182 //------------------------------------------------------------------
183 public String toDomainString()
184 {
185 return groupId + ":" + artifactId;
186 }
187
188 //------------------------------------------------------------------
189 public String getGroupId()
190 {
191 return groupId;
192 }
193
194 public void setGroupId( String groupId )
195 {
196 this.groupId = groupId;
197 }
198
199 public String getArtifactId()
200 {
201 return artifactId;
202 }
203
204 public void setArtifactId( String name )
205 {
206 this.artifactId = name;
207 }
208
209 public String getVersion()
210 {
211 return version;
212 }
213
214 public void setVersion( String version )
215 {
216 this.version = version;
217 }
218
219 public String getType()
220 {
221 return type;
222 }
223
224 public String getCheckedType()
225 {
226 return type == null ? "jar" : type;
227 }
228
229 public void setType( String type )
230 {
231 this.type = type;
232 }
233
234 public ArtifactScopeEnum getArtifactScope()
235 {
236 return artifactScope == null ? ArtifactScopeEnum.DEFAULT_SCOPE : artifactScope;
237 }
238
239 public void setArtifactScope( ArtifactScopeEnum artifactScope )
240 {
241 this.artifactScope = artifactScope;
242 }
243
244 public void setScope( String scope )
245 {
246 this.artifactScope = scope == null ? ArtifactScopeEnum.DEFAULT_SCOPE : ArtifactScopeEnum.valueOf( scope );
247 }
248
249 public String getClassifier()
250 {
251 return classifier;
252 }
253
254 public void setClassifier( String classifier )
255 {
256 this.classifier = classifier;
257 }
258
259 public boolean isResolved()
260 {
261 return resolved;
262 }
263
264 public void setResolved( boolean resolved )
265 {
266 this.resolved = resolved;
267 }
268
269 public String getUri()
270 {
271 return uri;
272 }
273
274 public void setUri( String uri )
275 {
276 this.uri = uri;
277 }
278
279 public String getScope()
280 {
281 return getArtifactScope().getScope();
282 }
283
284 public ArtifactScopeEnum getScopeAsEnum()
285 {
286 return artifactScope == null ? ArtifactScopeEnum.DEFAULT_SCOPE : artifactScope;
287 }
288
289 public boolean isArtifactExists()
290 {
291 return artifactExists;
292 }
293
294 public void setArtifactExists(boolean artifactExists)
295 {
296 this.artifactExists = artifactExists;
297 }
298
299
300 public Collection<ArtifactMetadata> getDependencies()
301 {
302 return dependencies;
303 }
304
305 public void setDependencies(Collection<ArtifactMetadata> dependencies)
306 {
307 this.dependencies = dependencies;
308 }
309
310 public String getArtifactUri()
311 {
312 return artifactUri;
313 }
314
315 public void setArtifactUri(String artifactUri)
316 {
317 this.artifactUri = artifactUri;
318 }
319
320
321 public String getWhy()
322 {
323 return why;
324 }
325 public void setWhy(String why)
326 {
327 this.why = why;
328 }
329 //-------------------------------------------------------------------
330 public String getError()
331 {
332 return error;
333 }
334 public void setError(String error)
335 {
336 this.error = error;
337 }
338 public boolean isError()
339 {
340 return error == null;
341 }
342 //------------------------------------------------------------------
343 public String getDependencyConflictId()
344 {
345 return groupId + ":" + artifactId;
346 }
347 //------------------------------------------------------------------
348 //------------------------------------------------------------------
349 }