001 /*
002 =================== DO NOT EDIT THIS FILE ====================
003 Generated by Modello 1.4.1 on 2013-02-24 03:32:14,
004 any modifications will be overwritten.
005 ==============================================================
006 */
007
008 package org.apache.maven.model;
009
010 /**
011 *
012 *
013 * The <code><plugin></code> element contains
014 * informations required for a plugin.
015 *
016 *
017 *
018 * @version $Revision$ $Date$
019 */
020 @SuppressWarnings( "all" )
021 public class Plugin
022 extends ConfigurationContainer
023 implements java.io.Serializable, java.lang.Cloneable
024 {
025
026 //--------------------------/
027 //- Class/Member Variables -/
028 //--------------------------/
029
030 /**
031 * The group ID of the plugin in the repository.
032 */
033 private String groupId = "org.apache.maven.plugins";
034
035 /**
036 * The artifact ID of the plugin in the repository.
037 */
038 private String artifactId;
039
040 /**
041 * The version (or valid range of versions) of the plugin to be
042 * used.
043 */
044 private String version;
045
046 /**
047 *
048 *
049 * Whether to load Maven extensions (such as
050 * packaging and type handlers) from
051 * this plugin. For performance reasons, this
052 * should only be enabled when necessary. Note: While the type
053 * of this field is <code>String</code> for
054 * technical reasons, the semantic type is actually
055 * <code>Boolean</code>. Default value is
056 * <code>false</code>.
057 *
058 *
059 */
060 private String extensions;
061
062 /**
063 * Field executions.
064 */
065 private java.util.List<PluginExecution> executions;
066
067 /**
068 * Field dependencies.
069 */
070 private java.util.List<Dependency> dependencies;
071
072 /**
073 *
074 *
075 * <b>Deprecated</b>. Unused by Maven.
076 *
077 *
078 */
079 private Object goals;
080
081
082 //-----------/
083 //- Methods -/
084 //-----------/
085
086 /**
087 * Method addDependency.
088 *
089 * @param dependency
090 */
091 public void addDependency( Dependency dependency )
092 {
093 getDependencies().add( dependency );
094 } //-- void addDependency( Dependency )
095
096 /**
097 * Method addExecution.
098 *
099 * @param pluginExecution
100 */
101 public void addExecution( PluginExecution pluginExecution )
102 {
103 getExecutions().add( pluginExecution );
104 } //-- void addExecution( PluginExecution )
105
106 /**
107 * Method clone.
108 *
109 * @return Plugin
110 */
111 public Plugin clone()
112 {
113 try
114 {
115 Plugin copy = (Plugin) super.clone();
116
117 if ( this.executions != null )
118 {
119 copy.executions = new java.util.ArrayList<PluginExecution>();
120 for ( PluginExecution item : this.executions )
121 {
122 copy.executions.add( ( (PluginExecution) item).clone() );
123 }
124 }
125
126 if ( this.dependencies != null )
127 {
128 copy.dependencies = new java.util.ArrayList<Dependency>();
129 for ( Dependency item : this.dependencies )
130 {
131 copy.dependencies.add( ( (Dependency) item).clone() );
132 }
133 }
134
135 if ( this.goals != null )
136 {
137 copy.goals = new org.codehaus.plexus.util.xml.Xpp3Dom( (org.codehaus.plexus.util.xml.Xpp3Dom) this.goals );
138 }
139
140 return copy;
141 }
142 catch ( java.lang.Exception ex )
143 {
144 throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
145 + " does not support clone()" ).initCause( ex );
146 }
147 } //-- Plugin clone()
148
149 /**
150 * Get the artifact ID of the plugin in the repository.
151 *
152 * @return String
153 */
154 public String getArtifactId()
155 {
156 return this.artifactId;
157 } //-- String getArtifactId()
158
159 /**
160 * Method getDependencies.
161 *
162 * @return List
163 */
164 public java.util.List<Dependency> getDependencies()
165 {
166 if ( this.dependencies == null )
167 {
168 this.dependencies = new java.util.ArrayList<Dependency>();
169 }
170
171 return this.dependencies;
172 } //-- java.util.List<Dependency> getDependencies()
173
174 /**
175 * Method getExecutions.
176 *
177 * @return List
178 */
179 public java.util.List<PluginExecution> getExecutions()
180 {
181 if ( this.executions == null )
182 {
183 this.executions = new java.util.ArrayList<PluginExecution>();
184 }
185
186 return this.executions;
187 } //-- java.util.List<PluginExecution> getExecutions()
188
189 /**
190 * Get whether to load Maven extensions (such as packaging and
191 * type handlers) from
192 * this plugin. For performance reasons, this
193 * should only be enabled when necessary. Note: While the type
194 * of this field is <code>String</code> for
195 * technical reasons, the semantic type is actually
196 * <code>Boolean</code>. Default value is
197 * <code>false</code>.
198 *
199 * @return String
200 */
201 public String getExtensions()
202 {
203 return this.extensions;
204 } //-- String getExtensions()
205
206 /**
207 * Get <b>Deprecated</b>. Unused by Maven.
208 *
209 * @return Object
210 */
211 public Object getGoals()
212 {
213 return this.goals;
214 } //-- Object getGoals()
215
216 /**
217 * Get the group ID of the plugin in the repository.
218 *
219 * @return String
220 */
221 public String getGroupId()
222 {
223 return this.groupId;
224 } //-- String getGroupId()
225
226 /**
227 * Get the version (or valid range of versions) of the plugin
228 * to be used.
229 *
230 * @return String
231 */
232 public String getVersion()
233 {
234 return this.version;
235 } //-- String getVersion()
236
237 /**
238 * Method removeDependency.
239 *
240 * @param dependency
241 */
242 public void removeDependency( Dependency dependency )
243 {
244 getDependencies().remove( dependency );
245 } //-- void removeDependency( Dependency )
246
247 /**
248 * Method removeExecution.
249 *
250 * @param pluginExecution
251 */
252 public void removeExecution( PluginExecution pluginExecution )
253 {
254 getExecutions().remove( pluginExecution );
255 } //-- void removeExecution( PluginExecution )
256
257 /**
258 * Set the artifact ID of the plugin in the repository.
259 *
260 * @param artifactId
261 */
262 public void setArtifactId( String artifactId )
263 {
264 this.artifactId = artifactId;
265 } //-- void setArtifactId( String )
266
267 /**
268 * Set additional dependencies that this project needs to
269 * introduce to the plugin's
270 * classloader.
271 *
272 * @param dependencies
273 */
274 public void setDependencies( java.util.List<Dependency> dependencies )
275 {
276 this.dependencies = dependencies;
277 } //-- void setDependencies( java.util.List )
278
279 /**
280 * Set multiple specifications of a set of goals to execute
281 * during the build
282 * lifecycle, each having (possibly) a different
283 * configuration.
284 *
285 * @param executions
286 */
287 public void setExecutions( java.util.List<PluginExecution> executions )
288 {
289 this.executions = executions;
290 } //-- void setExecutions( java.util.List )
291
292 /**
293 * Set whether to load Maven extensions (such as packaging and
294 * type handlers) from
295 * this plugin. For performance reasons, this
296 * should only be enabled when necessary. Note: While the type
297 * of this field is <code>String</code> for
298 * technical reasons, the semantic type is actually
299 * <code>Boolean</code>. Default value is
300 * <code>false</code>.
301 *
302 * @param extensions
303 */
304 public void setExtensions( String extensions )
305 {
306 this.extensions = extensions;
307 } //-- void setExtensions( String )
308
309 /**
310 * Set <b>Deprecated</b>. Unused by Maven.
311 *
312 * @param goals
313 */
314 public void setGoals( Object goals )
315 {
316 this.goals = goals;
317 } //-- void setGoals( Object )
318
319 /**
320 * Set the group ID of the plugin in the repository.
321 *
322 * @param groupId
323 */
324 public void setGroupId( String groupId )
325 {
326 this.groupId = groupId;
327 } //-- void setGroupId( String )
328
329 /**
330 * Set the version (or valid range of versions) of the plugin
331 * to be used.
332 *
333 * @param version
334 */
335 public void setVersion( String version )
336 {
337 this.version = version;
338 } //-- void setVersion( String )
339
340
341
342 public boolean isExtensions()
343 {
344 return ( extensions != null ) ? Boolean.parseBoolean( extensions ) : false;
345 }
346
347 public void setExtensions( boolean extensions )
348 {
349 this.extensions = String.valueOf( extensions );
350 }
351
352 private java.util.Map<String, PluginExecution> executionMap = null;
353
354 /**
355 * Reset the <code>executionMap</code> field to <code>null</code>
356 */
357 public void flushExecutionMap()
358 {
359 this.executionMap = null;
360 }
361
362 /**
363 * @return a Map of executions field with <code>PluginExecution#getId()</code> as key
364 * @see org.apache.maven.model.PluginExecution#getId()
365 */
366 public java.util.Map<String, PluginExecution> getExecutionsAsMap()
367 {
368 if ( executionMap == null )
369 {
370 executionMap = new java.util.LinkedHashMap<String, PluginExecution>();
371 if ( getExecutions() != null )
372 {
373 for ( java.util.Iterator<PluginExecution> i = getExecutions().iterator(); i.hasNext(); )
374 {
375 PluginExecution exec = (PluginExecution) i.next();
376
377 if ( executionMap.containsKey( exec.getId() ) )
378 {
379 throw new IllegalStateException( "You cannot have two plugin executions with the same (or missing) <id/> elements.\nOffending execution\n\nId: \'" + exec.getId() + "\'\nPlugin:\'" + getKey() + "\'\n\n" );
380 }
381
382 executionMap.put( exec.getId(), exec );
383 }
384 }
385 }
386
387 return executionMap;
388 }
389
390 /**
391 * Gets the identifier of the plugin.
392 *
393 * @return The plugin id in the form {@code <groupId>:<artifactId>:<version>}, never {@code null}.
394 */
395 public String getId()
396 {
397 StringBuilder id = new StringBuilder( 128 );
398
399 id.append( ( getGroupId() == null ) ? "[unknown-group-id]" : getGroupId() );
400 id.append( ":" );
401 id.append( ( getArtifactId() == null ) ? "[unknown-artifact-id]" : getArtifactId() );
402 id.append( ":" );
403 id.append( ( getVersion() == null ) ? "[unknown-version]" : getVersion() );
404
405 return id.toString();
406 }
407
408 //TODO we shall reset key variable when groupId/artifactId change
409 private String key = null;
410 /**
411 * @return the key of the plugin, ie <code>groupId:artifactId</code>
412 */
413 public String getKey()
414 {
415 if ( key == null )
416 {
417 key = constructKey( groupId, artifactId );
418 }
419 return key;
420 }
421
422 /**
423 * @param groupId
424 * @param artifactId
425 * @return the key of the plugin, ie <code>groupId:artifactId</code>
426 */
427 public static String constructKey( String groupId, String artifactId )
428 {
429 return groupId + ":" + artifactId;
430 }
431
432 /**
433 * @see java.lang.Object#equals(java.lang.Object)
434 */
435 public boolean equals( Object other )
436 {
437 if ( other instanceof Plugin )
438 {
439 Plugin otherPlugin = (Plugin) other;
440
441 return getKey().equals( otherPlugin.getKey() );
442 }
443
444 return false;
445 }
446
447 /**
448 * @see java.lang.Object#hashCode()
449 */
450 public int hashCode()
451 {
452 return getKey().hashCode();
453 }
454
455 /**
456 * @see java.lang.Object#toString()
457 */
458 public String toString()
459 {
460 return "Plugin [" + getKey() + "]";
461 }
462
463
464 }