001// =================== DO NOT EDIT THIS FILE ==================== 002// Generated by Modello 1.7, 003// any modifications will be overwritten. 004// ============================================================== 005 006package org.apache.archiva.redback.role.model.io.stax; 007 008 //---------------------------------/ 009 //- Imported classes and packages -/ 010//---------------------------------/ 011 012import java.io.ByteArrayInputStream; 013import java.io.FileInputStream; 014import java.io.IOException; 015import java.io.InputStream; 016import java.io.InputStreamReader; 017import java.io.Reader; 018import java.io.StringReader; 019import java.io.StringWriter; 020import java.text.DateFormat; 021import java.text.ParsePosition; 022import java.util.Locale; 023import java.util.regex.Matcher; 024import java.util.regex.Pattern; 025import javax.xml.stream.*; 026import org.apache.archiva.redback.role.model.ModelApplication; 027import org.apache.archiva.redback.role.model.ModelOperation; 028import org.apache.archiva.redback.role.model.ModelPermission; 029import org.apache.archiva.redback.role.model.ModelResource; 030import org.apache.archiva.redback.role.model.ModelRole; 031import org.apache.archiva.redback.role.model.ModelTemplate; 032import org.apache.archiva.redback.role.model.RedbackRoleModel; 033 034/** 035 * Class RedbackRoleModelStaxReader. 036 * 037 * @version $Revision$ $Date$ 038 */ 039@SuppressWarnings( "all" ) 040public class RedbackRoleModelStaxReader 041{ 042 043 //-----------/ 044 //- Methods -/ 045 //-----------/ 046 047 /** 048 * Method read. 049 * 050 * @param reader 051 * @param strict 052 * @throws IOException 053 * @throws XMLStreamException 054 * @return RedbackRoleModel 055 */ 056 public RedbackRoleModel read( Reader reader, boolean strict ) 057 throws IOException, XMLStreamException 058 { 059 XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader( reader ); 060 061 return read( xmlStreamReader, strict ); 062 } //-- RedbackRoleModel read( Reader, boolean ) 063 064 /** 065 * Method read. 066 * 067 * @param reader 068 * @throws IOException 069 * @throws XMLStreamException 070 * @return RedbackRoleModel 071 */ 072 public RedbackRoleModel read( Reader reader ) 073 throws IOException, XMLStreamException 074 { 075 return read( reader, true ); 076 } //-- RedbackRoleModel read( Reader ) 077 078 /** 079 * Method read. 080 * 081 * @param stream 082 * @param strict 083 * @throws IOException 084 * @throws XMLStreamException 085 * @return RedbackRoleModel 086 */ 087 public RedbackRoleModel read( InputStream stream, boolean strict ) 088 throws IOException, XMLStreamException 089 { 090 XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader( stream ); 091 092 return read( xmlStreamReader, strict ); 093 } //-- RedbackRoleModel read( InputStream, boolean ) 094 095 /** 096 * Method read. 097 * 098 * @param stream 099 * @throws IOException 100 * @throws XMLStreamException 101 * @return RedbackRoleModel 102 */ 103 public RedbackRoleModel read( InputStream stream ) 104 throws IOException, XMLStreamException 105 { 106 return read( stream, true ); 107 } //-- RedbackRoleModel read( InputStream ) 108 109 /** 110 * Method read. 111 * 112 * @param filePath 113 * @param strict 114 * @throws IOException 115 * @throws XMLStreamException 116 * @return RedbackRoleModel 117 */ 118 public RedbackRoleModel read( String filePath, boolean strict ) 119 throws IOException, XMLStreamException 120 { 121 java.io.File file = new java.io.File( filePath ); 122 XMLStreamReader xmlStreamReader = XMLInputFactory.newInstance().createXMLStreamReader( file.toURI().toURL().toExternalForm(), new FileInputStream( file ) ); 123 124 return read( xmlStreamReader, strict ); 125 } //-- RedbackRoleModel read( String, boolean ) 126 127 /** 128 * Method read. 129 * 130 * @param filePath 131 * @throws IOException 132 * @throws XMLStreamException 133 * @return RedbackRoleModel 134 */ 135 public RedbackRoleModel read( String filePath ) 136 throws IOException, XMLStreamException 137 { 138 return read( filePath, true ); 139 } //-- RedbackRoleModel read( String ) 140 141 /** 142 * Method checkFieldWithDuplicate. 143 * 144 * @param xmlStreamReader 145 * @param parsed 146 * @param alias 147 * @param tagName 148 * @throws XMLStreamException 149 * @return boolean 150 */ 151 private boolean checkFieldWithDuplicate( XMLStreamReader xmlStreamReader, String tagName, String alias, java.util.Set parsed ) 152 throws XMLStreamException 153 { 154 if ( !( xmlStreamReader.getLocalName().equals( tagName ) || xmlStreamReader.getLocalName().equals( alias ) ) ) 155 { 156 return false; 157 } 158 if ( !parsed.add( tagName ) ) 159 { 160 throw new XMLStreamException( "Duplicated tag: '" + tagName + "'", xmlStreamReader.getLocation() ); 161 } 162 return true; 163 } //-- boolean checkFieldWithDuplicate( XMLStreamReader, String, String, java.util.Set ) 164 165 /** 166 * Method checkUnknownElement. 167 * 168 * @param xmlStreamReader 169 * @param strict 170 * @throws XMLStreamException 171 */ 172 private void checkUnknownElement( XMLStreamReader xmlStreamReader, boolean strict ) 173 throws XMLStreamException 174 { 175 if ( strict ) 176 { 177 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 178 } 179 int unrecognizedTagCount = 1; 180 while( unrecognizedTagCount != 0 ) 181 { 182 xmlStreamReader.next(); 183 if ( xmlStreamReader.getEventType() == XMLStreamConstants.START_ELEMENT ) 184 { 185 unrecognizedTagCount++; 186 } 187 else if ( xmlStreamReader.getEventType() == XMLStreamConstants.END_ELEMENT ) 188 { 189 unrecognizedTagCount--; 190 } 191 } 192 } //-- void checkUnknownElement( XMLStreamReader, boolean ) 193 194 /** 195 * Method getBooleanValue. 196 * 197 * @param s 198 * @param xmlStreamReader 199 * @param attribute 200 * @throws XMLStreamException 201 * @return boolean 202 */ 203 private boolean getBooleanValue( String s, String attribute, XMLStreamReader xmlStreamReader ) 204 throws XMLStreamException 205 { 206 if ( s != null ) 207 { 208 return Boolean.valueOf( s ).booleanValue(); 209 } 210 return false; 211 } //-- boolean getBooleanValue( String, String, XMLStreamReader ) 212 213 /** 214 * Method getByteValue. 215 * 216 * @param s 217 * @param strict 218 * @param xmlStreamReader 219 * @param attribute 220 * @throws XMLStreamException 221 * @return byte 222 */ 223 private byte getByteValue( String s, String attribute, XMLStreamReader xmlStreamReader, boolean strict ) 224 throws XMLStreamException 225 { 226 if ( s != null ) 227 { 228 try 229 { 230 return Byte.valueOf( s ).byteValue(); 231 } 232 catch ( NumberFormatException nfe ) 233 { 234 if ( strict ) 235 { 236 throw new XMLStreamException( "Unable to parse element '" + attribute + "', must be a byte but was '" + s + "'", xmlStreamReader.getLocation(), nfe ); 237 } 238 } 239 } 240 return 0; 241 } //-- byte getByteValue( String, String, XMLStreamReader, boolean ) 242 243 /** 244 * Method getCharacterValue. 245 * 246 * @param s 247 * @param xmlStreamReader 248 * @param attribute 249 * @throws XMLStreamException 250 * @return char 251 */ 252 private char getCharacterValue( String s, String attribute, XMLStreamReader xmlStreamReader ) 253 throws XMLStreamException 254 { 255 if ( s != null ) 256 { 257 return s.charAt( 0 ); 258 } 259 return 0; 260 } //-- char getCharacterValue( String, String, XMLStreamReader ) 261 262 /** 263 * Method getDateValue. 264 * 265 * @param s 266 * @param xmlStreamReader 267 * @param dateFormat 268 * @param attribute 269 * @throws XMLStreamException 270 * @return Date 271 */ 272 private java.util.Date getDateValue( String s, String attribute, String dateFormat, XMLStreamReader xmlStreamReader ) 273 throws XMLStreamException 274 { 275 if ( s != null ) 276 { 277 String effectiveDateFormat = dateFormat; 278 if ( dateFormat == null ) 279 { 280 effectiveDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"; 281 } 282 if ( "long".equals( effectiveDateFormat ) ) 283 { 284 try 285 { 286 return new java.util.Date( Long.parseLong( s ) ); 287 } 288 catch ( NumberFormatException e ) 289 { 290 throw new XMLStreamException( e.getMessage(), xmlStreamReader.getLocation(), e ); 291 } 292 } 293 else 294 { 295 try 296 { 297 DateFormat dateParser = new java.text.SimpleDateFormat( effectiveDateFormat, java.util.Locale.US ); 298 return dateParser.parse( s ); 299 } 300 catch ( java.text.ParseException e ) 301 { 302 throw new XMLStreamException( e.getMessage(), xmlStreamReader.getLocation(), e ); 303 } 304 } 305 } 306 return null; 307 } //-- java.util.Date getDateValue( String, String, String, XMLStreamReader ) 308 309 /** 310 * Method getDefaultValue. 311 * 312 * @param s 313 * @param v 314 * @return String 315 */ 316 private String getDefaultValue( String s, String v ) 317 { 318 if ( s == null ) 319 { 320 s = v; 321 } 322 return s; 323 } //-- String getDefaultValue( String, String ) 324 325 /** 326 * Method getDoubleValue. 327 * 328 * @param s 329 * @param strict 330 * @param xmlStreamReader 331 * @param attribute 332 * @throws XMLStreamException 333 * @return double 334 */ 335 private double getDoubleValue( String s, String attribute, XMLStreamReader xmlStreamReader, boolean strict ) 336 throws XMLStreamException 337 { 338 if ( s != null ) 339 { 340 try 341 { 342 return Double.valueOf( s ).doubleValue(); 343 } 344 catch ( NumberFormatException nfe ) 345 { 346 if ( strict ) 347 { 348 throw new XMLStreamException( "Unable to parse element '" + attribute + "', must be a floating point number but was '" + s + "'", xmlStreamReader.getLocation(), nfe ); 349 } 350 } 351 } 352 return 0; 353 } //-- double getDoubleValue( String, String, XMLStreamReader, boolean ) 354 355 /** 356 * Method getFloatValue. 357 * 358 * @param s 359 * @param strict 360 * @param xmlStreamReader 361 * @param attribute 362 * @throws XMLStreamException 363 * @return float 364 */ 365 private float getFloatValue( String s, String attribute, XMLStreamReader xmlStreamReader, boolean strict ) 366 throws XMLStreamException 367 { 368 if ( s != null ) 369 { 370 try 371 { 372 return Float.valueOf( s ).floatValue(); 373 } 374 catch ( NumberFormatException nfe ) 375 { 376 if ( strict ) 377 { 378 throw new XMLStreamException( "Unable to parse element '" + attribute + "', must be a floating point number but was '" + s + "'", xmlStreamReader.getLocation(), nfe ); 379 } 380 } 381 } 382 return 0; 383 } //-- float getFloatValue( String, String, XMLStreamReader, boolean ) 384 385 /** 386 * Method getIntegerValue. 387 * 388 * @param s 389 * @param strict 390 * @param xmlStreamReader 391 * @param attribute 392 * @throws XMLStreamException 393 * @return int 394 */ 395 private int getIntegerValue( String s, String attribute, XMLStreamReader xmlStreamReader, boolean strict ) 396 throws XMLStreamException 397 { 398 if ( s != null ) 399 { 400 try 401 { 402 return Integer.valueOf( s ).intValue(); 403 } 404 catch ( NumberFormatException nfe ) 405 { 406 if ( strict ) 407 { 408 throw new XMLStreamException( "Unable to parse element '" + attribute + "', must be an integer but was '" + s + "'", xmlStreamReader.getLocation(), nfe ); 409 } 410 } 411 } 412 return 0; 413 } //-- int getIntegerValue( String, String, XMLStreamReader, boolean ) 414 415 /** 416 * Method getLongValue. 417 * 418 * @param s 419 * @param strict 420 * @param xmlStreamReader 421 * @param attribute 422 * @throws XMLStreamException 423 * @return long 424 */ 425 private long getLongValue( String s, String attribute, XMLStreamReader xmlStreamReader, boolean strict ) 426 throws XMLStreamException 427 { 428 if ( s != null ) 429 { 430 try 431 { 432 return Long.valueOf( s ).longValue(); 433 } 434 catch ( NumberFormatException nfe ) 435 { 436 if ( strict ) 437 { 438 throw new XMLStreamException( "Unable to parse element '" + attribute + "', must be a long integer but was '" + s + "'", xmlStreamReader.getLocation(), nfe ); 439 } 440 } 441 } 442 return 0; 443 } //-- long getLongValue( String, String, XMLStreamReader, boolean ) 444 445 /** 446 * Method getRequiredAttributeValue. 447 * 448 * @param s 449 * @param strict 450 * @param xmlStreamReader 451 * @param attribute 452 * @throws XMLStreamException 453 * @return String 454 */ 455 private String getRequiredAttributeValue( String s, String attribute, XMLStreamReader xmlStreamReader, boolean strict ) 456 throws XMLStreamException 457 { 458 if ( s == null ) 459 { 460 if ( strict ) 461 { 462 throw new XMLStreamException( "Missing required value for attribute '" + attribute + "'", xmlStreamReader.getLocation() ); 463 } 464 } 465 return s; 466 } //-- String getRequiredAttributeValue( String, String, XMLStreamReader, boolean ) 467 468 /** 469 * Method getShortValue. 470 * 471 * @param s 472 * @param strict 473 * @param xmlStreamReader 474 * @param attribute 475 * @throws XMLStreamException 476 * @return short 477 */ 478 private short getShortValue( String s, String attribute, XMLStreamReader xmlStreamReader, boolean strict ) 479 throws XMLStreamException 480 { 481 if ( s != null ) 482 { 483 try 484 { 485 return Short.valueOf( s ).shortValue(); 486 } 487 catch ( NumberFormatException nfe ) 488 { 489 if ( strict ) 490 { 491 throw new XMLStreamException( "Unable to parse element '" + attribute + "', must be a short integer but was '" + s + "'", xmlStreamReader.getLocation(), nfe ); 492 } 493 } 494 } 495 return 0; 496 } //-- short getShortValue( String, String, XMLStreamReader, boolean ) 497 498 /** 499 * Method getTrimmedValue. 500 * 501 * @param s 502 * @return String 503 */ 504 private String getTrimmedValue( String s ) 505 { 506 if ( s != null ) 507 { 508 s = s.trim(); 509 } 510 return s; 511 } //-- String getTrimmedValue( String ) 512 513 /** 514 * Method nextTag. 515 * 516 * @param xmlStreamReader 517 * @throws XMLStreamException 518 * @return int 519 */ 520 private int nextTag( XMLStreamReader xmlStreamReader ) 521 throws XMLStreamException 522 { 523 while ( true ) 524 { 525 int eventType = xmlStreamReader.next(); 526 switch ( eventType ) 527 { 528 case XMLStreamConstants.CHARACTERS: 529 case XMLStreamConstants.CDATA: 530 case XMLStreamConstants.SPACE: 531 case XMLStreamConstants.PROCESSING_INSTRUCTION: 532 case XMLStreamConstants.COMMENT: 533 break; 534 case XMLStreamConstants.START_ELEMENT: 535 case XMLStreamConstants.END_ELEMENT: 536 return eventType; 537 default: 538 throw new XMLStreamException( "expected start or end tag", xmlStreamReader.getLocation() ); 539 } 540 } 541 } //-- int nextTag( XMLStreamReader ) 542 543 /** 544 * Method parseModelApplication. 545 * 546 * @param xmlStreamReader 547 * @param strict 548 * @throws IOException 549 * @throws XMLStreamException 550 * @return ModelApplication 551 */ 552 private ModelApplication parseModelApplication( XMLStreamReader xmlStreamReader, boolean strict ) 553 throws IOException, XMLStreamException 554 { 555 ModelApplication modelApplication = new ModelApplication(); 556 java.util.Set parsed = new java.util.HashSet(); 557 while ( ( strict ? xmlStreamReader.nextTag() : nextTag( xmlStreamReader ) ) == XMLStreamConstants.START_ELEMENT ) 558 { 559 if ( checkFieldWithDuplicate( xmlStreamReader, "version", null, parsed ) ) 560 { 561 modelApplication.setVersion( getTrimmedValue( xmlStreamReader.getElementText() ) ); 562 } 563 else if ( checkFieldWithDuplicate( xmlStreamReader, "id", null, parsed ) ) 564 { 565 modelApplication.setId( getTrimmedValue( xmlStreamReader.getElementText() ) ); 566 } 567 else if ( checkFieldWithDuplicate( xmlStreamReader, "description", null, parsed ) ) 568 { 569 modelApplication.setDescription( getTrimmedValue( xmlStreamReader.getElementText() ) ); 570 } 571 else if ( checkFieldWithDuplicate( xmlStreamReader, "longDescription", null, parsed ) ) 572 { 573 modelApplication.setLongDescription( getTrimmedValue( xmlStreamReader.getElementText() ) ); 574 } 575 else if ( checkFieldWithDuplicate( xmlStreamReader, "resources", null, parsed ) ) 576 { 577 java.util.List resources = new java.util.ArrayList/*<ModelResource>*/(); 578 modelApplication.setResources( resources ); 579 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 580 { 581 if ( "resource".equals( xmlStreamReader.getLocalName() ) ) 582 { 583 modelApplication.addResource( parseModelResource( xmlStreamReader, strict ) ); 584 } 585 else 586 { 587 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 588 } 589 } 590 } 591 else if ( checkFieldWithDuplicate( xmlStreamReader, "operations", null, parsed ) ) 592 { 593 java.util.List operations = new java.util.ArrayList/*<ModelOperation>*/(); 594 modelApplication.setOperations( operations ); 595 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 596 { 597 if ( "operation".equals( xmlStreamReader.getLocalName() ) ) 598 { 599 modelApplication.addOperation( parseModelOperation( xmlStreamReader, strict ) ); 600 } 601 else 602 { 603 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 604 } 605 } 606 } 607 else if ( checkFieldWithDuplicate( xmlStreamReader, "roles", null, parsed ) ) 608 { 609 java.util.List roles = new java.util.ArrayList/*<ModelRole>*/(); 610 modelApplication.setRoles( roles ); 611 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 612 { 613 if ( "role".equals( xmlStreamReader.getLocalName() ) ) 614 { 615 modelApplication.addRole( parseModelRole( xmlStreamReader, strict ) ); 616 } 617 else 618 { 619 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 620 } 621 } 622 } 623 else if ( checkFieldWithDuplicate( xmlStreamReader, "templates", null, parsed ) ) 624 { 625 java.util.List templates = new java.util.ArrayList/*<ModelTemplate>*/(); 626 modelApplication.setTemplates( templates ); 627 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 628 { 629 if ( "template".equals( xmlStreamReader.getLocalName() ) ) 630 { 631 modelApplication.addTemplate( parseModelTemplate( xmlStreamReader, strict ) ); 632 } 633 else 634 { 635 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 636 } 637 } 638 } 639 else 640 { 641 checkUnknownElement( xmlStreamReader, strict ); 642 } 643 } 644 return modelApplication; 645 } //-- ModelApplication parseModelApplication( XMLStreamReader, boolean ) 646 647 /** 648 * Method parseModelOperation. 649 * 650 * @param xmlStreamReader 651 * @param strict 652 * @throws IOException 653 * @throws XMLStreamException 654 * @return ModelOperation 655 */ 656 private ModelOperation parseModelOperation( XMLStreamReader xmlStreamReader, boolean strict ) 657 throws IOException, XMLStreamException 658 { 659 ModelOperation modelOperation = new ModelOperation(); 660 java.util.Set parsed = new java.util.HashSet(); 661 while ( ( strict ? xmlStreamReader.nextTag() : nextTag( xmlStreamReader ) ) == XMLStreamConstants.START_ELEMENT ) 662 { 663 if ( checkFieldWithDuplicate( xmlStreamReader, "id", null, parsed ) ) 664 { 665 modelOperation.setId( getTrimmedValue( xmlStreamReader.getElementText() ) ); 666 } 667 else if ( checkFieldWithDuplicate( xmlStreamReader, "name", null, parsed ) ) 668 { 669 modelOperation.setName( getTrimmedValue( xmlStreamReader.getElementText() ) ); 670 } 671 else if ( checkFieldWithDuplicate( xmlStreamReader, "description", null, parsed ) ) 672 { 673 modelOperation.setDescription( getTrimmedValue( xmlStreamReader.getElementText() ) ); 674 } 675 else if ( checkFieldWithDuplicate( xmlStreamReader, "permanent", null, parsed ) ) 676 { 677 modelOperation.setPermanent( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "permanent", xmlStreamReader ) ); 678 } 679 else 680 { 681 checkUnknownElement( xmlStreamReader, strict ); 682 } 683 } 684 return modelOperation; 685 } //-- ModelOperation parseModelOperation( XMLStreamReader, boolean ) 686 687 /** 688 * Method parseModelPermission. 689 * 690 * @param xmlStreamReader 691 * @param strict 692 * @throws IOException 693 * @throws XMLStreamException 694 * @return ModelPermission 695 */ 696 private ModelPermission parseModelPermission( XMLStreamReader xmlStreamReader, boolean strict ) 697 throws IOException, XMLStreamException 698 { 699 ModelPermission modelPermission = new ModelPermission(); 700 java.util.Set parsed = new java.util.HashSet(); 701 while ( ( strict ? xmlStreamReader.nextTag() : nextTag( xmlStreamReader ) ) == XMLStreamConstants.START_ELEMENT ) 702 { 703 if ( checkFieldWithDuplicate( xmlStreamReader, "id", null, parsed ) ) 704 { 705 modelPermission.setId( getTrimmedValue( xmlStreamReader.getElementText() ) ); 706 } 707 else if ( checkFieldWithDuplicate( xmlStreamReader, "name", null, parsed ) ) 708 { 709 modelPermission.setName( getTrimmedValue( xmlStreamReader.getElementText() ) ); 710 } 711 else if ( checkFieldWithDuplicate( xmlStreamReader, "description", null, parsed ) ) 712 { 713 modelPermission.setDescription( getTrimmedValue( xmlStreamReader.getElementText() ) ); 714 } 715 else if ( checkFieldWithDuplicate( xmlStreamReader, "permanent", null, parsed ) ) 716 { 717 modelPermission.setPermanent( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "permanent", xmlStreamReader ) ); 718 } 719 else if ( checkFieldWithDuplicate( xmlStreamReader, "operation", null, parsed ) ) 720 { 721 modelPermission.setOperation( getTrimmedValue( xmlStreamReader.getElementText() ) ); 722 } 723 else if ( checkFieldWithDuplicate( xmlStreamReader, "resource", null, parsed ) ) 724 { 725 modelPermission.setResource( getTrimmedValue( xmlStreamReader.getElementText() ) ); 726 } 727 else 728 { 729 checkUnknownElement( xmlStreamReader, strict ); 730 } 731 } 732 return modelPermission; 733 } //-- ModelPermission parseModelPermission( XMLStreamReader, boolean ) 734 735 /** 736 * Method parseModelResource. 737 * 738 * @param xmlStreamReader 739 * @param strict 740 * @throws IOException 741 * @throws XMLStreamException 742 * @return ModelResource 743 */ 744 private ModelResource parseModelResource( XMLStreamReader xmlStreamReader, boolean strict ) 745 throws IOException, XMLStreamException 746 { 747 ModelResource modelResource = new ModelResource(); 748 java.util.Set parsed = new java.util.HashSet(); 749 while ( ( strict ? xmlStreamReader.nextTag() : nextTag( xmlStreamReader ) ) == XMLStreamConstants.START_ELEMENT ) 750 { 751 if ( checkFieldWithDuplicate( xmlStreamReader, "id", null, parsed ) ) 752 { 753 modelResource.setId( getTrimmedValue( xmlStreamReader.getElementText() ) ); 754 } 755 else if ( checkFieldWithDuplicate( xmlStreamReader, "name", null, parsed ) ) 756 { 757 modelResource.setName( getTrimmedValue( xmlStreamReader.getElementText() ) ); 758 } 759 else if ( checkFieldWithDuplicate( xmlStreamReader, "permanent", null, parsed ) ) 760 { 761 modelResource.setPermanent( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "permanent", xmlStreamReader ) ); 762 } 763 else if ( checkFieldWithDuplicate( xmlStreamReader, "pattern", null, parsed ) ) 764 { 765 modelResource.setPattern( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "pattern", xmlStreamReader ) ); 766 } 767 else if ( checkFieldWithDuplicate( xmlStreamReader, "description", null, parsed ) ) 768 { 769 modelResource.setDescription( getTrimmedValue( xmlStreamReader.getElementText() ) ); 770 } 771 else 772 { 773 checkUnknownElement( xmlStreamReader, strict ); 774 } 775 } 776 return modelResource; 777 } //-- ModelResource parseModelResource( XMLStreamReader, boolean ) 778 779 /** 780 * Method parseModelRole. 781 * 782 * @param xmlStreamReader 783 * @param strict 784 * @throws IOException 785 * @throws XMLStreamException 786 * @return ModelRole 787 */ 788 private ModelRole parseModelRole( XMLStreamReader xmlStreamReader, boolean strict ) 789 throws IOException, XMLStreamException 790 { 791 ModelRole modelRole = new ModelRole(); 792 java.util.Set parsed = new java.util.HashSet(); 793 while ( ( strict ? xmlStreamReader.nextTag() : nextTag( xmlStreamReader ) ) == XMLStreamConstants.START_ELEMENT ) 794 { 795 if ( checkFieldWithDuplicate( xmlStreamReader, "id", null, parsed ) ) 796 { 797 modelRole.setId( getTrimmedValue( xmlStreamReader.getElementText() ) ); 798 } 799 else if ( checkFieldWithDuplicate( xmlStreamReader, "name", null, parsed ) ) 800 { 801 modelRole.setName( getTrimmedValue( xmlStreamReader.getElementText() ) ); 802 } 803 else if ( checkFieldWithDuplicate( xmlStreamReader, "description", null, parsed ) ) 804 { 805 modelRole.setDescription( getTrimmedValue( xmlStreamReader.getElementText() ) ); 806 } 807 else if ( checkFieldWithDuplicate( xmlStreamReader, "assignable", null, parsed ) ) 808 { 809 modelRole.setAssignable( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "assignable", xmlStreamReader ) ); 810 } 811 else if ( checkFieldWithDuplicate( xmlStreamReader, "permanent", null, parsed ) ) 812 { 813 modelRole.setPermanent( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "permanent", xmlStreamReader ) ); 814 } 815 else if ( checkFieldWithDuplicate( xmlStreamReader, "permissions", null, parsed ) ) 816 { 817 java.util.List permissions = new java.util.ArrayList/*<ModelPermission>*/(); 818 modelRole.setPermissions( permissions ); 819 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 820 { 821 if ( "permission".equals( xmlStreamReader.getLocalName() ) ) 822 { 823 modelRole.addPermission( parseModelPermission( xmlStreamReader, strict ) ); 824 } 825 else 826 { 827 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 828 } 829 } 830 } 831 else if ( checkFieldWithDuplicate( xmlStreamReader, "parentRoles", null, parsed ) ) 832 { 833 java.util.List parentRoles = new java.util.ArrayList/*<String>*/(); 834 modelRole.setParentRoles( parentRoles ); 835 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 836 { 837 if ( "parentRole".equals( xmlStreamReader.getLocalName() ) ) 838 { 839 parentRoles.add( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "new java.util.ArrayList/*<String>*/()" ) ) ); 840 } 841 else 842 { 843 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 844 } 845 } 846 } 847 else if ( checkFieldWithDuplicate( xmlStreamReader, "childRoles", null, parsed ) ) 848 { 849 java.util.List childRoles = new java.util.ArrayList/*<String>*/(); 850 modelRole.setChildRoles( childRoles ); 851 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 852 { 853 if ( "childRole".equals( xmlStreamReader.getLocalName() ) ) 854 { 855 childRoles.add( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "new java.util.ArrayList/*<String>*/()" ) ) ); 856 } 857 else 858 { 859 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 860 } 861 } 862 } 863 else 864 { 865 checkUnknownElement( xmlStreamReader, strict ); 866 } 867 } 868 return modelRole; 869 } //-- ModelRole parseModelRole( XMLStreamReader, boolean ) 870 871 /** 872 * Method parseModelTemplate. 873 * 874 * @param xmlStreamReader 875 * @param strict 876 * @throws IOException 877 * @throws XMLStreamException 878 * @return ModelTemplate 879 */ 880 private ModelTemplate parseModelTemplate( XMLStreamReader xmlStreamReader, boolean strict ) 881 throws IOException, XMLStreamException 882 { 883 ModelTemplate modelTemplate = new ModelTemplate(); 884 java.util.Set parsed = new java.util.HashSet(); 885 while ( ( strict ? xmlStreamReader.nextTag() : nextTag( xmlStreamReader ) ) == XMLStreamConstants.START_ELEMENT ) 886 { 887 if ( checkFieldWithDuplicate( xmlStreamReader, "id", null, parsed ) ) 888 { 889 modelTemplate.setId( getTrimmedValue( xmlStreamReader.getElementText() ) ); 890 } 891 else if ( checkFieldWithDuplicate( xmlStreamReader, "namePrefix", null, parsed ) ) 892 { 893 modelTemplate.setNamePrefix( getTrimmedValue( xmlStreamReader.getElementText() ) ); 894 } 895 else if ( checkFieldWithDuplicate( xmlStreamReader, "delimiter", null, parsed ) ) 896 { 897 modelTemplate.setDelimiter( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), " - " ) ) ); 898 } 899 else if ( checkFieldWithDuplicate( xmlStreamReader, "description", null, parsed ) ) 900 { 901 modelTemplate.setDescription( getTrimmedValue( xmlStreamReader.getElementText() ) ); 902 } 903 else if ( checkFieldWithDuplicate( xmlStreamReader, "assignable", null, parsed ) ) 904 { 905 modelTemplate.setAssignable( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "assignable", xmlStreamReader ) ); 906 } 907 else if ( checkFieldWithDuplicate( xmlStreamReader, "permanent", null, parsed ) ) 908 { 909 modelTemplate.setPermanent( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "permanent", xmlStreamReader ) ); 910 } 911 else if ( checkFieldWithDuplicate( xmlStreamReader, "permanentResource", null, parsed ) ) 912 { 913 modelTemplate.setPermanentResource( getBooleanValue( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "false" ) ), "permanentResource", xmlStreamReader ) ); 914 } 915 else if ( checkFieldWithDuplicate( xmlStreamReader, "permissions", null, parsed ) ) 916 { 917 java.util.List permissions = new java.util.ArrayList/*<ModelPermission>*/(); 918 modelTemplate.setPermissions( permissions ); 919 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 920 { 921 if ( "permission".equals( xmlStreamReader.getLocalName() ) ) 922 { 923 modelTemplate.addPermission( parseModelPermission( xmlStreamReader, strict ) ); 924 } 925 else 926 { 927 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 928 } 929 } 930 } 931 else if ( checkFieldWithDuplicate( xmlStreamReader, "parentRoles", null, parsed ) ) 932 { 933 java.util.List parentRoles = new java.util.ArrayList/*<String>*/(); 934 modelTemplate.setParentRoles( parentRoles ); 935 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 936 { 937 if ( "parentRole".equals( xmlStreamReader.getLocalName() ) ) 938 { 939 parentRoles.add( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "new java.util.ArrayList/*<String>*/()" ) ) ); 940 } 941 else 942 { 943 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 944 } 945 } 946 } 947 else if ( checkFieldWithDuplicate( xmlStreamReader, "childRoles", null, parsed ) ) 948 { 949 java.util.List childRoles = new java.util.ArrayList/*<String>*/(); 950 modelTemplate.setChildRoles( childRoles ); 951 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 952 { 953 if ( "childRole".equals( xmlStreamReader.getLocalName() ) ) 954 { 955 childRoles.add( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "new java.util.ArrayList/*<String>*/()" ) ) ); 956 } 957 else 958 { 959 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 960 } 961 } 962 } 963 else if ( checkFieldWithDuplicate( xmlStreamReader, "parentTemplates", null, parsed ) ) 964 { 965 java.util.List parentTemplates = new java.util.ArrayList/*<String>*/(); 966 modelTemplate.setParentTemplates( parentTemplates ); 967 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 968 { 969 if ( "parentTemplate".equals( xmlStreamReader.getLocalName() ) ) 970 { 971 parentTemplates.add( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "new java.util.ArrayList/*<String>*/()" ) ) ); 972 } 973 else 974 { 975 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 976 } 977 } 978 } 979 else if ( checkFieldWithDuplicate( xmlStreamReader, "childTemplates", null, parsed ) ) 980 { 981 java.util.List childTemplates = new java.util.ArrayList/*<String>*/(); 982 modelTemplate.setChildTemplates( childTemplates ); 983 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 984 { 985 if ( "childTemplate".equals( xmlStreamReader.getLocalName() ) ) 986 { 987 childTemplates.add( getTrimmedValue( getDefaultValue( xmlStreamReader.getElementText(), "new java.util.ArrayList/*<String>*/()" ) ) ); 988 } 989 else 990 { 991 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 992 } 993 } 994 } 995 else 996 { 997 checkUnknownElement( xmlStreamReader, strict ); 998 } 999 } 1000 return modelTemplate; 1001 } //-- ModelTemplate parseModelTemplate( XMLStreamReader, boolean ) 1002 1003 /** 1004 * Method parseRedbackRoleModel. 1005 * 1006 * @param xmlStreamReader 1007 * @param strict 1008 * @throws IOException 1009 * @throws XMLStreamException 1010 * @return RedbackRoleModel 1011 */ 1012 private RedbackRoleModel parseRedbackRoleModel( XMLStreamReader xmlStreamReader, boolean strict ) 1013 throws IOException, XMLStreamException 1014 { 1015 RedbackRoleModel redbackRoleModel = new RedbackRoleModel(); 1016 java.util.Set parsed = new java.util.HashSet(); 1017 while ( ( strict ? xmlStreamReader.nextTag() : nextTag( xmlStreamReader ) ) == XMLStreamConstants.START_ELEMENT ) 1018 { 1019 if ( checkFieldWithDuplicate( xmlStreamReader, "modelVersion", null, parsed ) ) 1020 { 1021 redbackRoleModel.setModelVersion( getTrimmedValue( xmlStreamReader.getElementText() ) ); 1022 } 1023 else if ( checkFieldWithDuplicate( xmlStreamReader, "applications", null, parsed ) ) 1024 { 1025 java.util.List applications = new java.util.ArrayList/*<ModelApplication>*/(); 1026 redbackRoleModel.setApplications( applications ); 1027 while ( xmlStreamReader.nextTag() == XMLStreamConstants.START_ELEMENT ) 1028 { 1029 if ( "application".equals( xmlStreamReader.getLocalName() ) ) 1030 { 1031 redbackRoleModel.addApplication( parseModelApplication( xmlStreamReader, strict ) ); 1032 } 1033 else 1034 { 1035 throw new XMLStreamException( "Unrecognised tag: '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation() ); 1036 } 1037 } 1038 } 1039 else 1040 { 1041 checkUnknownElement( xmlStreamReader, strict ); 1042 } 1043 } 1044 return redbackRoleModel; 1045 } //-- RedbackRoleModel parseRedbackRoleModel( XMLStreamReader, boolean ) 1046 1047 /** 1048 * Method read. 1049 * 1050 * @param xmlStreamReader 1051 * @param strict 1052 * @throws IOException 1053 * @throws XMLStreamException 1054 * @return RedbackRoleModel 1055 */ 1056 private RedbackRoleModel read( XMLStreamReader xmlStreamReader, boolean strict ) 1057 throws IOException, XMLStreamException 1058 { 1059 int eventType = xmlStreamReader.getEventType(); 1060 String encoding = null; 1061 while ( eventType != XMLStreamConstants.END_DOCUMENT ) 1062 { 1063 if ( eventType == XMLStreamConstants.START_DOCUMENT ) 1064 { 1065 encoding = xmlStreamReader.getCharacterEncodingScheme(); 1066 } 1067 if ( eventType == XMLStreamConstants.START_ELEMENT ) 1068 { 1069 if ( strict && ! "redback-role-model".equals( xmlStreamReader.getLocalName() ) ) 1070 { 1071 throw new XMLStreamException( "Expected root element 'redback-role-model' but found '" + xmlStreamReader.getLocalName() + "'", xmlStreamReader.getLocation(), null ); 1072 } 1073 RedbackRoleModel redbackRoleModel = parseRedbackRoleModel( xmlStreamReader, strict ); 1074 redbackRoleModel.setModelEncoding( encoding ); 1075 resolveReferences( redbackRoleModel ); 1076 return redbackRoleModel; 1077 } 1078 eventType = xmlStreamReader.next(); 1079 } 1080 throw new XMLStreamException( "Expected root element 'redback-role-model' but found no element at all: invalid XML document", xmlStreamReader.getLocation(), null ); 1081 } //-- RedbackRoleModel read( XMLStreamReader, boolean ) 1082 1083 /** 1084 * Method resolveReferences. 1085 * 1086 * @param value 1087 */ 1088 private void resolveReferences( RedbackRoleModel value ) 1089 { 1090 java.util.Map refs; 1091 } //-- void resolveReferences( RedbackRoleModel ) 1092 1093}