001// =================== DO NOT EDIT THIS FILE ==================== 002// Generated by Modello 1.8.1, 003// any modifications will be overwritten. 004// ============================================================== 005 006package org.apache.maven.plugin.descriptor.model.io.xpp3; 007 008 //---------------------------------/ 009 //- Imported classes and packages -/ 010//---------------------------------/ 011 012import java.io.IOException; 013import java.io.InputStream; 014import java.io.Reader; 015import java.text.DateFormat; 016import org.apache.maven.plugin.descriptor.model.Configuration; 017import org.apache.maven.plugin.descriptor.model.Dependency; 018import org.apache.maven.plugin.descriptor.model.MojoDescriptor; 019import org.apache.maven.plugin.descriptor.model.Parameter; 020import org.apache.maven.plugin.descriptor.model.PluginDescriptor; 021import org.apache.maven.plugin.descriptor.model.Requirement; 022import org.codehaus.plexus.util.ReaderFactory; 023import org.codehaus.plexus.util.xml.pull.EntityReplacementMap; 024import org.codehaus.plexus.util.xml.pull.MXParser; 025import org.codehaus.plexus.util.xml.pull.XmlPullParser; 026import org.codehaus.plexus.util.xml.pull.XmlPullParserException; 027 028/** 029 * Class PluginDescriptorXpp3Reader. 030 * 031 * @version $Revision: 879455 $ $Date: 2013-09-22 16:29:47 +0000 (Sun, 22 Sep 2013) $ 032 */ 033@SuppressWarnings( "all" ) 034public class PluginDescriptorXpp3Reader 035{ 036 037 //--------------------------/ 038 //- Class/Member Variables -/ 039 //--------------------------/ 040 041 /** 042 * If set the parser will be loaded with all single characters 043 * from the XHTML specification. 044 * The entities used: 045 * <ul> 046 * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent</li> 047 * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent</li> 048 * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent</li> 049 * </ul> 050 */ 051 private boolean addDefaultEntities = true; 052 053 054 //-----------/ 055 //- Methods -/ 056 //-----------/ 057 058 /** 059 * Method checkFieldWithDuplicate. 060 * 061 * @param parser 062 * @param parsed 063 * @param alias 064 * @param tagName 065 * @throws XmlPullParserException 066 * @return boolean 067 */ 068 private boolean checkFieldWithDuplicate( XmlPullParser parser, String tagName, String alias, java.util.Set parsed ) 069 throws XmlPullParserException 070 { 071 if ( !( parser.getName().equals( tagName ) || parser.getName().equals( alias ) ) ) 072 { 073 return false; 074 } 075 if ( !parsed.add( tagName ) ) 076 { 077 throw new XmlPullParserException( "Duplicated tag: '" + tagName + "'", parser, null ); 078 } 079 return true; 080 } //-- boolean checkFieldWithDuplicate( XmlPullParser, String, String, java.util.Set ) 081 082 /** 083 * Method checkUnknownAttribute. 084 * 085 * @param parser 086 * @param strict 087 * @param tagName 088 * @param attribute 089 * @throws XmlPullParserException 090 * @throws IOException 091 */ 092 private void checkUnknownAttribute( XmlPullParser parser, String attribute, String tagName, boolean strict ) 093 throws XmlPullParserException, IOException 094 { 095 // strictXmlAttributes = true for model: if strict == true, not only elements are checked but attributes too 096 if ( strict ) 097 { 098 throw new XmlPullParserException( "Unknown attribute '" + attribute + "' for tag '" + tagName + "'", parser, null ); 099 } 100 } //-- void checkUnknownAttribute( XmlPullParser, String, String, boolean ) 101 102 /** 103 * Method checkUnknownElement. 104 * 105 * @param parser 106 * @param strict 107 * @throws XmlPullParserException 108 * @throws IOException 109 */ 110 private void checkUnknownElement( XmlPullParser parser, boolean strict ) 111 throws XmlPullParserException, IOException 112 { 113 if ( strict ) 114 { 115 throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null ); 116 } 117 118 for ( int unrecognizedTagCount = 1; unrecognizedTagCount > 0; ) 119 { 120 int eventType = parser.next(); 121 if ( eventType == XmlPullParser.START_TAG ) 122 { 123 unrecognizedTagCount++; 124 } 125 else if ( eventType == XmlPullParser.END_TAG ) 126 { 127 unrecognizedTagCount--; 128 } 129 } 130 } //-- void checkUnknownElement( XmlPullParser, boolean ) 131 132 /** 133 * Returns the state of the "add default entities" flag. 134 * 135 * @return boolean 136 */ 137 public boolean getAddDefaultEntities() 138 { 139 return addDefaultEntities; 140 } //-- boolean getAddDefaultEntities() 141 142 /** 143 * Method getBooleanValue. 144 * 145 * @param s 146 * @param parser 147 * @param attribute 148 * @throws XmlPullParserException 149 * @return boolean 150 */ 151 private boolean getBooleanValue( String s, String attribute, XmlPullParser parser ) 152 throws XmlPullParserException 153 { 154 return getBooleanValue( s, attribute, parser, null ); 155 } //-- boolean getBooleanValue( String, String, XmlPullParser ) 156 157 /** 158 * Method getBooleanValue. 159 * 160 * @param s 161 * @param defaultValue 162 * @param parser 163 * @param attribute 164 * @throws XmlPullParserException 165 * @return boolean 166 */ 167 private boolean getBooleanValue( String s, String attribute, XmlPullParser parser, String defaultValue ) 168 throws XmlPullParserException 169 { 170 if ( s != null && s.length() != 0 ) 171 { 172 return Boolean.valueOf( s ).booleanValue(); 173 } 174 if ( defaultValue != null ) 175 { 176 return Boolean.valueOf( defaultValue ).booleanValue(); 177 } 178 return false; 179 } //-- boolean getBooleanValue( String, String, XmlPullParser, String ) 180 181 /** 182 * Method getByteValue. 183 * 184 * @param s 185 * @param strict 186 * @param parser 187 * @param attribute 188 * @throws XmlPullParserException 189 * @return byte 190 */ 191 private byte getByteValue( String s, String attribute, XmlPullParser parser, boolean strict ) 192 throws XmlPullParserException 193 { 194 if ( s != null ) 195 { 196 try 197 { 198 return Byte.valueOf( s ).byteValue(); 199 } 200 catch ( NumberFormatException nfe ) 201 { 202 if ( strict ) 203 { 204 throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a byte", parser, nfe ); 205 } 206 } 207 } 208 return 0; 209 } //-- byte getByteValue( String, String, XmlPullParser, boolean ) 210 211 /** 212 * Method getCharacterValue. 213 * 214 * @param s 215 * @param parser 216 * @param attribute 217 * @throws XmlPullParserException 218 * @return char 219 */ 220 private char getCharacterValue( String s, String attribute, XmlPullParser parser ) 221 throws XmlPullParserException 222 { 223 if ( s != null ) 224 { 225 return s.charAt( 0 ); 226 } 227 return 0; 228 } //-- char getCharacterValue( String, String, XmlPullParser ) 229 230 /** 231 * Method getDateValue. 232 * 233 * @param s 234 * @param parser 235 * @param attribute 236 * @throws XmlPullParserException 237 * @return Date 238 */ 239 private java.util.Date getDateValue( String s, String attribute, XmlPullParser parser ) 240 throws XmlPullParserException 241 { 242 return getDateValue( s, attribute, null, parser ); 243 } //-- java.util.Date getDateValue( String, String, XmlPullParser ) 244 245 /** 246 * Method getDateValue. 247 * 248 * @param s 249 * @param parser 250 * @param dateFormat 251 * @param attribute 252 * @throws XmlPullParserException 253 * @return Date 254 */ 255 private java.util.Date getDateValue( String s, String attribute, String dateFormat, XmlPullParser parser ) 256 throws XmlPullParserException 257 { 258 if ( s != null ) 259 { 260 String effectiveDateFormat = dateFormat; 261 if ( dateFormat == null ) 262 { 263 effectiveDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"; 264 } 265 if ( "long".equals( effectiveDateFormat ) ) 266 { 267 try 268 { 269 return new java.util.Date( Long.parseLong( s ) ); 270 } 271 catch ( NumberFormatException e ) 272 { 273 throw new XmlPullParserException( e.getMessage(), parser, e ); 274 } 275 } 276 else 277 { 278 try 279 { 280 DateFormat dateParser = new java.text.SimpleDateFormat( effectiveDateFormat, java.util.Locale.US ); 281 return dateParser.parse( s ); 282 } 283 catch ( java.text.ParseException e ) 284 { 285 throw new XmlPullParserException( e.getMessage(), parser, e ); 286 } 287 } 288 } 289 return null; 290 } //-- java.util.Date getDateValue( String, String, String, XmlPullParser ) 291 292 /** 293 * Method getDoubleValue. 294 * 295 * @param s 296 * @param strict 297 * @param parser 298 * @param attribute 299 * @throws XmlPullParserException 300 * @return double 301 */ 302 private double getDoubleValue( String s, String attribute, XmlPullParser parser, boolean strict ) 303 throws XmlPullParserException 304 { 305 if ( s != null ) 306 { 307 try 308 { 309 return Double.valueOf( s ).doubleValue(); 310 } 311 catch ( NumberFormatException nfe ) 312 { 313 if ( strict ) 314 { 315 throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, nfe ); 316 } 317 } 318 } 319 return 0; 320 } //-- double getDoubleValue( String, String, XmlPullParser, boolean ) 321 322 /** 323 * Method getFloatValue. 324 * 325 * @param s 326 * @param strict 327 * @param parser 328 * @param attribute 329 * @throws XmlPullParserException 330 * @return float 331 */ 332 private float getFloatValue( String s, String attribute, XmlPullParser parser, boolean strict ) 333 throws XmlPullParserException 334 { 335 if ( s != null ) 336 { 337 try 338 { 339 return Float.valueOf( s ).floatValue(); 340 } 341 catch ( NumberFormatException nfe ) 342 { 343 if ( strict ) 344 { 345 throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, nfe ); 346 } 347 } 348 } 349 return 0; 350 } //-- float getFloatValue( String, String, XmlPullParser, boolean ) 351 352 /** 353 * Method getIntegerValue. 354 * 355 * @param s 356 * @param strict 357 * @param parser 358 * @param attribute 359 * @throws XmlPullParserException 360 * @return int 361 */ 362 private int getIntegerValue( String s, String attribute, XmlPullParser parser, boolean strict ) 363 throws XmlPullParserException 364 { 365 if ( s != null ) 366 { 367 try 368 { 369 return Integer.valueOf( s ).intValue(); 370 } 371 catch ( NumberFormatException nfe ) 372 { 373 if ( strict ) 374 { 375 throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be an integer", parser, nfe ); 376 } 377 } 378 } 379 return 0; 380 } //-- int getIntegerValue( String, String, XmlPullParser, boolean ) 381 382 /** 383 * Method getLongValue. 384 * 385 * @param s 386 * @param strict 387 * @param parser 388 * @param attribute 389 * @throws XmlPullParserException 390 * @return long 391 */ 392 private long getLongValue( String s, String attribute, XmlPullParser parser, boolean strict ) 393 throws XmlPullParserException 394 { 395 if ( s != null ) 396 { 397 try 398 { 399 return Long.valueOf( s ).longValue(); 400 } 401 catch ( NumberFormatException nfe ) 402 { 403 if ( strict ) 404 { 405 throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a long integer", parser, nfe ); 406 } 407 } 408 } 409 return 0; 410 } //-- long getLongValue( String, String, XmlPullParser, boolean ) 411 412 /** 413 * Method getRequiredAttributeValue. 414 * 415 * @param s 416 * @param strict 417 * @param parser 418 * @param attribute 419 * @throws XmlPullParserException 420 * @return String 421 */ 422 private String getRequiredAttributeValue( String s, String attribute, XmlPullParser parser, boolean strict ) 423 throws XmlPullParserException 424 { 425 if ( s == null ) 426 { 427 if ( strict ) 428 { 429 throw new XmlPullParserException( "Missing required value for attribute '" + attribute + "'", parser, null ); 430 } 431 } 432 return s; 433 } //-- String getRequiredAttributeValue( String, String, XmlPullParser, boolean ) 434 435 /** 436 * Method getShortValue. 437 * 438 * @param s 439 * @param strict 440 * @param parser 441 * @param attribute 442 * @throws XmlPullParserException 443 * @return short 444 */ 445 private short getShortValue( String s, String attribute, XmlPullParser parser, boolean strict ) 446 throws XmlPullParserException 447 { 448 if ( s != null ) 449 { 450 try 451 { 452 return Short.valueOf( s ).shortValue(); 453 } 454 catch ( NumberFormatException nfe ) 455 { 456 if ( strict ) 457 { 458 throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a short integer", parser, nfe ); 459 } 460 } 461 } 462 return 0; 463 } //-- short getShortValue( String, String, XmlPullParser, boolean ) 464 465 /** 466 * Method getTrimmedValue. 467 * 468 * @param s 469 * @return String 470 */ 471 private String getTrimmedValue( String s ) 472 { 473 if ( s != null ) 474 { 475 s = s.trim(); 476 } 477 return s; 478 } //-- String getTrimmedValue( String ) 479 480 /** 481 * Method nextTag. 482 * 483 * @param parser 484 * @throws IOException 485 * @throws XmlPullParserException 486 * @return int 487 */ 488 private int nextTag( XmlPullParser parser ) 489 throws IOException, XmlPullParserException 490 { 491 int eventType = parser.next(); 492 if ( eventType == XmlPullParser.TEXT ) 493 { 494 eventType = parser.next(); 495 } 496 if ( eventType != XmlPullParser.START_TAG && eventType != XmlPullParser.END_TAG ) 497 { 498 throw new XmlPullParserException( "expected START_TAG or END_TAG not " + XmlPullParser.TYPES[eventType], parser, null ); 499 } 500 return eventType; 501 } //-- int nextTag( XmlPullParser ) 502 503 /** 504 * @see ReaderFactory#newXmlReader 505 * 506 * @param reader 507 * @param strict 508 * @throws IOException 509 * @throws XmlPullParserException 510 * @return PluginDescriptor 511 */ 512 public PluginDescriptor read( Reader reader, boolean strict ) 513 throws IOException, XmlPullParserException 514 { 515 XmlPullParser parser = addDefaultEntities ? new MXParser(EntityReplacementMap.defaultEntityReplacementMap) : new MXParser( ); 516 517 parser.setInput( reader ); 518 519 520 return read( parser, strict ); 521 } //-- PluginDescriptor read( Reader, boolean ) 522 523 /** 524 * @see ReaderFactory#newXmlReader 525 * 526 * @param reader 527 * @throws IOException 528 * @throws XmlPullParserException 529 * @return PluginDescriptor 530 */ 531 public PluginDescriptor read( Reader reader ) 532 throws IOException, XmlPullParserException 533 { 534 return read( reader, true ); 535 } //-- PluginDescriptor read( Reader ) 536 537 /** 538 * Method read. 539 * 540 * @param in 541 * @param strict 542 * @throws IOException 543 * @throws XmlPullParserException 544 * @return PluginDescriptor 545 */ 546 public PluginDescriptor read( InputStream in, boolean strict ) 547 throws IOException, XmlPullParserException 548 { 549 return read( ReaderFactory.newXmlReader( in ), strict ); 550 } //-- PluginDescriptor read( InputStream, boolean ) 551 552 /** 553 * Method read. 554 * 555 * @param in 556 * @throws IOException 557 * @throws XmlPullParserException 558 * @return PluginDescriptor 559 */ 560 public PluginDescriptor read( InputStream in ) 561 throws IOException, XmlPullParserException 562 { 563 return read( ReaderFactory.newXmlReader( in ) ); 564 } //-- PluginDescriptor read( InputStream ) 565 566 /** 567 * Method parseConfiguration. 568 * 569 * @param parser 570 * @param strict 571 * @throws IOException 572 * @throws XmlPullParserException 573 * @return Configuration 574 */ 575 private Configuration parseConfiguration( XmlPullParser parser, boolean strict ) 576 throws IOException, XmlPullParserException 577 { 578 String tagName = parser.getName(); 579 Configuration configuration = new Configuration(); 580 for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- ) 581 { 582 String name = parser.getAttributeName( i ); 583 String value = parser.getAttributeValue( i ); 584 585 if ( name.indexOf( ':' ) >= 0 ) 586 { 587 // just ignore attributes with non-default namespace (for example: xmlns:xsi) 588 } 589 else if ( "implementation".equals( name ) ) 590 { 591 configuration.setImplementation( getTrimmedValue( value ) ); 592 } 593 else if ( "default-value".equals( name ) ) 594 { 595 configuration.setDefaultValue( getTrimmedValue( value ) ); 596 } 597 else 598 { 599 checkUnknownAttribute( parser, name, tagName, strict ); 600 } 601 } 602 configuration.setExpression( getTrimmedValue( parser.nextText() ) ); 603 return configuration; 604 } //-- Configuration parseConfiguration( XmlPullParser, boolean ) 605 606 /** 607 * Method parseDependency. 608 * 609 * @param parser 610 * @param strict 611 * @throws IOException 612 * @throws XmlPullParserException 613 * @return Dependency 614 */ 615 private Dependency parseDependency( XmlPullParser parser, boolean strict ) 616 throws IOException, XmlPullParserException 617 { 618 String tagName = parser.getName(); 619 Dependency dependency = new Dependency(); 620 for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- ) 621 { 622 String name = parser.getAttributeName( i ); 623 String value = parser.getAttributeValue( i ); 624 625 if ( name.indexOf( ':' ) >= 0 ) 626 { 627 // just ignore attributes with non-default namespace (for example: xmlns:xsi) 628 } 629 else 630 { 631 checkUnknownAttribute( parser, name, tagName, strict ); 632 } 633 } 634 java.util.Set parsed = new java.util.HashSet(); 635 while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG ) 636 { 637 if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) ) 638 { 639 dependency.setGroupId( getTrimmedValue( parser.nextText() ) ); 640 } 641 else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) ) 642 { 643 dependency.setArtifactId( getTrimmedValue( parser.nextText() ) ); 644 } 645 else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) ) 646 { 647 dependency.setVersion( getTrimmedValue( parser.nextText() ) ); 648 } 649 else if ( checkFieldWithDuplicate( parser, "type", null, parsed ) ) 650 { 651 dependency.setType( getTrimmedValue( parser.nextText() ) ); 652 } 653 else 654 { 655 checkUnknownElement( parser, strict ); 656 } 657 } 658 return dependency; 659 } //-- Dependency parseDependency( XmlPullParser, boolean ) 660 661 /** 662 * Method parseMojoDescriptor. 663 * 664 * @param parser 665 * @param strict 666 * @throws IOException 667 * @throws XmlPullParserException 668 * @return MojoDescriptor 669 */ 670 private MojoDescriptor parseMojoDescriptor( XmlPullParser parser, boolean strict ) 671 throws IOException, XmlPullParserException 672 { 673 String tagName = parser.getName(); 674 MojoDescriptor mojoDescriptor = new MojoDescriptor(); 675 for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- ) 676 { 677 String name = parser.getAttributeName( i ); 678 String value = parser.getAttributeValue( i ); 679 680 if ( name.indexOf( ':' ) >= 0 ) 681 { 682 // just ignore attributes with non-default namespace (for example: xmlns:xsi) 683 } 684 else 685 { 686 checkUnknownAttribute( parser, name, tagName, strict ); 687 } 688 } 689 java.util.Set parsed = new java.util.HashSet(); 690 while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG ) 691 { 692 if ( checkFieldWithDuplicate( parser, "goal", null, parsed ) ) 693 { 694 mojoDescriptor.setGoal( getTrimmedValue( parser.nextText() ) ); 695 } 696 else if ( checkFieldWithDuplicate( parser, "description", null, parsed ) ) 697 { 698 mojoDescriptor.setDescription( getTrimmedValue( parser.nextText() ) ); 699 } 700 else if ( checkFieldWithDuplicate( parser, "implementation", null, parsed ) ) 701 { 702 mojoDescriptor.setImplementation( getTrimmedValue( parser.nextText() ) ); 703 } 704 else if ( checkFieldWithDuplicate( parser, "language", null, parsed ) ) 705 { 706 mojoDescriptor.setLanguage( getTrimmedValue( parser.nextText() ) ); 707 } 708 else if ( checkFieldWithDuplicate( parser, "phase", null, parsed ) ) 709 { 710 mojoDescriptor.setPhase( getTrimmedValue( parser.nextText() ) ); 711 } 712 else if ( checkFieldWithDuplicate( parser, "executePhase", null, parsed ) ) 713 { 714 mojoDescriptor.setExecutePhase( getTrimmedValue( parser.nextText() ) ); 715 } 716 else if ( checkFieldWithDuplicate( parser, "executeGoal", null, parsed ) ) 717 { 718 mojoDescriptor.setExecuteGoal( getTrimmedValue( parser.nextText() ) ); 719 } 720 else if ( checkFieldWithDuplicate( parser, "executeLifecycle", null, parsed ) ) 721 { 722 mojoDescriptor.setExecuteLifecycle( getTrimmedValue( parser.nextText() ) ); 723 } 724 else if ( checkFieldWithDuplicate( parser, "requiresDependencyResolution", null, parsed ) ) 725 { 726 mojoDescriptor.setRequiresDependencyResolution( getTrimmedValue( parser.nextText() ) ); 727 } 728 else if ( checkFieldWithDuplicate( parser, "requiresDependencyCollection", null, parsed ) ) 729 { 730 mojoDescriptor.setRequiresDependencyCollection( getTrimmedValue( parser.nextText() ) ); 731 } 732 else if ( checkFieldWithDuplicate( parser, "requiresDirectInvocation", null, parsed ) ) 733 { 734 mojoDescriptor.setRequiresDirectInvocation( getBooleanValue( getTrimmedValue( parser.nextText() ), "requiresDirectInvocation", parser, "false" ) ); 735 } 736 else if ( checkFieldWithDuplicate( parser, "requiresProject", null, parsed ) ) 737 { 738 mojoDescriptor.setRequiresProject( getBooleanValue( getTrimmedValue( parser.nextText() ), "requiresProject", parser, "true" ) ); 739 } 740 else if ( checkFieldWithDuplicate( parser, "requiresReports", null, parsed ) ) 741 { 742 mojoDescriptor.setRequiresReports( getBooleanValue( getTrimmedValue( parser.nextText() ), "requiresReports", parser, "false" ) ); 743 } 744 else if ( checkFieldWithDuplicate( parser, "requiresOnline", null, parsed ) ) 745 { 746 mojoDescriptor.setRequiresOnline( getBooleanValue( getTrimmedValue( parser.nextText() ), "requiresOnline", parser, "false" ) ); 747 } 748 else if ( checkFieldWithDuplicate( parser, "aggregator", null, parsed ) ) 749 { 750 mojoDescriptor.setAggregator( getBooleanValue( getTrimmedValue( parser.nextText() ), "aggregator", parser, "false" ) ); 751 } 752 else if ( checkFieldWithDuplicate( parser, "inheritedByDefault", null, parsed ) ) 753 { 754 mojoDescriptor.setInheritedByDefault( getBooleanValue( getTrimmedValue( parser.nextText() ), "inheritedByDefault", parser, "true" ) ); 755 } 756 else if ( checkFieldWithDuplicate( parser, "threadSafe", null, parsed ) ) 757 { 758 mojoDescriptor.setThreadSafe( getBooleanValue( getTrimmedValue( parser.nextText() ), "threadSafe", parser, "false" ) ); 759 } 760 else if ( checkFieldWithDuplicate( parser, "instantiationStrategy", null, parsed ) ) 761 { 762 mojoDescriptor.setInstantiationStrategy( getTrimmedValue( parser.nextText() ) ); 763 } 764 else if ( checkFieldWithDuplicate( parser, "executionStrategy", null, parsed ) ) 765 { 766 mojoDescriptor.setExecutionStrategy( getTrimmedValue( parser.nextText() ) ); 767 } 768 else if ( checkFieldWithDuplicate( parser, "since", null, parsed ) ) 769 { 770 mojoDescriptor.setSince( getTrimmedValue( parser.nextText() ) ); 771 } 772 else if ( checkFieldWithDuplicate( parser, "deprecated", null, parsed ) ) 773 { 774 mojoDescriptor.setDeprecated( getTrimmedValue( parser.nextText() ) ); 775 } 776 else if ( checkFieldWithDuplicate( parser, "configurator", null, parsed ) ) 777 { 778 mojoDescriptor.setConfigurator( getTrimmedValue( parser.nextText() ) ); 779 } 780 else if ( checkFieldWithDuplicate( parser, "composer", null, parsed ) ) 781 { 782 mojoDescriptor.setComposer( getTrimmedValue( parser.nextText() ) ); 783 } 784 else if ( checkFieldWithDuplicate( parser, "parameters", null, parsed ) ) 785 { 786 java.util.List parameters = new java.util.ArrayList/*<Parameter>*/(); 787 mojoDescriptor.setParameters( parameters ); 788 while ( parser.nextTag() == XmlPullParser.START_TAG ) 789 { 790 if ( "parameter".equals( parser.getName() ) ) 791 { 792 parameters.add( parseParameter( parser, strict ) ); 793 } 794 else 795 { 796 checkUnknownElement( parser, strict ); 797 } 798 } 799 } 800 else if ( checkFieldWithDuplicate( parser, "configuration", null, parsed ) ) 801 { 802 java.util.List configuration = new java.util.ArrayList/*<Configuration>*/(); 803 mojoDescriptor.setConfiguration( configuration ); 804 while ( parser.nextTag() == XmlPullParser.START_TAG ) 805 { 806 if ( "paramName".equals( parser.getName() ) ) 807 { 808 configuration.add( parseConfiguration( parser, strict ) ); 809 } 810 else 811 { 812 checkUnknownElement( parser, strict ); 813 } 814 } 815 } 816 else if ( checkFieldWithDuplicate( parser, "requirements", null, parsed ) ) 817 { 818 java.util.List requirements = new java.util.ArrayList/*<Requirement>*/(); 819 mojoDescriptor.setRequirements( requirements ); 820 while ( parser.nextTag() == XmlPullParser.START_TAG ) 821 { 822 if ( "requirement".equals( parser.getName() ) ) 823 { 824 requirements.add( parseRequirement( parser, strict ) ); 825 } 826 else 827 { 828 checkUnknownElement( parser, strict ); 829 } 830 } 831 } 832 else 833 { 834 checkUnknownElement( parser, strict ); 835 } 836 } 837 return mojoDescriptor; 838 } //-- MojoDescriptor parseMojoDescriptor( XmlPullParser, boolean ) 839 840 /** 841 * Method parseParameter. 842 * 843 * @param parser 844 * @param strict 845 * @throws IOException 846 * @throws XmlPullParserException 847 * @return Parameter 848 */ 849 private Parameter parseParameter( XmlPullParser parser, boolean strict ) 850 throws IOException, XmlPullParserException 851 { 852 String tagName = parser.getName(); 853 Parameter parameter = new Parameter(); 854 for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- ) 855 { 856 String name = parser.getAttributeName( i ); 857 String value = parser.getAttributeValue( i ); 858 859 if ( name.indexOf( ':' ) >= 0 ) 860 { 861 // just ignore attributes with non-default namespace (for example: xmlns:xsi) 862 } 863 else 864 { 865 checkUnknownAttribute( parser, name, tagName, strict ); 866 } 867 } 868 java.util.Set parsed = new java.util.HashSet(); 869 while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG ) 870 { 871 if ( checkFieldWithDuplicate( parser, "name", null, parsed ) ) 872 { 873 parameter.setName( getTrimmedValue( parser.nextText() ) ); 874 } 875 else if ( checkFieldWithDuplicate( parser, "alias", null, parsed ) ) 876 { 877 parameter.setAlias( getTrimmedValue( parser.nextText() ) ); 878 } 879 else if ( checkFieldWithDuplicate( parser, "type", null, parsed ) ) 880 { 881 parameter.setType( getTrimmedValue( parser.nextText() ) ); 882 } 883 else if ( checkFieldWithDuplicate( parser, "required", null, parsed ) ) 884 { 885 parameter.setRequired( getBooleanValue( getTrimmedValue( parser.nextText() ), "required", parser, "false" ) ); 886 } 887 else if ( checkFieldWithDuplicate( parser, "editable", null, parsed ) ) 888 { 889 parameter.setEditable( getBooleanValue( getTrimmedValue( parser.nextText() ), "editable", parser, "true" ) ); 890 } 891 else if ( checkFieldWithDuplicate( parser, "implementation", null, parsed ) ) 892 { 893 parameter.setImplementation( getTrimmedValue( parser.nextText() ) ); 894 } 895 else if ( checkFieldWithDuplicate( parser, "description", null, parsed ) ) 896 { 897 parameter.setDescription( getTrimmedValue( parser.nextText() ) ); 898 } 899 else if ( checkFieldWithDuplicate( parser, "since", null, parsed ) ) 900 { 901 parameter.setSince( getTrimmedValue( parser.nextText() ) ); 902 } 903 else if ( checkFieldWithDuplicate( parser, "deprecated", null, parsed ) ) 904 { 905 parameter.setDeprecated( getTrimmedValue( parser.nextText() ) ); 906 } 907 else 908 { 909 checkUnknownElement( parser, strict ); 910 } 911 } 912 return parameter; 913 } //-- Parameter parseParameter( XmlPullParser, boolean ) 914 915 /** 916 * Method parsePluginDescriptor. 917 * 918 * @param parser 919 * @param strict 920 * @throws IOException 921 * @throws XmlPullParserException 922 * @return PluginDescriptor 923 */ 924 private PluginDescriptor parsePluginDescriptor( XmlPullParser parser, boolean strict ) 925 throws IOException, XmlPullParserException 926 { 927 String tagName = parser.getName(); 928 PluginDescriptor pluginDescriptor = new PluginDescriptor(); 929 for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- ) 930 { 931 String name = parser.getAttributeName( i ); 932 String value = parser.getAttributeValue( i ); 933 934 if ( name.indexOf( ':' ) >= 0 ) 935 { 936 // just ignore attributes with non-default namespace (for example: xmlns:xsi) 937 } 938 else if ( "xmlns".equals( name ) ) 939 { 940 // ignore xmlns attribute in root class, which is a reserved attribute name 941 } 942 else 943 { 944 checkUnknownAttribute( parser, name, tagName, strict ); 945 } 946 } 947 java.util.Set parsed = new java.util.HashSet(); 948 while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG ) 949 { 950 if ( checkFieldWithDuplicate( parser, "description", null, parsed ) ) 951 { 952 pluginDescriptor.setDescription( getTrimmedValue( parser.nextText() ) ); 953 } 954 else if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) ) 955 { 956 pluginDescriptor.setGroupId( getTrimmedValue( parser.nextText() ) ); 957 } 958 else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) ) 959 { 960 pluginDescriptor.setArtifactId( getTrimmedValue( parser.nextText() ) ); 961 } 962 else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) ) 963 { 964 pluginDescriptor.setVersion( getTrimmedValue( parser.nextText() ) ); 965 } 966 else if ( checkFieldWithDuplicate( parser, "goalPrefix", null, parsed ) ) 967 { 968 pluginDescriptor.setGoalPrefix( getTrimmedValue( parser.nextText() ) ); 969 } 970 else if ( checkFieldWithDuplicate( parser, "isolatedRealm", null, parsed ) ) 971 { 972 pluginDescriptor.setIsolatedRealm( getBooleanValue( getTrimmedValue( parser.nextText() ), "isolatedRealm", parser, "false" ) ); 973 } 974 else if ( checkFieldWithDuplicate( parser, "inheritedByDefault", null, parsed ) ) 975 { 976 pluginDescriptor.setInheritedByDefault( getBooleanValue( getTrimmedValue( parser.nextText() ), "inheritedByDefault", parser, "true" ) ); 977 } 978 else if ( checkFieldWithDuplicate( parser, "mojos", null, parsed ) ) 979 { 980 java.util.List mojos = new java.util.ArrayList/*<MojoDescriptor>*/(); 981 pluginDescriptor.setMojos( mojos ); 982 while ( parser.nextTag() == XmlPullParser.START_TAG ) 983 { 984 if ( "mojo".equals( parser.getName() ) ) 985 { 986 mojos.add( parseMojoDescriptor( parser, strict ) ); 987 } 988 else 989 { 990 checkUnknownElement( parser, strict ); 991 } 992 } 993 } 994 else if ( checkFieldWithDuplicate( parser, "dependencies", null, parsed ) ) 995 { 996 java.util.List dependencies = new java.util.ArrayList/*<Dependency>*/(); 997 pluginDescriptor.setDependencies( dependencies ); 998 while ( parser.nextTag() == XmlPullParser.START_TAG ) 999 { 1000 if ( "dependency".equals( parser.getName() ) ) 1001 { 1002 dependencies.add( parseDependency( parser, strict ) ); 1003 } 1004 else 1005 { 1006 checkUnknownElement( parser, strict ); 1007 } 1008 } 1009 } 1010 else 1011 { 1012 checkUnknownElement( parser, strict ); 1013 } 1014 } 1015 return pluginDescriptor; 1016 } //-- PluginDescriptor parsePluginDescriptor( XmlPullParser, boolean ) 1017 1018 /** 1019 * Method parseRequirement. 1020 * 1021 * @param parser 1022 * @param strict 1023 * @throws IOException 1024 * @throws XmlPullParserException 1025 * @return Requirement 1026 */ 1027 private Requirement parseRequirement( XmlPullParser parser, boolean strict ) 1028 throws IOException, XmlPullParserException 1029 { 1030 String tagName = parser.getName(); 1031 Requirement requirement = new Requirement(); 1032 for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- ) 1033 { 1034 String name = parser.getAttributeName( i ); 1035 String value = parser.getAttributeValue( i ); 1036 1037 if ( name.indexOf( ':' ) >= 0 ) 1038 { 1039 // just ignore attributes with non-default namespace (for example: xmlns:xsi) 1040 } 1041 else 1042 { 1043 checkUnknownAttribute( parser, name, tagName, strict ); 1044 } 1045 } 1046 java.util.Set parsed = new java.util.HashSet(); 1047 while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG ) 1048 { 1049 if ( checkFieldWithDuplicate( parser, "role", null, parsed ) ) 1050 { 1051 requirement.setRole( getTrimmedValue( parser.nextText() ) ); 1052 } 1053 else if ( checkFieldWithDuplicate( parser, "role-hint", null, parsed ) ) 1054 { 1055 requirement.setRoleHint( getTrimmedValue( parser.nextText() ) ); 1056 } 1057 else if ( checkFieldWithDuplicate( parser, "field-name", null, parsed ) ) 1058 { 1059 requirement.setFieldName( getTrimmedValue( parser.nextText() ) ); 1060 } 1061 else 1062 { 1063 checkUnknownElement( parser, strict ); 1064 } 1065 } 1066 return requirement; 1067 } //-- Requirement parseRequirement( XmlPullParser, boolean ) 1068 1069 /** 1070 * Method read. 1071 * 1072 * @param parser 1073 * @param strict 1074 * @throws IOException 1075 * @throws XmlPullParserException 1076 * @return PluginDescriptor 1077 */ 1078 private PluginDescriptor read( XmlPullParser parser, boolean strict ) 1079 throws IOException, XmlPullParserException 1080 { 1081 int eventType = parser.getEventType(); 1082 while ( eventType != XmlPullParser.END_DOCUMENT ) 1083 { 1084 if ( eventType == XmlPullParser.START_TAG ) 1085 { 1086 if ( strict && ! "plugin".equals( parser.getName() ) ) 1087 { 1088 throw new XmlPullParserException( "Expected root element 'plugin' but found '" + parser.getName() + "'", parser, null ); 1089 } 1090 PluginDescriptor pluginDescriptor = parsePluginDescriptor( parser, strict ); 1091 pluginDescriptor.setModelEncoding( parser.getInputEncoding() ); 1092 return pluginDescriptor; 1093 } 1094 eventType = parser.next(); 1095 } 1096 throw new XmlPullParserException( "Expected root element 'plugin' but found no element at all: invalid XML document", parser, null ); 1097 } //-- PluginDescriptor read( XmlPullParser, boolean ) 1098 1099 /** 1100 * Sets the state of the "add default entities" flag. 1101 * 1102 * @param addDefaultEntities 1103 */ 1104 public void setAddDefaultEntities( boolean addDefaultEntities ) 1105 { 1106 this.addDefaultEntities = addDefaultEntities; 1107 } //-- void setAddDefaultEntities( boolean ) 1108 1109}