View Javadoc
1   // =================== DO NOT EDIT THIS FILE ====================
2   // Generated by Modello 1.8.1,
3   // any modifications will be overwritten.
4   // ==============================================================
5   
6   package org.apache.maven.model;
7   
8   /**
9    * 
10   *         
11   *         The <code>&lt;plugin&gt;</code> element contains
12   * informations required for a plugin.
13   *         
14   *       
15   * 
16   * @version $Revision$ $Date$
17   */
18  @SuppressWarnings( "all" )
19  public class Plugin
20      extends ConfigurationContainer
21      implements java.io.Serializable, java.lang.Cloneable
22  {
23  
24        //--------------------------/
25       //- Class/Member Variables -/
26      //--------------------------/
27  
28      /**
29       * The group ID of the plugin in the repository.
30       */
31      private String groupId = "org.apache.maven.plugins";
32  
33      /**
34       * The artifact ID of the plugin in the repository.
35       */
36      private String artifactId;
37  
38      /**
39       * The version (or valid range of versions) of the plugin to be
40       * used.
41       */
42      private String version;
43  
44      /**
45       * 
46       *             
47       *             Whether to load Maven extensions (such as
48       * packaging and type handlers) from
49       *             this plugin. For performance reasons, this
50       * should only be enabled when necessary. Note: While the type
51       *             of this field is <code>String</code> for
52       * technical reasons, the semantic type is actually
53       *             <code>Boolean</code>. Default value is
54       * <code>false</code>.
55       *             
56       *           
57       */
58      private String extensions;
59  
60      /**
61       * Field executions.
62       */
63      private java.util.List<PluginExecution> executions;
64  
65      /**
66       * Field dependencies.
67       */
68      private java.util.List<Dependency> dependencies;
69  
70      /**
71       * 
72       *             
73       *             <b>Deprecated</b>. Unused by Maven.
74       *             
75       *           
76       */
77      private Object goals;
78  
79  
80        //-----------/
81       //- Methods -/
82      //-----------/
83  
84      /**
85       * Method addDependency.
86       * 
87       * @param dependency
88       */
89      public void addDependency( Dependency dependency )
90      {
91          getDependencies().add( dependency );
92      } //-- void addDependency( Dependency )
93  
94      /**
95       * Method addExecution.
96       * 
97       * @param pluginExecution
98       */
99      public void addExecution( PluginExecution pluginExecution )
100     {
101         getExecutions().add( pluginExecution );
102     } //-- void addExecution( PluginExecution )
103 
104     /**
105      * Method clone.
106      * 
107      * @return Plugin
108      */
109     public Plugin clone()
110     {
111         try
112         {
113             Plugin copy = (Plugin) super.clone();
114 
115             if ( this.executions != null )
116             {
117                 copy.executions = new java.util.ArrayList<PluginExecution>();
118                 for ( PluginExecution item : this.executions )
119                 {
120                     copy.executions.add( ( (PluginExecution) item).clone() );
121                 }
122             }
123 
124             if ( this.dependencies != null )
125             {
126                 copy.dependencies = new java.util.ArrayList<Dependency>();
127                 for ( Dependency item : this.dependencies )
128                 {
129                     copy.dependencies.add( ( (Dependency) item).clone() );
130                 }
131             }
132 
133             if ( this.goals != null )
134             {
135                 copy.goals = new org.codehaus.plexus.util.xml.Xpp3Dom( (org.codehaus.plexus.util.xml.Xpp3Dom) this.goals );
136             }
137 
138             return copy;
139         }
140         catch ( java.lang.Exception ex )
141         {
142             throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
143                 + " does not support clone()" ).initCause( ex );
144         }
145     } //-- Plugin clone()
146 
147     /**
148      * Get the artifact ID of the plugin in the repository.
149      * 
150      * @return String
151      */
152     public String getArtifactId()
153     {
154         return this.artifactId;
155     } //-- String getArtifactId()
156 
157     /**
158      * Method getDependencies.
159      * 
160      * @return List
161      */
162     public java.util.List<Dependency> getDependencies()
163     {
164         if ( this.dependencies == null )
165         {
166             this.dependencies = new java.util.ArrayList<Dependency>();
167         }
168 
169         return this.dependencies;
170     } //-- java.util.List<Dependency> getDependencies()
171 
172     /**
173      * Method getExecutions.
174      * 
175      * @return List
176      */
177     public java.util.List<PluginExecution> getExecutions()
178     {
179         if ( this.executions == null )
180         {
181             this.executions = new java.util.ArrayList<PluginExecution>();
182         }
183 
184         return this.executions;
185     } //-- java.util.List<PluginExecution> getExecutions()
186 
187     /**
188      * Get whether to load Maven extensions (such as packaging and
189      * type handlers) from
190      *             this plugin. For performance reasons, this
191      * should only be enabled when necessary. Note: While the type
192      *             of this field is <code>String</code> for
193      * technical reasons, the semantic type is actually
194      *             <code>Boolean</code>. Default value is
195      * <code>false</code>.
196      * 
197      * @return String
198      */
199     public String getExtensions()
200     {
201         return this.extensions;
202     } //-- String getExtensions()
203 
204     /**
205      * Get <b>Deprecated</b>. Unused by Maven.
206      * 
207      * @return Object
208      */
209     public Object getGoals()
210     {
211         return this.goals;
212     } //-- Object getGoals()
213 
214     /**
215      * Get the group ID of the plugin in the repository.
216      * 
217      * @return String
218      */
219     public String getGroupId()
220     {
221         return this.groupId;
222     } //-- String getGroupId()
223 
224     /**
225      * Get the version (or valid range of versions) of the plugin
226      * to be used.
227      * 
228      * @return String
229      */
230     public String getVersion()
231     {
232         return this.version;
233     } //-- String getVersion()
234 
235     /**
236      * Method removeDependency.
237      * 
238      * @param dependency
239      */
240     public void removeDependency( Dependency dependency )
241     {
242         getDependencies().remove( dependency );
243     } //-- void removeDependency( Dependency )
244 
245     /**
246      * Method removeExecution.
247      * 
248      * @param pluginExecution
249      */
250     public void removeExecution( PluginExecution pluginExecution )
251     {
252         getExecutions().remove( pluginExecution );
253     } //-- void removeExecution( PluginExecution )
254 
255     /**
256      * Set the artifact ID of the plugin in the repository.
257      * 
258      * @param artifactId
259      */
260     public void setArtifactId( String artifactId )
261     {
262         this.artifactId = artifactId;
263     } //-- void setArtifactId( String )
264 
265     /**
266      * Set additional dependencies that this project needs to
267      * introduce to the plugin's
268      *             classloader.
269      * 
270      * @param dependencies
271      */
272     public void setDependencies( java.util.List<Dependency> dependencies )
273     {
274         this.dependencies = dependencies;
275     } //-- void setDependencies( java.util.List )
276 
277     /**
278      * Set multiple specifications of a set of goals to execute
279      * during the build
280      *             lifecycle, each having (possibly) a different
281      * configuration.
282      * 
283      * @param executions
284      */
285     public void setExecutions( java.util.List<PluginExecution> executions )
286     {
287         this.executions = executions;
288     } //-- void setExecutions( java.util.List )
289 
290     /**
291      * Set whether to load Maven extensions (such as packaging and
292      * type handlers) from
293      *             this plugin. For performance reasons, this
294      * should only be enabled when necessary. Note: While the type
295      *             of this field is <code>String</code> for
296      * technical reasons, the semantic type is actually
297      *             <code>Boolean</code>. Default value is
298      * <code>false</code>.
299      * 
300      * @param extensions
301      */
302     public void setExtensions( String extensions )
303     {
304         this.extensions = extensions;
305     } //-- void setExtensions( String )
306 
307     /**
308      * Set <b>Deprecated</b>. Unused by Maven.
309      * 
310      * @param goals
311      */
312     public void setGoals( Object goals )
313     {
314         this.goals = goals;
315     } //-- void setGoals( Object )
316 
317     /**
318      * Set the group ID of the plugin in the repository.
319      * 
320      * @param groupId
321      */
322     public void setGroupId( String groupId )
323     {
324         this.groupId = groupId;
325     } //-- void setGroupId( String )
326 
327     /**
328      * Set the version (or valid range of versions) of the plugin
329      * to be used.
330      * 
331      * @param version
332      */
333     public void setVersion( String version )
334     {
335         this.version = version;
336     } //-- void setVersion( String )
337 
338     
339             
340     public boolean isExtensions()
341     {
342         return ( extensions != null ) ? Boolean.parseBoolean( extensions ) : false;
343     }
344 
345     public void setExtensions( boolean extensions )
346     {
347         this.extensions = String.valueOf( extensions );
348     }
349 
350     private java.util.Map<String, PluginExecution> executionMap = null;
351 
352     /**
353      * Reset the <code>executionMap</code> field to <code>null</code>
354      */
355     public void flushExecutionMap()
356     {
357         this.executionMap = null;
358     }
359 
360     /**
361      * @return a Map of executions field with <code>PluginExecution#getId()</code> as key
362      * @see org.apache.maven.model.PluginExecution#getId()
363      */
364     public java.util.Map<String, PluginExecution> getExecutionsAsMap()
365     {
366         if ( executionMap == null )
367         {
368             executionMap = new java.util.LinkedHashMap<String, PluginExecution>();
369             if ( getExecutions() != null )
370             {
371                 for ( java.util.Iterator<PluginExecution> i = getExecutions().iterator(); i.hasNext(); )
372                 {
373                     PluginExecution exec = (PluginExecution) i.next();
374 
375                     if ( executionMap.containsKey( exec.getId() ) )
376                     {
377                         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" );
378                     }
379 
380                     executionMap.put( exec.getId(), exec );
381                 }
382             }
383         }
384 
385         return executionMap;
386     }
387 
388     /**
389      * Gets the identifier of the plugin.
390      *
391      * @return The plugin id in the form {@code <groupId>:<artifactId>:<version>}, never {@code null}.
392      */
393     public String getId()
394     {
395         StringBuilder id = new StringBuilder( 128 );
396 
397         id.append( ( getGroupId() == null ) ? "[unknown-group-id]" : getGroupId() );
398         id.append( ":" );
399         id.append( ( getArtifactId() == null ) ? "[unknown-artifact-id]" : getArtifactId() );
400         id.append( ":" );
401         id.append( ( getVersion() == null ) ? "[unknown-version]" : getVersion() );
402 
403         return id.toString();
404     }
405 
406     //TODO we shall reset key variable when groupId/artifactId change
407     private String key = null;
408     /**
409      * @return the key of the plugin, ie <code>groupId:artifactId</code>
410      */
411     public String getKey()
412     {
413         if ( key == null )
414         {
415             key = constructKey( groupId, artifactId );
416         }
417         return key;
418     }
419 
420     /**
421      * @param groupId
422      * @param artifactId
423      * @return the key of the plugin, ie <code>groupId:artifactId</code>
424      */
425     public static String constructKey( String groupId, String artifactId )
426     {
427         return groupId + ":" + artifactId;
428     }
429 
430     /**
431      * @see java.lang.Object#equals(java.lang.Object)
432      */
433     public boolean equals( Object other )
434     {
435         if ( other instanceof Plugin )
436         {
437             Plugin otherPlugin = (Plugin) other;
438 
439             return getKey().equals( otherPlugin.getKey() );
440         }
441 
442         return false;
443     }
444 
445     /**
446      * @see java.lang.Object#hashCode()
447      */
448     public int hashCode()
449     {
450         return getKey().hashCode();
451     }
452 
453     /**
454      * @see java.lang.Object#toString()
455      */
456     public String toString()
457     {
458         return "Plugin [" + getKey() + "]";
459     }
460             
461           
462 }