001 /* 002 =================== DO NOT EDIT THIS FILE ==================== 003 Generated by Modello 1.4.1 on 2012-01-20 18:09:18, 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 }