1
2
3
4
5
6
7
8 package org.apache.maven.artifact.repository.metadata;
9
10
11
12
13
14
15 @SuppressWarnings( "all" )
16 public class Metadata
17 implements java.io.Serializable, java.lang.Cloneable
18 {
19
20
21
22
23
24
25
26
27 private String modelVersion;
28
29
30
31
32 private String groupId;
33
34
35
36
37 private String artifactId;
38
39
40
41
42 private String version;
43
44
45
46
47 private Versioning versioning;
48
49
50
51
52 private java.util.List<Plugin> plugins;
53
54
55
56
57 private String modelEncoding = "UTF-8";
58
59
60
61
62
63
64
65
66
67
68
69 public void addPlugin( Plugin plugin )
70 {
71 getPlugins().add( plugin );
72 }
73
74
75
76
77
78
79 public Metadata clone()
80 {
81 try
82 {
83 Metadata copy = (Metadata) super.clone();
84
85 if ( this.versioning != null )
86 {
87 copy.versioning = (Versioning) this.versioning.clone();
88 }
89
90 if ( this.plugins != null )
91 {
92 copy.plugins = new java.util.ArrayList<Plugin>();
93 for ( Plugin item : this.plugins )
94 {
95 copy.plugins.add( ( (Plugin) item).clone() );
96 }
97 }
98
99 return copy;
100 }
101 catch ( java.lang.Exception ex )
102 {
103 throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
104 + " does not support clone()" ).initCause( ex );
105 }
106 }
107
108
109
110
111
112
113 public String getArtifactId()
114 {
115 return this.artifactId;
116 }
117
118
119
120
121
122
123 public String getGroupId()
124 {
125 return this.groupId;
126 }
127
128
129
130
131
132
133 public String getModelEncoding()
134 {
135 return this.modelEncoding;
136 }
137
138
139
140
141
142
143 public String getModelVersion()
144 {
145 return this.modelVersion;
146 }
147
148
149
150
151
152
153 public java.util.List<Plugin> getPlugins()
154 {
155 if ( this.plugins == null )
156 {
157 this.plugins = new java.util.ArrayList<Plugin>();
158 }
159
160 return this.plugins;
161 }
162
163
164
165
166
167
168 public String getVersion()
169 {
170 return this.version;
171 }
172
173
174
175
176
177
178 public Versioning getVersioning()
179 {
180 return this.versioning;
181 }
182
183
184
185
186
187
188 public void removePlugin( Plugin plugin )
189 {
190 getPlugins().remove( plugin );
191 }
192
193
194
195
196
197
198 public void setArtifactId( String artifactId )
199 {
200 this.artifactId = artifactId;
201 }
202
203
204
205
206
207
208 public void setGroupId( String groupId )
209 {
210 this.groupId = groupId;
211 }
212
213
214
215
216
217
218 public void setModelEncoding( String modelEncoding )
219 {
220 this.modelEncoding = modelEncoding;
221 }
222
223
224
225
226
227
228 public void setModelVersion( String modelVersion )
229 {
230 this.modelVersion = modelVersion;
231 }
232
233
234
235
236
237
238 public void setPlugins( java.util.List<Plugin> plugins )
239 {
240 this.plugins = plugins;
241 }
242
243
244
245
246
247
248 public void setVersion( String version )
249 {
250 this.version = version;
251 }
252
253
254
255
256
257
258 public void setVersioning( Versioning versioning )
259 {
260 this.versioning = versioning;
261 }
262
263
264 public boolean merge( Metadata sourceMetadata )
265 {
266 boolean changed = false;
267
268 for ( Plugin plugin : sourceMetadata.getPlugins() )
269 {
270 boolean found = false;
271
272 for ( Plugin preExisting : getPlugins() )
273 {
274 if ( preExisting.getPrefix().equals( plugin.getPrefix() ) )
275 {
276 found = true;
277 break;
278 }
279 }
280
281 if ( !found )
282 {
283 Plugin mappedPlugin = new Plugin();
284
285 mappedPlugin.setArtifactId( plugin.getArtifactId() );
286
287 mappedPlugin.setPrefix( plugin.getPrefix() );
288
289 mappedPlugin.setName( plugin.getName() );
290
291 addPlugin( mappedPlugin );
292
293 changed = true;
294 }
295 }
296
297 Versioning versioning = sourceMetadata.getVersioning();
298 if ( versioning != null )
299 {
300 Versioning v = getVersioning();
301 if ( v == null )
302 {
303 v = new Versioning();
304 setVersioning( v );
305 changed = true;
306 }
307
308 for ( String version : versioning.getVersions() )
309 {
310 if ( !v.getVersions().contains( version ) )
311 {
312 changed = true;
313 v.getVersions().add( version );
314 }
315 }
316
317 if ( "null".equals( versioning.getLastUpdated() ) )
318 {
319 versioning.setLastUpdated( null );
320 }
321
322 if ( "null".equals( v.getLastUpdated() ) )
323 {
324 v.setLastUpdated( null );
325 }
326
327 if ( versioning.getLastUpdated() == null || versioning.getLastUpdated().length() == 0 )
328 {
329
330 versioning.setLastUpdated( v.getLastUpdated() );
331 }
332
333 if ( v.getLastUpdated() == null || v.getLastUpdated().length() == 0
334 || versioning.getLastUpdated().compareTo( v.getLastUpdated() ) >= 0 )
335 {
336 changed = true;
337 v.setLastUpdated( versioning.getLastUpdated() );
338
339 if ( versioning.getRelease() != null )
340 {
341 changed = true;
342 v.setRelease( versioning.getRelease() );
343 }
344 if ( versioning.getLatest() != null )
345 {
346 changed = true;
347 v.setLatest( versioning.getLatest() );
348 }
349
350 Snapshot s = v.getSnapshot();
351 Snapshot snapshot = versioning.getSnapshot();
352 if ( snapshot != null )
353 {
354 if ( s == null )
355 {
356 s = new Snapshot();
357 v.setSnapshot( s );
358 changed = true;
359 }
360
361
362 if ( s.getTimestamp() == null ? snapshot.getTimestamp() != null
363 : !s.getTimestamp().equals( snapshot.getTimestamp() ) )
364 {
365 s.setTimestamp( snapshot.getTimestamp() );
366 changed = true;
367 }
368 if ( s.getBuildNumber() != snapshot.getBuildNumber() )
369 {
370 s.setBuildNumber( snapshot.getBuildNumber() );
371 changed = true;
372 }
373 if ( s.isLocalCopy() != snapshot.isLocalCopy() )
374 {
375 s.setLocalCopy( snapshot.isLocalCopy() );
376 changed = true;
377 }
378 }
379 }
380 }
381 return changed;
382 }
383
384 }