Coverage Report - org.apache.maven.settings.io.xpp3.SettingsXpp3Reader
 
Classes in this File Line Coverage Branch Coverage Complexity
SettingsXpp3Reader
0%
0/805
0%
0/444
11.03
 
 1  
 /*
 2  
  * $Id$
 3  
  */
 4  
 
 5  
 package org.apache.maven.settings.io.xpp3;
 6  
 
 7  
   //---------------------------------/
 8  
  //- Imported classes and packages -/
 9  
 //---------------------------------/
 10  
 
 11  
 import java.io.IOException;
 12  
 import java.io.InputStream;
 13  
 import java.io.Reader;
 14  
 import java.text.DateFormat;
 15  
 import java.util.Locale;
 16  
 import org.apache.maven.settings.Activation;
 17  
 import org.apache.maven.settings.ActivationFile;
 18  
 import org.apache.maven.settings.ActivationOS;
 19  
 import org.apache.maven.settings.ActivationProperty;
 20  
 import org.apache.maven.settings.IdentifiableBase;
 21  
 import org.apache.maven.settings.Mirror;
 22  
 import org.apache.maven.settings.Profile;
 23  
 import org.apache.maven.settings.Proxy;
 24  
 import org.apache.maven.settings.Repository;
 25  
 import org.apache.maven.settings.RepositoryBase;
 26  
 import org.apache.maven.settings.RepositoryPolicy;
 27  
 import org.apache.maven.settings.Server;
 28  
 import org.apache.maven.settings.Settings;
 29  
 import org.apache.maven.settings.TrackableBase;
 30  
 import org.codehaus.plexus.util.ReaderFactory;
 31  
 import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
 32  
 import org.codehaus.plexus.util.xml.pull.MXParser;
 33  
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 34  
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 35  
 
 36  
 /**
 37  
  * Class SettingsXpp3Reader.
 38  
  * 
 39  
  * @version $Revision$ $Date$
 40  
  */
 41  0
 public class SettingsXpp3Reader {
 42  
 
 43  
 
 44  
       //--------------------------/
 45  
      //- Class/Member Variables -/
 46  
     //--------------------------/
 47  
 
 48  
     /**
 49  
      * If set the parser will be loaded with all single characters
 50  
      * from the XHTML specification.
 51  
      * The entities used:
 52  
      * <ul>
 53  
      * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent</li>
 54  
      * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent</li>
 55  
      * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent</li>
 56  
      * </ul>
 57  
      */
 58  0
     private boolean addDefaultEntities = true;
 59  
 
 60  
 
 61  
       //-----------/
 62  
      //- Methods -/
 63  
     //-----------/
 64  
 
 65  
     /**
 66  
      * Returns the state of the "add default entities" flag.
 67  
      * 
 68  
      * @return boolean
 69  
      */
 70  
     public boolean getAddDefaultEntities()
 71  
     {
 72  0
         return addDefaultEntities;
 73  
     } //-- boolean getAddDefaultEntities() 
 74  
 
 75  
     /**
 76  
      * Method getBooleanValue.
 77  
      * 
 78  
      * @param s
 79  
      * @param parser
 80  
      * @param attribute
 81  
      * @throws XmlPullParserException
 82  
      * @return boolean
 83  
      */
 84  
     public boolean getBooleanValue( String s, String attribute, XmlPullParser parser )
 85  
         throws XmlPullParserException
 86  
     {
 87  0
         return getBooleanValue( s, attribute, parser, null );
 88  
     } //-- boolean getBooleanValue( String, String, XmlPullParser ) 
 89  
 
 90  
     /**
 91  
      * Method getBooleanValue.
 92  
      * 
 93  
      * @param s
 94  
      * @param defaultValue
 95  
      * @param parser
 96  
      * @param attribute
 97  
      * @throws XmlPullParserException
 98  
      * @return boolean
 99  
      */
 100  
     public boolean getBooleanValue( String s, String attribute, XmlPullParser parser, String defaultValue )
 101  
         throws XmlPullParserException
 102  
     {
 103  0
         if ( s != null && s.length() != 0 )
 104  
         {
 105  0
             return Boolean.valueOf( s ).booleanValue();
 106  
         }
 107  0
         if ( defaultValue != null )
 108  
         {
 109  0
             return Boolean.valueOf( defaultValue ).booleanValue();
 110  
         }
 111  0
         return false;
 112  
     } //-- boolean getBooleanValue( String, String, XmlPullParser, String ) 
 113  
 
 114  
     /**
 115  
      * Method getByteValue.
 116  
      * 
 117  
      * @param s
 118  
      * @param strict
 119  
      * @param parser
 120  
      * @param attribute
 121  
      * @throws XmlPullParserException
 122  
      * @return byte
 123  
      */
 124  
     public byte getByteValue( String s, String attribute, XmlPullParser parser, boolean strict )
 125  
         throws XmlPullParserException
 126  
     {
 127  0
         if ( s != null )
 128  
         {
 129  
             try
 130  
             {
 131  0
                 return Byte.valueOf( s ).byteValue();
 132  
             }
 133  0
             catch ( NumberFormatException e )
 134  
             {
 135  0
                 if ( strict )
 136  
                 {
 137  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a byte", parser, null );
 138  
                 }
 139  
             }
 140  
         }
 141  0
         return 0;
 142  
     } //-- byte getByteValue( String, String, XmlPullParser, boolean ) 
 143  
 
 144  
     /**
 145  
      * Method getCharacterValue.
 146  
      * 
 147  
      * @param s
 148  
      * @param parser
 149  
      * @param attribute
 150  
      * @throws XmlPullParserException
 151  
      * @return char
 152  
      */
 153  
     public char getCharacterValue( String s, String attribute, XmlPullParser parser )
 154  
         throws XmlPullParserException
 155  
     {
 156  0
         if ( s != null )
 157  
         {
 158  0
             return s.charAt( 0 );
 159  
         }
 160  0
         return 0;
 161  
     } //-- char getCharacterValue( String, String, XmlPullParser ) 
 162  
 
 163  
     /**
 164  
      * Method getDateValue.
 165  
      * 
 166  
      * @param s
 167  
      * @param parser
 168  
      * @param attribute
 169  
      * @throws XmlPullParserException
 170  
      * @return java.util.Date
 171  
      */
 172  
     public java.util.Date getDateValue( String s, String attribute, XmlPullParser parser )
 173  
         throws XmlPullParserException
 174  
     {
 175  0
         return getDateValue( s, attribute, null, parser );
 176  
     } //-- java.util.Date getDateValue( String, String, XmlPullParser ) 
 177  
 
 178  
     /**
 179  
      * Method getDateValue.
 180  
      * 
 181  
      * @param s
 182  
      * @param parser
 183  
      * @param dateFormat
 184  
      * @param attribute
 185  
      * @throws XmlPullParserException
 186  
      * @return java.util.Date
 187  
      */
 188  
     public java.util.Date getDateValue( String s, String attribute, String dateFormat, XmlPullParser parser )
 189  
         throws XmlPullParserException
 190  
     {
 191  0
         if ( s != null )
 192  
         {
 193  0
             if ( dateFormat == null )
 194  
             {
 195  0
                 return new java.util.Date( Long.valueOf( s ).longValue() );
 196  
             }
 197  
             else
 198  
             {
 199  0
                 DateFormat dateParser = new java.text.SimpleDateFormat( dateFormat, Locale.US );
 200  
                 try
 201  
                 {
 202  0
                     return dateParser.parse( s );
 203  
                 }
 204  0
                 catch ( java.text.ParseException e )
 205  
                 {
 206  0
                     throw new XmlPullParserException( e.getMessage() );
 207  
                 }
 208  
             }
 209  
         }
 210  0
         return null;
 211  
     } //-- java.util.Date getDateValue( String, String, String, XmlPullParser ) 
 212  
 
 213  
     /**
 214  
      * Method getDoubleValue.
 215  
      * 
 216  
      * @param s
 217  
      * @param strict
 218  
      * @param parser
 219  
      * @param attribute
 220  
      * @throws XmlPullParserException
 221  
      * @return double
 222  
      */
 223  
     public double getDoubleValue( String s, String attribute, XmlPullParser parser, boolean strict )
 224  
         throws XmlPullParserException
 225  
     {
 226  0
         if ( s != null )
 227  
         {
 228  
             try
 229  
             {
 230  0
                 return Double.valueOf( s ).doubleValue();
 231  
             }
 232  0
             catch ( NumberFormatException e )
 233  
             {
 234  0
                 if ( strict )
 235  
                 {
 236  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, null );
 237  
                 }
 238  
             }
 239  
         }
 240  0
         return 0;
 241  
     } //-- double getDoubleValue( String, String, XmlPullParser, boolean ) 
 242  
 
 243  
     /**
 244  
      * Method getFloatValue.
 245  
      * 
 246  
      * @param s
 247  
      * @param strict
 248  
      * @param parser
 249  
      * @param attribute
 250  
      * @throws XmlPullParserException
 251  
      * @return float
 252  
      */
 253  
     public float getFloatValue( String s, String attribute, XmlPullParser parser, boolean strict )
 254  
         throws XmlPullParserException
 255  
     {
 256  0
         if ( s != null )
 257  
         {
 258  
             try
 259  
             {
 260  0
                 return Float.valueOf( s ).floatValue();
 261  
             }
 262  0
             catch ( NumberFormatException e )
 263  
             {
 264  0
                 if ( strict )
 265  
                 {
 266  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, null );
 267  
                 }
 268  
             }
 269  
         }
 270  0
         return 0;
 271  
     } //-- float getFloatValue( String, String, XmlPullParser, boolean ) 
 272  
 
 273  
     /**
 274  
      * Method getIntegerValue.
 275  
      * 
 276  
      * @param s
 277  
      * @param strict
 278  
      * @param parser
 279  
      * @param attribute
 280  
      * @throws XmlPullParserException
 281  
      * @return int
 282  
      */
 283  
     public int getIntegerValue( String s, String attribute, XmlPullParser parser, boolean strict )
 284  
         throws XmlPullParserException
 285  
     {
 286  0
         if ( s != null )
 287  
         {
 288  
             try
 289  
             {
 290  0
                 return Integer.valueOf( s ).intValue();
 291  
             }
 292  0
             catch ( NumberFormatException e )
 293  
             {
 294  0
                 if ( strict )
 295  
                 {
 296  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be an integer", parser, null );
 297  
                 }
 298  
             }
 299  
         }
 300  0
         return 0;
 301  
     } //-- int getIntegerValue( String, String, XmlPullParser, boolean ) 
 302  
 
 303  
     /**
 304  
      * Method getLongValue.
 305  
      * 
 306  
      * @param s
 307  
      * @param strict
 308  
      * @param parser
 309  
      * @param attribute
 310  
      * @throws XmlPullParserException
 311  
      * @return long
 312  
      */
 313  
     public long getLongValue( String s, String attribute, XmlPullParser parser, boolean strict )
 314  
         throws XmlPullParserException
 315  
     {
 316  0
         if ( s != null )
 317  
         {
 318  
             try
 319  
             {
 320  0
                 return Long.valueOf( s ).longValue();
 321  
             }
 322  0
             catch ( NumberFormatException e )
 323  
             {
 324  0
                 if ( strict )
 325  
                 {
 326  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a long integer", parser, null );
 327  
                 }
 328  
             }
 329  
         }
 330  0
         return 0;
 331  
     } //-- long getLongValue( String, String, XmlPullParser, boolean ) 
 332  
 
 333  
     /**
 334  
      * Method getRequiredAttributeValue.
 335  
      * 
 336  
      * @param s
 337  
      * @param strict
 338  
      * @param parser
 339  
      * @param attribute
 340  
      * @throws XmlPullParserException
 341  
      * @return String
 342  
      */
 343  
     public String getRequiredAttributeValue( String s, String attribute, XmlPullParser parser, boolean strict )
 344  
         throws XmlPullParserException
 345  
     {
 346  0
         if ( s == null )
 347  
         {
 348  0
             if ( strict )
 349  
             {
 350  0
                 throw new XmlPullParserException( "Missing required value for attribute '" + attribute + "'", parser, null );
 351  
             }
 352  
         }
 353  0
         return s;
 354  
     } //-- String getRequiredAttributeValue( String, String, XmlPullParser, boolean ) 
 355  
 
 356  
     /**
 357  
      * Method getShortValue.
 358  
      * 
 359  
      * @param s
 360  
      * @param strict
 361  
      * @param parser
 362  
      * @param attribute
 363  
      * @throws XmlPullParserException
 364  
      * @return short
 365  
      */
 366  
     public short getShortValue( String s, String attribute, XmlPullParser parser, boolean strict )
 367  
         throws XmlPullParserException
 368  
     {
 369  0
         if ( s != null )
 370  
         {
 371  
             try
 372  
             {
 373  0
                 return Short.valueOf( s ).shortValue();
 374  
             }
 375  0
             catch ( NumberFormatException e )
 376  
             {
 377  0
                 if ( strict )
 378  
                 {
 379  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a short integer", parser, null );
 380  
                 }
 381  
             }
 382  
         }
 383  0
         return 0;
 384  
     } //-- short getShortValue( String, String, XmlPullParser, boolean ) 
 385  
 
 386  
     /**
 387  
      * Method getTrimmedValue.
 388  
      * 
 389  
      * @param s
 390  
      * @return String
 391  
      */
 392  
     public String getTrimmedValue( String s )
 393  
     {
 394  0
         if ( s != null )
 395  
         {
 396  0
             s = s.trim();
 397  
         }
 398  0
         return s;
 399  
     } //-- String getTrimmedValue( String ) 
 400  
 
 401  
     /**
 402  
      * Method parseActivation.
 403  
      * 
 404  
      * @param tagName
 405  
      * @param strict
 406  
      * @param parser
 407  
      * @throws IOException
 408  
      * @throws XmlPullParserException
 409  
      * @return Activation
 410  
      */
 411  
     private Activation parseActivation( String tagName, XmlPullParser parser, boolean strict )
 412  
         throws IOException, XmlPullParserException
 413  
     {
 414  0
         Activation activation = new Activation();
 415  0
         java.util.Set parsed = new java.util.HashSet();
 416  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 417  
         {
 418  0
             if ( parser.getName().equals( "activeByDefault" )  )
 419  
             {
 420  0
                 if ( parsed.contains( "activeByDefault" ) )
 421  
                 {
 422  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 423  
                 }
 424  0
                 parsed.add( "activeByDefault" );
 425  0
                 activation.setActiveByDefault( getBooleanValue( getTrimmedValue( parser.nextText()), "activeByDefault", parser, "false" ) );
 426  
             }
 427  0
             else if ( parser.getName().equals( "jdk" )  )
 428  
             {
 429  0
                 if ( parsed.contains( "jdk" ) )
 430  
                 {
 431  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 432  
                 }
 433  0
                 parsed.add( "jdk" );
 434  0
                 activation.setJdk( getTrimmedValue( parser.nextText()) );
 435  
             }
 436  0
             else if ( parser.getName().equals( "os" )  )
 437  
             {
 438  0
                 if ( parsed.contains( "os" ) )
 439  
                 {
 440  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 441  
                 }
 442  0
                 parsed.add( "os" );
 443  0
                 activation.setOs( parseActivationOS( "os", parser, strict ) );
 444  
             }
 445  0
             else if ( parser.getName().equals( "property" )  )
 446  
             {
 447  0
                 if ( parsed.contains( "property" ) )
 448  
                 {
 449  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 450  
                 }
 451  0
                 parsed.add( "property" );
 452  0
                 activation.setProperty( parseActivationProperty( "property", parser, strict ) );
 453  
             }
 454  0
             else if ( parser.getName().equals( "file" )  )
 455  
             {
 456  0
                 if ( parsed.contains( "file" ) )
 457  
                 {
 458  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 459  
                 }
 460  0
                 parsed.add( "file" );
 461  0
                 activation.setFile( parseActivationFile( "file", parser, strict ) );
 462  
             }
 463  
             else
 464  
             {
 465  0
                 if ( strict )
 466  
                 {
 467  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 468  
                 }
 469  
                 else
 470  
                 {
 471  
                     // swallow up to end tag since this is not valid
 472  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 473  
                 }
 474  
             }
 475  
         }
 476  0
         return activation;
 477  
     } //-- Activation parseActivation( String, XmlPullParser, boolean ) 
 478  
 
 479  
     /**
 480  
      * Method parseActivationFile.
 481  
      * 
 482  
      * @param tagName
 483  
      * @param strict
 484  
      * @param parser
 485  
      * @throws IOException
 486  
      * @throws XmlPullParserException
 487  
      * @return ActivationFile
 488  
      */
 489  
     private ActivationFile parseActivationFile( String tagName, XmlPullParser parser, boolean strict )
 490  
         throws IOException, XmlPullParserException
 491  
     {
 492  0
         ActivationFile activationFile = new ActivationFile();
 493  0
         java.util.Set parsed = new java.util.HashSet();
 494  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 495  
         {
 496  0
             if ( parser.getName().equals( "missing" )  )
 497  
             {
 498  0
                 if ( parsed.contains( "missing" ) )
 499  
                 {
 500  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 501  
                 }
 502  0
                 parsed.add( "missing" );
 503  0
                 activationFile.setMissing( getTrimmedValue( parser.nextText()) );
 504  
             }
 505  0
             else if ( parser.getName().equals( "exists" )  )
 506  
             {
 507  0
                 if ( parsed.contains( "exists" ) )
 508  
                 {
 509  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 510  
                 }
 511  0
                 parsed.add( "exists" );
 512  0
                 activationFile.setExists( getTrimmedValue( parser.nextText()) );
 513  
             }
 514  
             else
 515  
             {
 516  0
                 if ( strict )
 517  
                 {
 518  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 519  
                 }
 520  
                 else
 521  
                 {
 522  
                     // swallow up to end tag since this is not valid
 523  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 524  
                 }
 525  
             }
 526  
         }
 527  0
         return activationFile;
 528  
     } //-- ActivationFile parseActivationFile( String, XmlPullParser, boolean ) 
 529  
 
 530  
     /**
 531  
      * Method parseActivationOS.
 532  
      * 
 533  
      * @param tagName
 534  
      * @param strict
 535  
      * @param parser
 536  
      * @throws IOException
 537  
      * @throws XmlPullParserException
 538  
      * @return ActivationOS
 539  
      */
 540  
     private ActivationOS parseActivationOS( String tagName, XmlPullParser parser, boolean strict )
 541  
         throws IOException, XmlPullParserException
 542  
     {
 543  0
         ActivationOS activationOS = new ActivationOS();
 544  0
         java.util.Set parsed = new java.util.HashSet();
 545  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 546  
         {
 547  0
             if ( parser.getName().equals( "name" )  )
 548  
             {
 549  0
                 if ( parsed.contains( "name" ) )
 550  
                 {
 551  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 552  
                 }
 553  0
                 parsed.add( "name" );
 554  0
                 activationOS.setName( getTrimmedValue( parser.nextText()) );
 555  
             }
 556  0
             else if ( parser.getName().equals( "family" )  )
 557  
             {
 558  0
                 if ( parsed.contains( "family" ) )
 559  
                 {
 560  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 561  
                 }
 562  0
                 parsed.add( "family" );
 563  0
                 activationOS.setFamily( getTrimmedValue( parser.nextText()) );
 564  
             }
 565  0
             else if ( parser.getName().equals( "arch" )  )
 566  
             {
 567  0
                 if ( parsed.contains( "arch" ) )
 568  
                 {
 569  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 570  
                 }
 571  0
                 parsed.add( "arch" );
 572  0
                 activationOS.setArch( getTrimmedValue( parser.nextText()) );
 573  
             }
 574  0
             else if ( parser.getName().equals( "version" )  )
 575  
             {
 576  0
                 if ( parsed.contains( "version" ) )
 577  
                 {
 578  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 579  
                 }
 580  0
                 parsed.add( "version" );
 581  0
                 activationOS.setVersion( getTrimmedValue( parser.nextText()) );
 582  
             }
 583  
             else
 584  
             {
 585  0
                 if ( strict )
 586  
                 {
 587  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 588  
                 }
 589  
                 else
 590  
                 {
 591  
                     // swallow up to end tag since this is not valid
 592  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 593  
                 }
 594  
             }
 595  
         }
 596  0
         return activationOS;
 597  
     } //-- ActivationOS parseActivationOS( String, XmlPullParser, boolean ) 
 598  
 
 599  
     /**
 600  
      * Method parseActivationProperty.
 601  
      * 
 602  
      * @param tagName
 603  
      * @param strict
 604  
      * @param parser
 605  
      * @throws IOException
 606  
      * @throws XmlPullParserException
 607  
      * @return ActivationProperty
 608  
      */
 609  
     private ActivationProperty parseActivationProperty( String tagName, XmlPullParser parser, boolean strict )
 610  
         throws IOException, XmlPullParserException
 611  
     {
 612  0
         ActivationProperty activationProperty = new ActivationProperty();
 613  0
         java.util.Set parsed = new java.util.HashSet();
 614  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 615  
         {
 616  0
             if ( parser.getName().equals( "name" )  )
 617  
             {
 618  0
                 if ( parsed.contains( "name" ) )
 619  
                 {
 620  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 621  
                 }
 622  0
                 parsed.add( "name" );
 623  0
                 activationProperty.setName( getTrimmedValue( parser.nextText()) );
 624  
             }
 625  0
             else if ( parser.getName().equals( "value" )  )
 626  
             {
 627  0
                 if ( parsed.contains( "value" ) )
 628  
                 {
 629  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 630  
                 }
 631  0
                 parsed.add( "value" );
 632  0
                 activationProperty.setValue( getTrimmedValue( parser.nextText()) );
 633  
             }
 634  
             else
 635  
             {
 636  0
                 if ( strict )
 637  
                 {
 638  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 639  
                 }
 640  
                 else
 641  
                 {
 642  
                     // swallow up to end tag since this is not valid
 643  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 644  
                 }
 645  
             }
 646  
         }
 647  0
         return activationProperty;
 648  
     } //-- ActivationProperty parseActivationProperty( String, XmlPullParser, boolean ) 
 649  
 
 650  
     /**
 651  
      * Method parseIdentifiableBase.
 652  
      * 
 653  
      * @param tagName
 654  
      * @param strict
 655  
      * @param parser
 656  
      * @throws IOException
 657  
      * @throws XmlPullParserException
 658  
      * @return IdentifiableBase
 659  
      */
 660  
     private IdentifiableBase parseIdentifiableBase( String tagName, XmlPullParser parser, boolean strict )
 661  
         throws IOException, XmlPullParserException
 662  
     {
 663  0
         IdentifiableBase identifiableBase = new IdentifiableBase();
 664  0
         java.util.Set parsed = new java.util.HashSet();
 665  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 666  
         {
 667  0
             if ( parser.getName().equals( "id" )  )
 668  
             {
 669  0
                 if ( parsed.contains( "id" ) )
 670  
                 {
 671  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 672  
                 }
 673  0
                 parsed.add( "id" );
 674  0
                 identifiableBase.setId( getTrimmedValue( parser.nextText()) );
 675  
             }
 676  
             else
 677  
             {
 678  0
                 if ( strict )
 679  
                 {
 680  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 681  
                 }
 682  
                 else
 683  
                 {
 684  
                     // swallow up to end tag since this is not valid
 685  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 686  
                 }
 687  
             }
 688  
         }
 689  0
         return identifiableBase;
 690  
     } //-- IdentifiableBase parseIdentifiableBase( String, XmlPullParser, boolean ) 
 691  
 
 692  
     /**
 693  
      * Method parseMirror.
 694  
      * 
 695  
      * @param tagName
 696  
      * @param strict
 697  
      * @param parser
 698  
      * @throws IOException
 699  
      * @throws XmlPullParserException
 700  
      * @return Mirror
 701  
      */
 702  
     private Mirror parseMirror( String tagName, XmlPullParser parser, boolean strict )
 703  
         throws IOException, XmlPullParserException
 704  
     {
 705  0
         Mirror mirror = new Mirror();
 706  0
         java.util.Set parsed = new java.util.HashSet();
 707  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 708  
         {
 709  0
             if ( parser.getName().equals( "mirrorOf" )  )
 710  
             {
 711  0
                 if ( parsed.contains( "mirrorOf" ) )
 712  
                 {
 713  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 714  
                 }
 715  0
                 parsed.add( "mirrorOf" );
 716  0
                 mirror.setMirrorOf( getTrimmedValue( parser.nextText()) );
 717  
             }
 718  0
             else if ( parser.getName().equals( "name" )  )
 719  
             {
 720  0
                 if ( parsed.contains( "name" ) )
 721  
                 {
 722  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 723  
                 }
 724  0
                 parsed.add( "name" );
 725  0
                 mirror.setName( getTrimmedValue( parser.nextText()) );
 726  
             }
 727  0
             else if ( parser.getName().equals( "url" )  )
 728  
             {
 729  0
                 if ( parsed.contains( "url" ) )
 730  
                 {
 731  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 732  
                 }
 733  0
                 parsed.add( "url" );
 734  0
                 mirror.setUrl( getTrimmedValue( parser.nextText()) );
 735  
             }
 736  0
             else if ( parser.getName().equals( "id" )  )
 737  
             {
 738  0
                 if ( parsed.contains( "id" ) )
 739  
                 {
 740  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 741  
                 }
 742  0
                 parsed.add( "id" );
 743  0
                 mirror.setId( getTrimmedValue( parser.nextText()) );
 744  
             }
 745  
             else
 746  
             {
 747  0
                 if ( strict )
 748  
                 {
 749  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 750  
                 }
 751  
                 else
 752  
                 {
 753  
                     // swallow up to end tag since this is not valid
 754  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 755  
                 }
 756  
             }
 757  
         }
 758  0
         return mirror;
 759  
     } //-- Mirror parseMirror( String, XmlPullParser, boolean ) 
 760  
 
 761  
     /**
 762  
      * Method parseProfile.
 763  
      * 
 764  
      * @param tagName
 765  
      * @param strict
 766  
      * @param parser
 767  
      * @throws IOException
 768  
      * @throws XmlPullParserException
 769  
      * @return Profile
 770  
      */
 771  
     private Profile parseProfile( String tagName, XmlPullParser parser, boolean strict )
 772  
         throws IOException, XmlPullParserException
 773  
     {
 774  0
         Profile profile = new Profile();
 775  0
         java.util.Set parsed = new java.util.HashSet();
 776  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 777  
         {
 778  0
             if ( parser.getName().equals( "activation" )  )
 779  
             {
 780  0
                 if ( parsed.contains( "activation" ) )
 781  
                 {
 782  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 783  
                 }
 784  0
                 parsed.add( "activation" );
 785  0
                 profile.setActivation( parseActivation( "activation", parser, strict ) );
 786  
             }
 787  0
             else if ( parser.getName().equals( "properties" )  )
 788  
             {
 789  0
                 if ( parsed.contains( "properties" ) )
 790  
                 {
 791  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 792  
                 }
 793  0
                 parsed.add( "properties" );
 794  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 795  
                 {
 796  0
                     String key = parser.getName();
 797  0
                     String value = parser.nextText().trim();
 798  0
                     profile.addProperty( key, value );
 799  0
                 }
 800  
             }
 801  0
             else if ( parser.getName().equals( "repositories" )  )
 802  
             {
 803  0
                 if ( parsed.contains( "repositories" ) )
 804  
                 {
 805  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 806  
                 }
 807  0
                 parsed.add( "repositories" );
 808  0
                 java.util.List repositories = new java.util.ArrayList();
 809  0
                 profile.setRepositories( repositories );
 810  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 811  
                 {
 812  0
                     if ( parser.getName().equals( "repository" ) )
 813  
                     {
 814  0
                         repositories.add( parseRepository( "repository", parser, strict ) );
 815  
                     }
 816  0
                     else if ( strict )
 817  
                     {
 818  0
                         throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 819  
                     }
 820  
                     else
 821  
                     {
 822  
                         // swallow up to end tag since this is not valid
 823  0
                         while ( parser.next() != XmlPullParser.END_TAG ) {}
 824  
                     }
 825  
                 }
 826  0
             }
 827  0
             else if ( parser.getName().equals( "pluginRepositories" )  )
 828  
             {
 829  0
                 if ( parsed.contains( "pluginRepositories" ) )
 830  
                 {
 831  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 832  
                 }
 833  0
                 parsed.add( "pluginRepositories" );
 834  0
                 java.util.List pluginRepositories = new java.util.ArrayList();
 835  0
                 profile.setPluginRepositories( pluginRepositories );
 836  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 837  
                 {
 838  0
                     if ( parser.getName().equals( "pluginRepository" ) )
 839  
                     {
 840  0
                         pluginRepositories.add( parseRepository( "pluginRepository", parser, strict ) );
 841  
                     }
 842  0
                     else if ( strict )
 843  
                     {
 844  0
                         throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 845  
                     }
 846  
                     else
 847  
                     {
 848  
                         // swallow up to end tag since this is not valid
 849  0
                         while ( parser.next() != XmlPullParser.END_TAG ) {}
 850  
                     }
 851  
                 }
 852  0
             }
 853  0
             else if ( parser.getName().equals( "id" )  )
 854  
             {
 855  0
                 if ( parsed.contains( "id" ) )
 856  
                 {
 857  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 858  
                 }
 859  0
                 parsed.add( "id" );
 860  0
                 profile.setId( getTrimmedValue( parser.nextText()) );
 861  
             }
 862  
             else
 863  
             {
 864  0
                 if ( strict )
 865  
                 {
 866  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 867  
                 }
 868  
                 else
 869  
                 {
 870  
                     // swallow up to end tag since this is not valid
 871  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 872  
                 }
 873  
             }
 874  
         }
 875  0
         return profile;
 876  
     } //-- Profile parseProfile( String, XmlPullParser, boolean ) 
 877  
 
 878  
     /**
 879  
      * Method parseProxy.
 880  
      * 
 881  
      * @param tagName
 882  
      * @param strict
 883  
      * @param parser
 884  
      * @throws IOException
 885  
      * @throws XmlPullParserException
 886  
      * @return Proxy
 887  
      */
 888  
     private Proxy parseProxy( String tagName, XmlPullParser parser, boolean strict )
 889  
         throws IOException, XmlPullParserException
 890  
     {
 891  0
         Proxy proxy = new Proxy();
 892  0
         java.util.Set parsed = new java.util.HashSet();
 893  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 894  
         {
 895  0
             if ( parser.getName().equals( "active" )  )
 896  
             {
 897  0
                 if ( parsed.contains( "active" ) )
 898  
                 {
 899  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 900  
                 }
 901  0
                 parsed.add( "active" );
 902  0
                 proxy.setActive( getBooleanValue( getTrimmedValue( parser.nextText()), "active", parser, "true" ) );
 903  
             }
 904  0
             else if ( parser.getName().equals( "protocol" )  )
 905  
             {
 906  0
                 if ( parsed.contains( "protocol" ) )
 907  
                 {
 908  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 909  
                 }
 910  0
                 parsed.add( "protocol" );
 911  0
                 proxy.setProtocol( getTrimmedValue( parser.nextText()) );
 912  
             }
 913  0
             else if ( parser.getName().equals( "username" )  )
 914  
             {
 915  0
                 if ( parsed.contains( "username" ) )
 916  
                 {
 917  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 918  
                 }
 919  0
                 parsed.add( "username" );
 920  0
                 proxy.setUsername( getTrimmedValue( parser.nextText()) );
 921  
             }
 922  0
             else if ( parser.getName().equals( "password" )  )
 923  
             {
 924  0
                 if ( parsed.contains( "password" ) )
 925  
                 {
 926  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 927  
                 }
 928  0
                 parsed.add( "password" );
 929  0
                 proxy.setPassword( getTrimmedValue( parser.nextText()) );
 930  
             }
 931  0
             else if ( parser.getName().equals( "port" )  )
 932  
             {
 933  0
                 if ( parsed.contains( "port" ) )
 934  
                 {
 935  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 936  
                 }
 937  0
                 parsed.add( "port" );
 938  0
                 proxy.setPort( getIntegerValue( getTrimmedValue( parser.nextText()), "port", parser, strict ) );
 939  
             }
 940  0
             else if ( parser.getName().equals( "host" )  )
 941  
             {
 942  0
                 if ( parsed.contains( "host" ) )
 943  
                 {
 944  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 945  
                 }
 946  0
                 parsed.add( "host" );
 947  0
                 proxy.setHost( getTrimmedValue( parser.nextText()) );
 948  
             }
 949  0
             else if ( parser.getName().equals( "nonProxyHosts" )  )
 950  
             {
 951  0
                 if ( parsed.contains( "nonProxyHosts" ) )
 952  
                 {
 953  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 954  
                 }
 955  0
                 parsed.add( "nonProxyHosts" );
 956  0
                 proxy.setNonProxyHosts( getTrimmedValue( parser.nextText()) );
 957  
             }
 958  0
             else if ( parser.getName().equals( "id" )  )
 959  
             {
 960  0
                 if ( parsed.contains( "id" ) )
 961  
                 {
 962  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 963  
                 }
 964  0
                 parsed.add( "id" );
 965  0
                 proxy.setId( getTrimmedValue( parser.nextText()) );
 966  
             }
 967  
             else
 968  
             {
 969  0
                 if ( strict )
 970  
                 {
 971  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 972  
                 }
 973  
                 else
 974  
                 {
 975  
                     // swallow up to end tag since this is not valid
 976  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 977  
                 }
 978  
             }
 979  
         }
 980  0
         return proxy;
 981  
     } //-- Proxy parseProxy( String, XmlPullParser, boolean ) 
 982  
 
 983  
     /**
 984  
      * Method parseRepository.
 985  
      * 
 986  
      * @param tagName
 987  
      * @param strict
 988  
      * @param parser
 989  
      * @throws IOException
 990  
      * @throws XmlPullParserException
 991  
      * @return Repository
 992  
      */
 993  
     private Repository parseRepository( String tagName, XmlPullParser parser, boolean strict )
 994  
         throws IOException, XmlPullParserException
 995  
     {
 996  0
         Repository repository = new Repository();
 997  0
         java.util.Set parsed = new java.util.HashSet();
 998  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 999  
         {
 1000  0
             if ( parser.getName().equals( "releases" )  )
 1001  
             {
 1002  0
                 if ( parsed.contains( "releases" ) )
 1003  
                 {
 1004  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1005  
                 }
 1006  0
                 parsed.add( "releases" );
 1007  0
                 repository.setReleases( parseRepositoryPolicy( "releases", parser, strict ) );
 1008  
             }
 1009  0
             else if ( parser.getName().equals( "snapshots" )  )
 1010  
             {
 1011  0
                 if ( parsed.contains( "snapshots" ) )
 1012  
                 {
 1013  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1014  
                 }
 1015  0
                 parsed.add( "snapshots" );
 1016  0
                 repository.setSnapshots( parseRepositoryPolicy( "snapshots", parser, strict ) );
 1017  
             }
 1018  0
             else if ( parser.getName().equals( "id" )  )
 1019  
             {
 1020  0
                 if ( parsed.contains( "id" ) )
 1021  
                 {
 1022  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1023  
                 }
 1024  0
                 parsed.add( "id" );
 1025  0
                 repository.setId( getTrimmedValue( parser.nextText()) );
 1026  
             }
 1027  0
             else if ( parser.getName().equals( "name" )  )
 1028  
             {
 1029  0
                 if ( parsed.contains( "name" ) )
 1030  
                 {
 1031  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1032  
                 }
 1033  0
                 parsed.add( "name" );
 1034  0
                 repository.setName( getTrimmedValue( parser.nextText()) );
 1035  
             }
 1036  0
             else if ( parser.getName().equals( "url" )  )
 1037  
             {
 1038  0
                 if ( parsed.contains( "url" ) )
 1039  
                 {
 1040  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1041  
                 }
 1042  0
                 parsed.add( "url" );
 1043  0
                 repository.setUrl( getTrimmedValue( parser.nextText()) );
 1044  
             }
 1045  0
             else if ( parser.getName().equals( "layout" )  )
 1046  
             {
 1047  0
                 if ( parsed.contains( "layout" ) )
 1048  
                 {
 1049  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1050  
                 }
 1051  0
                 parsed.add( "layout" );
 1052  0
                 repository.setLayout( getTrimmedValue( parser.nextText()) );
 1053  
             }
 1054  
             else
 1055  
             {
 1056  0
                 if ( strict )
 1057  
                 {
 1058  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 1059  
                 }
 1060  
                 else
 1061  
                 {
 1062  
                     // swallow up to end tag since this is not valid
 1063  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 1064  
                 }
 1065  
             }
 1066  
         }
 1067  0
         return repository;
 1068  
     } //-- Repository parseRepository( String, XmlPullParser, boolean ) 
 1069  
 
 1070  
     /**
 1071  
      * Method parseRepositoryBase.
 1072  
      * 
 1073  
      * @param tagName
 1074  
      * @param strict
 1075  
      * @param parser
 1076  
      * @throws IOException
 1077  
      * @throws XmlPullParserException
 1078  
      * @return RepositoryBase
 1079  
      */
 1080  
     private RepositoryBase parseRepositoryBase( String tagName, XmlPullParser parser, boolean strict )
 1081  
         throws IOException, XmlPullParserException
 1082  
     {
 1083  0
         RepositoryBase repositoryBase = new RepositoryBase();
 1084  0
         java.util.Set parsed = new java.util.HashSet();
 1085  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 1086  
         {
 1087  0
             if ( parser.getName().equals( "id" )  )
 1088  
             {
 1089  0
                 if ( parsed.contains( "id" ) )
 1090  
                 {
 1091  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1092  
                 }
 1093  0
                 parsed.add( "id" );
 1094  0
                 repositoryBase.setId( getTrimmedValue( parser.nextText()) );
 1095  
             }
 1096  0
             else if ( parser.getName().equals( "name" )  )
 1097  
             {
 1098  0
                 if ( parsed.contains( "name" ) )
 1099  
                 {
 1100  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1101  
                 }
 1102  0
                 parsed.add( "name" );
 1103  0
                 repositoryBase.setName( getTrimmedValue( parser.nextText()) );
 1104  
             }
 1105  0
             else if ( parser.getName().equals( "url" )  )
 1106  
             {
 1107  0
                 if ( parsed.contains( "url" ) )
 1108  
                 {
 1109  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1110  
                 }
 1111  0
                 parsed.add( "url" );
 1112  0
                 repositoryBase.setUrl( getTrimmedValue( parser.nextText()) );
 1113  
             }
 1114  0
             else if ( parser.getName().equals( "layout" )  )
 1115  
             {
 1116  0
                 if ( parsed.contains( "layout" ) )
 1117  
                 {
 1118  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1119  
                 }
 1120  0
                 parsed.add( "layout" );
 1121  0
                 repositoryBase.setLayout( getTrimmedValue( parser.nextText()) );
 1122  
             }
 1123  
             else
 1124  
             {
 1125  0
                 if ( strict )
 1126  
                 {
 1127  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 1128  
                 }
 1129  
                 else
 1130  
                 {
 1131  
                     // swallow up to end tag since this is not valid
 1132  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 1133  
                 }
 1134  
             }
 1135  
         }
 1136  0
         return repositoryBase;
 1137  
     } //-- RepositoryBase parseRepositoryBase( String, XmlPullParser, boolean ) 
 1138  
 
 1139  
     /**
 1140  
      * Method parseRepositoryPolicy.
 1141  
      * 
 1142  
      * @param tagName
 1143  
      * @param strict
 1144  
      * @param parser
 1145  
      * @throws IOException
 1146  
      * @throws XmlPullParserException
 1147  
      * @return RepositoryPolicy
 1148  
      */
 1149  
     private RepositoryPolicy parseRepositoryPolicy( String tagName, XmlPullParser parser, boolean strict )
 1150  
         throws IOException, XmlPullParserException
 1151  
     {
 1152  0
         RepositoryPolicy repositoryPolicy = new RepositoryPolicy();
 1153  0
         java.util.Set parsed = new java.util.HashSet();
 1154  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 1155  
         {
 1156  0
             if ( parser.getName().equals( "enabled" )  )
 1157  
             {
 1158  0
                 if ( parsed.contains( "enabled" ) )
 1159  
                 {
 1160  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1161  
                 }
 1162  0
                 parsed.add( "enabled" );
 1163  0
                 repositoryPolicy.setEnabled( getBooleanValue( getTrimmedValue( parser.nextText()), "enabled", parser, "true" ) );
 1164  
             }
 1165  0
             else if ( parser.getName().equals( "updatePolicy" )  )
 1166  
             {
 1167  0
                 if ( parsed.contains( "updatePolicy" ) )
 1168  
                 {
 1169  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1170  
                 }
 1171  0
                 parsed.add( "updatePolicy" );
 1172  0
                 repositoryPolicy.setUpdatePolicy( getTrimmedValue( parser.nextText()) );
 1173  
             }
 1174  0
             else if ( parser.getName().equals( "checksumPolicy" )  )
 1175  
             {
 1176  0
                 if ( parsed.contains( "checksumPolicy" ) )
 1177  
                 {
 1178  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1179  
                 }
 1180  0
                 parsed.add( "checksumPolicy" );
 1181  0
                 repositoryPolicy.setChecksumPolicy( getTrimmedValue( parser.nextText()) );
 1182  
             }
 1183  
             else
 1184  
             {
 1185  0
                 if ( strict )
 1186  
                 {
 1187  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 1188  
                 }
 1189  
                 else
 1190  
                 {
 1191  
                     // swallow up to end tag since this is not valid
 1192  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 1193  
                 }
 1194  
             }
 1195  
         }
 1196  0
         return repositoryPolicy;
 1197  
     } //-- RepositoryPolicy parseRepositoryPolicy( String, XmlPullParser, boolean ) 
 1198  
 
 1199  
     /**
 1200  
      * Method parseServer.
 1201  
      * 
 1202  
      * @param tagName
 1203  
      * @param strict
 1204  
      * @param parser
 1205  
      * @throws IOException
 1206  
      * @throws XmlPullParserException
 1207  
      * @return Server
 1208  
      */
 1209  
     private Server parseServer( String tagName, XmlPullParser parser, boolean strict )
 1210  
         throws IOException, XmlPullParserException
 1211  
     {
 1212  0
         Server server = new Server();
 1213  0
         java.util.Set parsed = new java.util.HashSet();
 1214  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 1215  
         {
 1216  0
             if ( parser.getName().equals( "username" )  )
 1217  
             {
 1218  0
                 if ( parsed.contains( "username" ) )
 1219  
                 {
 1220  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1221  
                 }
 1222  0
                 parsed.add( "username" );
 1223  0
                 server.setUsername( getTrimmedValue( parser.nextText()) );
 1224  
             }
 1225  0
             else if ( parser.getName().equals( "password" )  )
 1226  
             {
 1227  0
                 if ( parsed.contains( "password" ) )
 1228  
                 {
 1229  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1230  
                 }
 1231  0
                 parsed.add( "password" );
 1232  0
                 server.setPassword( getTrimmedValue( parser.nextText()) );
 1233  
             }
 1234  0
             else if ( parser.getName().equals( "privateKey" )  )
 1235  
             {
 1236  0
                 if ( parsed.contains( "privateKey" ) )
 1237  
                 {
 1238  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1239  
                 }
 1240  0
                 parsed.add( "privateKey" );
 1241  0
                 server.setPrivateKey( getTrimmedValue( parser.nextText()) );
 1242  
             }
 1243  0
             else if ( parser.getName().equals( "passphrase" )  )
 1244  
             {
 1245  0
                 if ( parsed.contains( "passphrase" ) )
 1246  
                 {
 1247  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1248  
                 }
 1249  0
                 parsed.add( "passphrase" );
 1250  0
                 server.setPassphrase( getTrimmedValue( parser.nextText()) );
 1251  
             }
 1252  0
             else if ( parser.getName().equals( "filePermissions" )  )
 1253  
             {
 1254  0
                 if ( parsed.contains( "filePermissions" ) )
 1255  
                 {
 1256  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1257  
                 }
 1258  0
                 parsed.add( "filePermissions" );
 1259  0
                 server.setFilePermissions( getTrimmedValue( parser.nextText()) );
 1260  
             }
 1261  0
             else if ( parser.getName().equals( "directoryPermissions" )  )
 1262  
             {
 1263  0
                 if ( parsed.contains( "directoryPermissions" ) )
 1264  
                 {
 1265  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1266  
                 }
 1267  0
                 parsed.add( "directoryPermissions" );
 1268  0
                 server.setDirectoryPermissions( getTrimmedValue( parser.nextText()) );
 1269  
             }
 1270  0
             else if ( parser.getName().equals( "configuration" )  )
 1271  
             {
 1272  0
                 if ( parsed.contains( "configuration" ) )
 1273  
                 {
 1274  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1275  
                 }
 1276  0
                 parsed.add( "configuration" );
 1277  0
                 server.setConfiguration( Xpp3DomBuilder.build( parser ) );
 1278  
             }
 1279  0
             else if ( parser.getName().equals( "id" )  )
 1280  
             {
 1281  0
                 if ( parsed.contains( "id" ) )
 1282  
                 {
 1283  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1284  
                 }
 1285  0
                 parsed.add( "id" );
 1286  0
                 server.setId( getTrimmedValue( parser.nextText()) );
 1287  
             }
 1288  
             else
 1289  
             {
 1290  0
                 if ( strict )
 1291  
                 {
 1292  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 1293  
                 }
 1294  
                 else
 1295  
                 {
 1296  
                     // swallow up to end tag since this is not valid
 1297  0
                     while ( parser.next() != XmlPullParser.END_TAG ) {}
 1298  
                 }
 1299  
             }
 1300  
         }
 1301  0
         return server;
 1302  
     } //-- Server parseServer( String, XmlPullParser, boolean ) 
 1303  
 
 1304  
     /**
 1305  
      * Method parseSettings.
 1306  
      * 
 1307  
      * @param tagName
 1308  
      * @param strict
 1309  
      * @param parser
 1310  
      * @throws IOException
 1311  
      * @throws XmlPullParserException
 1312  
      * @return Settings
 1313  
      */
 1314  
     private Settings parseSettings( String tagName, XmlPullParser parser, boolean strict )
 1315  
         throws IOException, XmlPullParserException
 1316  
     {
 1317  0
         Settings settings = new Settings();
 1318  0
         java.util.Set parsed = new java.util.HashSet();
 1319  0
         int eventType = parser.getEventType();
 1320  0
         boolean foundRoot = false;
 1321  0
         while ( eventType != XmlPullParser.END_DOCUMENT )
 1322  
         {
 1323  0
             if ( eventType == XmlPullParser.START_TAG )
 1324  
             {
 1325  0
                 if ( parser.getName().equals( tagName ) )
 1326  
                 {
 1327  0
                     foundRoot = true;
 1328  
                 }
 1329  0
                 else if ( parser.getName().equals( "localRepository" )  )
 1330  
                 {
 1331  0
                     if ( parsed.contains( "localRepository" ) )
 1332  
                     {
 1333  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1334  
                     }
 1335  0
                     parsed.add( "localRepository" );
 1336  0
                     settings.setLocalRepository( getTrimmedValue( parser.nextText()) );
 1337  
                 }
 1338  0
                 else if ( parser.getName().equals( "interactiveMode" )  )
 1339  
                 {
 1340  0
                     if ( parsed.contains( "interactiveMode" ) )
 1341  
                     {
 1342  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1343  
                     }
 1344  0
                     parsed.add( "interactiveMode" );
 1345  0
                     settings.setInteractiveMode( getBooleanValue( getTrimmedValue( parser.nextText()), "interactiveMode", parser, "true" ) );
 1346  
                 }
 1347  0
                 else if ( parser.getName().equals( "usePluginRegistry" )  )
 1348  
                 {
 1349  0
                     if ( parsed.contains( "usePluginRegistry" ) )
 1350  
                     {
 1351  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1352  
                     }
 1353  0
                     parsed.add( "usePluginRegistry" );
 1354  0
                     settings.setUsePluginRegistry( getBooleanValue( getTrimmedValue( parser.nextText()), "usePluginRegistry", parser, "false" ) );
 1355  
                 }
 1356  0
                 else if ( parser.getName().equals( "offline" )  )
 1357  
                 {
 1358  0
                     if ( parsed.contains( "offline" ) )
 1359  
                     {
 1360  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1361  
                     }
 1362  0
                     parsed.add( "offline" );
 1363  0
                     settings.setOffline( getBooleanValue( getTrimmedValue( parser.nextText()), "offline", parser, "false" ) );
 1364  
                 }
 1365  0
                 else if ( parser.getName().equals( "proxies" )  )
 1366  
                 {
 1367  0
                     if ( parsed.contains( "proxies" ) )
 1368  
                     {
 1369  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1370  
                     }
 1371  0
                     parsed.add( "proxies" );
 1372  0
                     java.util.List proxies = new java.util.ArrayList();
 1373  0
                     settings.setProxies( proxies );
 1374  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 1375  
                     {
 1376  0
                         if ( parser.getName().equals( "proxy" ) )
 1377  
                         {
 1378  0
                             proxies.add( parseProxy( "proxy", parser, strict ) );
 1379  
                         }
 1380  0
                         else if ( strict )
 1381  
                         {
 1382  0
                             throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 1383  
                         }
 1384  
                         else
 1385  
                         {
 1386  
                             // swallow up to end tag since this is not valid
 1387  0
                             while ( parser.next() != XmlPullParser.END_TAG ) {}
 1388  
                         }
 1389  
                     }
 1390  0
                 }
 1391  0
                 else if ( parser.getName().equals( "servers" )  )
 1392  
                 {
 1393  0
                     if ( parsed.contains( "servers" ) )
 1394  
                     {
 1395  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1396  
                     }
 1397  0
                     parsed.add( "servers" );
 1398  0
                     java.util.List servers = new java.util.ArrayList();
 1399  0
                     settings.setServers( servers );
 1400  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 1401  
                     {
 1402  0
                         if ( parser.getName().equals( "server" ) )
 1403  
                         {
 1404  0
                             servers.add( parseServer( "server", parser, strict ) );
 1405  
                         }
 1406  0
                         else if ( strict )
 1407  
                         {
 1408  0
                             throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 1409  
                         }
 1410  
                         else
 1411  
                         {
 1412  
                             // swallow up to end tag since this is not valid
 1413  0
                             while ( parser.next() != XmlPullParser.END_TAG ) {}
 1414  
                         }
 1415  
                     }
 1416  0
                 }
 1417  0
                 else if ( parser.getName().equals( "mirrors" )  )
 1418  
                 {
 1419  0
                     if ( parsed.contains( "mirrors" ) )
 1420  
                     {
 1421  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1422  
                     }
 1423  0
                     parsed.add( "mirrors" );
 1424  0
                     java.util.List mirrors = new java.util.ArrayList();
 1425  0
                     settings.setMirrors( mirrors );
 1426  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 1427  
                     {
 1428  0
                         if ( parser.getName().equals( "mirror" ) )
 1429  
                         {
 1430  0
                             mirrors.add( parseMirror( "mirror", parser, strict ) );
 1431  
                         }
 1432  0
                         else if ( strict )
 1433  
                         {
 1434  0
                             throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 1435  
                         }
 1436  
                         else
 1437  
                         {
 1438  
                             // swallow up to end tag since this is not valid
 1439  0
                             while ( parser.next() != XmlPullParser.END_TAG ) {}
 1440  
                         }
 1441  
                     }
 1442  0
                 }
 1443  0
                 else if ( parser.getName().equals( "profiles" )  )
 1444  
                 {
 1445  0
                     if ( parsed.contains( "profiles" ) )
 1446  
                     {
 1447  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1448  
                     }
 1449  0
                     parsed.add( "profiles" );
 1450  0
                     java.util.List profiles = new java.util.ArrayList();
 1451  0
                     settings.setProfiles( profiles );
 1452  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 1453  
                     {
 1454  0
                         if ( parser.getName().equals( "profile" ) )
 1455  
                         {
 1456  0
                             profiles.add( parseProfile( "profile", parser, strict ) );
 1457  
                         }
 1458  0
                         else if ( strict )
 1459  
                         {
 1460  0
                             throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 1461  
                         }
 1462  
                         else
 1463  
                         {
 1464  
                             // swallow up to end tag since this is not valid
 1465  0
                             while ( parser.next() != XmlPullParser.END_TAG ) {}
 1466  
                         }
 1467  
                     }
 1468  0
                 }
 1469  0
                 else if ( parser.getName().equals( "activeProfiles" )  )
 1470  
                 {
 1471  0
                     if ( parsed.contains( "activeProfiles" ) )
 1472  
                     {
 1473  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1474  
                     }
 1475  0
                     parsed.add( "activeProfiles" );
 1476  0
                     java.util.List activeProfiles = new java.util.ArrayList();
 1477  0
                     settings.setActiveProfiles( activeProfiles );
 1478  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 1479  
                     {
 1480  0
                         if ( parser.getName().equals( "activeProfile" ) )
 1481  
                         {
 1482  0
                             activeProfiles.add( getTrimmedValue( parser.nextText()) );
 1483  
                         }
 1484  0
                         else if ( strict )
 1485  
                         {
 1486  0
                             throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 1487  
                         }
 1488  
                         else
 1489  
                         {
 1490  
                             // swallow up to end tag since this is not valid
 1491  0
                             while ( parser.next() != XmlPullParser.END_TAG ) {}
 1492  
                         }
 1493  
                     }
 1494  0
                 }
 1495  0
                 else if ( parser.getName().equals( "pluginGroups" )  )
 1496  
                 {
 1497  0
                     if ( parsed.contains( "pluginGroups" ) )
 1498  
                     {
 1499  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null );
 1500  
                     }
 1501  0
                     parsed.add( "pluginGroups" );
 1502  0
                     java.util.List pluginGroups = new java.util.ArrayList();
 1503  0
                     settings.setPluginGroups( pluginGroups );
 1504  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 1505  
                     {
 1506  0
                         if ( parser.getName().equals( "pluginGroup" ) )
 1507  
                         {
 1508  0
                             pluginGroups.add( getTrimmedValue( parser.nextText()) );
 1509  
                         }
 1510  0
                         else if ( strict )
 1511  
                         {
 1512  0
                             throw new XmlPullParserException( "Unrecognised association: '" + parser.getName() + "'", parser, null );
 1513  
                         }
 1514  
                         else
 1515  
                         {
 1516  
                             // swallow up to end tag since this is not valid
 1517  0
                             while ( parser.next() != XmlPullParser.END_TAG ) {}
 1518  
                         }
 1519  
                     }
 1520  0
                 }
 1521  0
                 else if ( strict )
 1522  
                 {
 1523  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 1524  
                 }
 1525  
             }
 1526  0
             eventType = parser.next();
 1527  
         }
 1528  0
         return settings;
 1529  
     } //-- Settings parseSettings( String, XmlPullParser, boolean ) 
 1530  
 
 1531  
     /**
 1532  
      * Method parseTrackableBase.
 1533  
      * 
 1534  
      * @param tagName
 1535  
      * @param strict
 1536  
      * @param parser
 1537  
      * @throws IOException
 1538  
      * @throws XmlPullParserException
 1539  
      * @return TrackableBase
 1540  
      */
 1541  
     private TrackableBase parseTrackableBase( String tagName, XmlPullParser parser, boolean strict )
 1542  
         throws IOException, XmlPullParserException
 1543  
     {
 1544  0
         TrackableBase trackableBase = new TrackableBase();
 1545  0
         java.util.Set parsed = new java.util.HashSet();
 1546  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 1547  
         {
 1548  0
             if ( strict )
 1549  
             {
 1550  0
                 throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
 1551  
             }
 1552  
             else
 1553  
             {
 1554  
                 // swallow up to end tag since this is not valid
 1555  0
                 while ( parser.next() != XmlPullParser.END_TAG ) {}
 1556  
             }
 1557  
         }
 1558  0
         return trackableBase;
 1559  
     } //-- TrackableBase parseTrackableBase( String, XmlPullParser, boolean ) 
 1560  
 
 1561  
     /**
 1562  
      * @see ReaderFactory#newXmlReader
 1563  
      * 
 1564  
      * @param reader
 1565  
      * @param strict
 1566  
      * @throws IOException
 1567  
      * @throws XmlPullParserException
 1568  
      * @return Settings
 1569  
      */
 1570  
     public Settings read( Reader reader, boolean strict )
 1571  
         throws IOException, XmlPullParserException
 1572  
     {
 1573  0
         XmlPullParser parser = new MXParser();
 1574  
     
 1575  0
         parser.setInput( reader );
 1576  
     
 1577  0
         if ( addDefaultEntities )
 1578  
         {
 1579  
             // ----------------------------------------------------------------------
 1580  
             // Latin 1 entities
 1581  
             // ----------------------------------------------------------------------
 1582  
     
 1583  0
             parser.defineEntityReplacementText( "nbsp", "\u00a0" );
 1584  0
             parser.defineEntityReplacementText( "iexcl", "\u00a1" );
 1585  0
             parser.defineEntityReplacementText( "cent", "\u00a2" );
 1586  0
             parser.defineEntityReplacementText( "pound", "\u00a3" );
 1587  0
             parser.defineEntityReplacementText( "curren", "\u00a4" );
 1588  0
             parser.defineEntityReplacementText( "yen", "\u00a5" );
 1589  0
             parser.defineEntityReplacementText( "brvbar", "\u00a6" );
 1590  0
             parser.defineEntityReplacementText( "sect", "\u00a7" );
 1591  0
             parser.defineEntityReplacementText( "uml", "\u00a8" );
 1592  0
             parser.defineEntityReplacementText( "copy", "\u00a9" );
 1593  0
             parser.defineEntityReplacementText( "ordf", "\u00aa" );
 1594  0
             parser.defineEntityReplacementText( "laquo", "\u00ab" );
 1595  0
             parser.defineEntityReplacementText( "not", "\u00ac" );
 1596  0
             parser.defineEntityReplacementText( "shy", "\u00ad" );
 1597  0
             parser.defineEntityReplacementText( "reg", "\u00ae" );
 1598  0
             parser.defineEntityReplacementText( "macr", "\u00af" );
 1599  0
             parser.defineEntityReplacementText( "deg", "\u00b0" );
 1600  0
             parser.defineEntityReplacementText( "plusmn", "\u00b1" );
 1601  0
             parser.defineEntityReplacementText( "sup2", "\u00b2" );
 1602  0
             parser.defineEntityReplacementText( "sup3", "\u00b3" );
 1603  0
             parser.defineEntityReplacementText( "acute", "\u00b4" );
 1604  0
             parser.defineEntityReplacementText( "micro", "\u00b5" );
 1605  0
             parser.defineEntityReplacementText( "para", "\u00b6" );
 1606  0
             parser.defineEntityReplacementText( "middot", "\u00b7" );
 1607  0
             parser.defineEntityReplacementText( "cedil", "\u00b8" );
 1608  0
             parser.defineEntityReplacementText( "sup1", "\u00b9" );
 1609  0
             parser.defineEntityReplacementText( "ordm", "\u00ba" );
 1610  0
             parser.defineEntityReplacementText( "raquo", "\u00bb" );
 1611  0
             parser.defineEntityReplacementText( "frac14", "\u00bc" );
 1612  0
             parser.defineEntityReplacementText( "frac12", "\u00bd" );
 1613  0
             parser.defineEntityReplacementText( "frac34", "\u00be" );
 1614  0
             parser.defineEntityReplacementText( "iquest", "\u00bf" );
 1615  0
             parser.defineEntityReplacementText( "Agrave", "\u00c0" );
 1616  0
             parser.defineEntityReplacementText( "Aacute", "\u00c1" );
 1617  0
             parser.defineEntityReplacementText( "Acirc", "\u00c2" );
 1618  0
             parser.defineEntityReplacementText( "Atilde", "\u00c3" );
 1619  0
             parser.defineEntityReplacementText( "Auml", "\u00c4" );
 1620  0
             parser.defineEntityReplacementText( "Aring", "\u00c5" );
 1621  0
             parser.defineEntityReplacementText( "AElig", "\u00c6" );
 1622  0
             parser.defineEntityReplacementText( "Ccedil", "\u00c7" );
 1623  0
             parser.defineEntityReplacementText( "Egrave", "\u00c8" );
 1624  0
             parser.defineEntityReplacementText( "Eacute", "\u00c9" );
 1625  0
             parser.defineEntityReplacementText( "Ecirc", "\u00ca" );
 1626  0
             parser.defineEntityReplacementText( "Euml", "\u00cb" );
 1627  0
             parser.defineEntityReplacementText( "Igrave", "\u00cc" );
 1628  0
             parser.defineEntityReplacementText( "Iacute", "\u00cd" );
 1629  0
             parser.defineEntityReplacementText( "Icirc", "\u00ce" );
 1630  0
             parser.defineEntityReplacementText( "Iuml", "\u00cf" );
 1631  0
             parser.defineEntityReplacementText( "ETH", "\u00d0" );
 1632  0
             parser.defineEntityReplacementText( "Ntilde", "\u00d1" );
 1633  0
             parser.defineEntityReplacementText( "Ograve", "\u00d2" );
 1634  0
             parser.defineEntityReplacementText( "Oacute", "\u00d3" );
 1635  0
             parser.defineEntityReplacementText( "Ocirc", "\u00d4" );
 1636  0
             parser.defineEntityReplacementText( "Otilde", "\u00d5" );
 1637  0
             parser.defineEntityReplacementText( "Ouml", "\u00d6" );
 1638  0
             parser.defineEntityReplacementText( "times", "\u00d7" );
 1639  0
             parser.defineEntityReplacementText( "Oslash", "\u00d8" );
 1640  0
             parser.defineEntityReplacementText( "Ugrave", "\u00d9" );
 1641  0
             parser.defineEntityReplacementText( "Uacute", "\u00da" );
 1642  0
             parser.defineEntityReplacementText( "Ucirc", "\u00db" );
 1643  0
             parser.defineEntityReplacementText( "Uuml", "\u00dc" );
 1644  0
             parser.defineEntityReplacementText( "Yacute", "\u00dd" );
 1645  0
             parser.defineEntityReplacementText( "THORN", "\u00de" );
 1646  0
             parser.defineEntityReplacementText( "szlig", "\u00df" );
 1647  0
             parser.defineEntityReplacementText( "agrave", "\u00e0" );
 1648  0
             parser.defineEntityReplacementText( "aacute", "\u00e1" );
 1649  0
             parser.defineEntityReplacementText( "acirc", "\u00e2" );
 1650  0
             parser.defineEntityReplacementText( "atilde", "\u00e3" );
 1651  0
             parser.defineEntityReplacementText( "auml", "\u00e4" );
 1652  0
             parser.defineEntityReplacementText( "aring", "\u00e5" );
 1653  0
             parser.defineEntityReplacementText( "aelig", "\u00e6" );
 1654  0
             parser.defineEntityReplacementText( "ccedil", "\u00e7" );
 1655  0
             parser.defineEntityReplacementText( "egrave", "\u00e8" );
 1656  0
             parser.defineEntityReplacementText( "eacute", "\u00e9" );
 1657  0
             parser.defineEntityReplacementText( "ecirc", "\u00ea" );
 1658  0
             parser.defineEntityReplacementText( "euml", "\u00eb" );
 1659  0
             parser.defineEntityReplacementText( "igrave", "\u00ec" );
 1660  0
             parser.defineEntityReplacementText( "iacute", "\u00ed" );
 1661  0
             parser.defineEntityReplacementText( "icirc", "\u00ee" );
 1662  0
             parser.defineEntityReplacementText( "iuml", "\u00ef" );
 1663  0
             parser.defineEntityReplacementText( "eth", "\u00f0" );
 1664  0
             parser.defineEntityReplacementText( "ntilde", "\u00f1" );
 1665  0
             parser.defineEntityReplacementText( "ograve", "\u00f2" );
 1666  0
             parser.defineEntityReplacementText( "oacute", "\u00f3" );
 1667  0
             parser.defineEntityReplacementText( "ocirc", "\u00f4" );
 1668  0
             parser.defineEntityReplacementText( "otilde", "\u00f5" );
 1669  0
             parser.defineEntityReplacementText( "ouml", "\u00f6" );
 1670  0
             parser.defineEntityReplacementText( "divide", "\u00f7" );
 1671  0
             parser.defineEntityReplacementText( "oslash", "\u00f8" );
 1672  0
             parser.defineEntityReplacementText( "ugrave", "\u00f9" );
 1673  0
             parser.defineEntityReplacementText( "uacute", "\u00fa" );
 1674  0
             parser.defineEntityReplacementText( "ucirc", "\u00fb" );
 1675  0
             parser.defineEntityReplacementText( "uuml", "\u00fc" );
 1676  0
             parser.defineEntityReplacementText( "yacute", "\u00fd" );
 1677  0
             parser.defineEntityReplacementText( "thorn", "\u00fe" );
 1678  0
             parser.defineEntityReplacementText( "yuml", "\u00ff" );
 1679  
     
 1680  
             // ----------------------------------------------------------------------
 1681  
             // Special entities
 1682  
             // ----------------------------------------------------------------------
 1683  
     
 1684  0
             parser.defineEntityReplacementText( "OElig", "\u0152" );
 1685  0
             parser.defineEntityReplacementText( "oelig", "\u0153" );
 1686  0
             parser.defineEntityReplacementText( "Scaron", "\u0160" );
 1687  0
             parser.defineEntityReplacementText( "scaron", "\u0161" );
 1688  0
             parser.defineEntityReplacementText( "Yuml", "\u0178" );
 1689  0
             parser.defineEntityReplacementText( "circ", "\u02c6" );
 1690  0
             parser.defineEntityReplacementText( "tilde", "\u02dc" );
 1691  0
             parser.defineEntityReplacementText( "ensp", "\u2002" );
 1692  0
             parser.defineEntityReplacementText( "emsp", "\u2003" );
 1693  0
             parser.defineEntityReplacementText( "thinsp", "\u2009" );
 1694  0
             parser.defineEntityReplacementText( "zwnj", "\u200c" );
 1695  0
             parser.defineEntityReplacementText( "zwj", "\u200d" );
 1696  0
             parser.defineEntityReplacementText( "lrm", "\u200e" );
 1697  0
             parser.defineEntityReplacementText( "rlm", "\u200f" );
 1698  0
             parser.defineEntityReplacementText( "ndash", "\u2013" );
 1699  0
             parser.defineEntityReplacementText( "mdash", "\u2014" );
 1700  0
             parser.defineEntityReplacementText( "lsquo", "\u2018" );
 1701  0
             parser.defineEntityReplacementText( "rsquo", "\u2019" );
 1702  0
             parser.defineEntityReplacementText( "sbquo", "\u201a" );
 1703  0
             parser.defineEntityReplacementText( "ldquo", "\u201c" );
 1704  0
             parser.defineEntityReplacementText( "rdquo", "\u201d" );
 1705  0
             parser.defineEntityReplacementText( "bdquo", "\u201e" );
 1706  0
             parser.defineEntityReplacementText( "dagger", "\u2020" );
 1707  0
             parser.defineEntityReplacementText( "Dagger", "\u2021" );
 1708  0
             parser.defineEntityReplacementText( "permil", "\u2030" );
 1709  0
             parser.defineEntityReplacementText( "lsaquo", "\u2039" );
 1710  0
             parser.defineEntityReplacementText( "rsaquo", "\u203a" );
 1711  0
             parser.defineEntityReplacementText( "euro", "\u20ac" );
 1712  
     
 1713  
             // ----------------------------------------------------------------------
 1714  
             // Symbol entities
 1715  
             // ----------------------------------------------------------------------
 1716  
     
 1717  0
             parser.defineEntityReplacementText( "fnof", "\u0192" );
 1718  0
             parser.defineEntityReplacementText( "Alpha", "\u0391" );
 1719  0
             parser.defineEntityReplacementText( "Beta", "\u0392" );
 1720  0
             parser.defineEntityReplacementText( "Gamma", "\u0393" );
 1721  0
             parser.defineEntityReplacementText( "Delta", "\u0394" );
 1722  0
             parser.defineEntityReplacementText( "Epsilon", "\u0395" );
 1723  0
             parser.defineEntityReplacementText( "Zeta", "\u0396" );
 1724  0
             parser.defineEntityReplacementText( "Eta", "\u0397" );
 1725  0
             parser.defineEntityReplacementText( "Theta", "\u0398" );
 1726  0
             parser.defineEntityReplacementText( "Iota", "\u0399" );
 1727  0
             parser.defineEntityReplacementText( "Kappa", "\u039a" );
 1728  0
             parser.defineEntityReplacementText( "Lambda", "\u039b" );
 1729  0
             parser.defineEntityReplacementText( "Mu", "\u039c" );
 1730  0
             parser.defineEntityReplacementText( "Nu", "\u039d" );
 1731  0
             parser.defineEntityReplacementText( "Xi", "\u039e" );
 1732  0
             parser.defineEntityReplacementText( "Omicron", "\u039f" );
 1733  0
             parser.defineEntityReplacementText( "Pi", "\u03a0" );
 1734  0
             parser.defineEntityReplacementText( "Rho", "\u03a1" );
 1735  0
             parser.defineEntityReplacementText( "Sigma", "\u03a3" );
 1736  0
             parser.defineEntityReplacementText( "Tau", "\u03a4" );
 1737  0
             parser.defineEntityReplacementText( "Upsilon", "\u03a5" );
 1738  0
             parser.defineEntityReplacementText( "Phi", "\u03a6" );
 1739  0
             parser.defineEntityReplacementText( "Chi", "\u03a7" );
 1740  0
             parser.defineEntityReplacementText( "Psi", "\u03a8" );
 1741  0
             parser.defineEntityReplacementText( "Omega", "\u03a9" );
 1742  0
             parser.defineEntityReplacementText( "alpha", "\u03b1" );
 1743  0
             parser.defineEntityReplacementText( "beta", "\u03b2" );
 1744  0
             parser.defineEntityReplacementText( "gamma", "\u03b3" );
 1745  0
             parser.defineEntityReplacementText( "delta", "\u03b4" );
 1746  0
             parser.defineEntityReplacementText( "epsilon", "\u03b5" );
 1747  0
             parser.defineEntityReplacementText( "zeta", "\u03b6" );
 1748  0
             parser.defineEntityReplacementText( "eta", "\u03b7" );
 1749  0
             parser.defineEntityReplacementText( "theta", "\u03b8" );
 1750  0
             parser.defineEntityReplacementText( "iota", "\u03b9" );
 1751  0
             parser.defineEntityReplacementText( "kappa", "\u03ba" );
 1752  0
             parser.defineEntityReplacementText( "lambda", "\u03bb" );
 1753  0
             parser.defineEntityReplacementText( "mu", "\u03bc" );
 1754  0
             parser.defineEntityReplacementText( "nu", "\u03bd" );
 1755  0
             parser.defineEntityReplacementText( "xi", "\u03be" );
 1756  0
             parser.defineEntityReplacementText( "omicron", "\u03bf" );
 1757  0
             parser.defineEntityReplacementText( "pi", "\u03c0" );
 1758  0
             parser.defineEntityReplacementText( "rho", "\u03c1" );
 1759  0
             parser.defineEntityReplacementText( "sigmaf", "\u03c2" );
 1760  0
             parser.defineEntityReplacementText( "sigma", "\u03c3" );
 1761  0
             parser.defineEntityReplacementText( "tau", "\u03c4" );
 1762  0
             parser.defineEntityReplacementText( "upsilon", "\u03c5" );
 1763  0
             parser.defineEntityReplacementText( "phi", "\u03c6" );
 1764  0
             parser.defineEntityReplacementText( "chi", "\u03c7" );
 1765  0
             parser.defineEntityReplacementText( "psi", "\u03c8" );
 1766  0
             parser.defineEntityReplacementText( "omega", "\u03c9" );
 1767  0
             parser.defineEntityReplacementText( "thetasym", "\u03d1" );
 1768  0
             parser.defineEntityReplacementText( "upsih", "\u03d2" );
 1769  0
             parser.defineEntityReplacementText( "piv", "\u03d6" );
 1770  0
             parser.defineEntityReplacementText( "bull", "\u2022" );
 1771  0
             parser.defineEntityReplacementText( "hellip", "\u2026" );
 1772  0
             parser.defineEntityReplacementText( "prime", "\u2032" );
 1773  0
             parser.defineEntityReplacementText( "Prime", "\u2033" );
 1774  0
             parser.defineEntityReplacementText( "oline", "\u203e" );
 1775  0
             parser.defineEntityReplacementText( "frasl", "\u2044" );
 1776  0
             parser.defineEntityReplacementText( "weierp", "\u2118" );
 1777  0
             parser.defineEntityReplacementText( "image", "\u2111" );
 1778  0
             parser.defineEntityReplacementText( "real", "\u211c" );
 1779  0
             parser.defineEntityReplacementText( "trade", "\u2122" );
 1780  0
             parser.defineEntityReplacementText( "alefsym", "\u2135" );
 1781  0
             parser.defineEntityReplacementText( "larr", "\u2190" );
 1782  0
             parser.defineEntityReplacementText( "uarr", "\u2191" );
 1783  0
             parser.defineEntityReplacementText( "rarr", "\u2192" );
 1784  0
             parser.defineEntityReplacementText( "darr", "\u2193" );
 1785  0
             parser.defineEntityReplacementText( "harr", "\u2194" );
 1786  0
             parser.defineEntityReplacementText( "crarr", "\u21b5" );
 1787  0
             parser.defineEntityReplacementText( "lArr", "\u21d0" );
 1788  0
             parser.defineEntityReplacementText( "uArr", "\u21d1" );
 1789  0
             parser.defineEntityReplacementText( "rArr", "\u21d2" );
 1790  0
             parser.defineEntityReplacementText( "dArr", "\u21d3" );
 1791  0
             parser.defineEntityReplacementText( "hArr", "\u21d4" );
 1792  0
             parser.defineEntityReplacementText( "forall", "\u2200" );
 1793  0
             parser.defineEntityReplacementText( "part", "\u2202" );
 1794  0
             parser.defineEntityReplacementText( "exist", "\u2203" );
 1795  0
             parser.defineEntityReplacementText( "empty", "\u2205" );
 1796  0
             parser.defineEntityReplacementText( "nabla", "\u2207" );
 1797  0
             parser.defineEntityReplacementText( "isin", "\u2208" );
 1798  0
             parser.defineEntityReplacementText( "notin", "\u2209" );
 1799  0
             parser.defineEntityReplacementText( "ni", "\u220b" );
 1800  0
             parser.defineEntityReplacementText( "prod", "\u220f" );
 1801  0
             parser.defineEntityReplacementText( "sum", "\u2211" );
 1802  0
             parser.defineEntityReplacementText( "minus", "\u2212" );
 1803  0
             parser.defineEntityReplacementText( "lowast", "\u2217" );
 1804  0
             parser.defineEntityReplacementText( "radic", "\u221a" );
 1805  0
             parser.defineEntityReplacementText( "prop", "\u221d" );
 1806  0
             parser.defineEntityReplacementText( "infin", "\u221e" );
 1807  0
             parser.defineEntityReplacementText( "ang", "\u2220" );
 1808  0
             parser.defineEntityReplacementText( "and", "\u2227" );
 1809  0
             parser.defineEntityReplacementText( "or", "\u2228" );
 1810  0
             parser.defineEntityReplacementText( "cap", "\u2229" );
 1811  0
             parser.defineEntityReplacementText( "cup", "\u222a" );
 1812  0
             parser.defineEntityReplacementText( "int", "\u222b" );
 1813  0
             parser.defineEntityReplacementText( "there4", "\u2234" );
 1814  0
             parser.defineEntityReplacementText( "sim", "\u223c" );
 1815  0
             parser.defineEntityReplacementText( "cong", "\u2245" );
 1816  0
             parser.defineEntityReplacementText( "asymp", "\u2248" );
 1817  0
             parser.defineEntityReplacementText( "ne", "\u2260" );
 1818  0
             parser.defineEntityReplacementText( "equiv", "\u2261" );
 1819  0
             parser.defineEntityReplacementText( "le", "\u2264" );
 1820  0
             parser.defineEntityReplacementText( "ge", "\u2265" );
 1821  0
             parser.defineEntityReplacementText( "sub", "\u2282" );
 1822  0
             parser.defineEntityReplacementText( "sup", "\u2283" );
 1823  0
             parser.defineEntityReplacementText( "nsub", "\u2284" );
 1824  0
             parser.defineEntityReplacementText( "sube", "\u2286" );
 1825  0
             parser.defineEntityReplacementText( "supe", "\u2287" );
 1826  0
             parser.defineEntityReplacementText( "oplus", "\u2295" );
 1827  0
             parser.defineEntityReplacementText( "otimes", "\u2297" );
 1828  0
             parser.defineEntityReplacementText( "perp", "\u22a5" );
 1829  0
             parser.defineEntityReplacementText( "sdot", "\u22c5" );
 1830  0
             parser.defineEntityReplacementText( "lceil", "\u2308" );
 1831  0
             parser.defineEntityReplacementText( "rceil", "\u2309" );
 1832  0
             parser.defineEntityReplacementText( "lfloor", "\u230a" );
 1833  0
             parser.defineEntityReplacementText( "rfloor", "\u230b" );
 1834  0
             parser.defineEntityReplacementText( "lang", "\u2329" );
 1835  0
             parser.defineEntityReplacementText( "rang", "\u232a" );
 1836  0
             parser.defineEntityReplacementText( "loz", "\u25ca" );
 1837  0
             parser.defineEntityReplacementText( "spades", "\u2660" );
 1838  0
             parser.defineEntityReplacementText( "clubs", "\u2663" );
 1839  0
             parser.defineEntityReplacementText( "hearts", "\u2665" );
 1840  0
             parser.defineEntityReplacementText( "diams", "\u2666" );
 1841  
     
 1842  
         }
 1843  
     
 1844  0
         parser.next();
 1845  0
         return parseSettings( "settings", parser, strict );
 1846  
     } //-- Settings read( Reader, boolean ) 
 1847  
 
 1848  
     /**
 1849  
      * @see ReaderFactory#newXmlReader
 1850  
      * 
 1851  
      * @param reader
 1852  
      * @throws IOException
 1853  
      * @throws XmlPullParserException
 1854  
      * @return Settings
 1855  
      */
 1856  
     public Settings read( Reader reader )
 1857  
         throws IOException, XmlPullParserException
 1858  
     {
 1859  0
         return read( reader, true );
 1860  
     } //-- Settings read( Reader ) 
 1861  
 
 1862  
     /**
 1863  
      * Method read.
 1864  
      * 
 1865  
      * @param in
 1866  
      * @param strict
 1867  
      * @throws IOException
 1868  
      * @throws XmlPullParserException
 1869  
      * @return Settings
 1870  
      */
 1871  
     public Settings read( InputStream in, boolean strict )
 1872  
         throws IOException, XmlPullParserException
 1873  
     {
 1874  0
         Reader reader = ReaderFactory.newXmlReader( in );
 1875  
     
 1876  0
         return read( reader, strict );
 1877  
     } //-- Settings read( InputStream, boolean ) 
 1878  
 
 1879  
     /**
 1880  
      * Method read.
 1881  
      * 
 1882  
      * @param in
 1883  
      * @throws IOException
 1884  
      * @throws XmlPullParserException
 1885  
      * @return Settings
 1886  
      */
 1887  
     public Settings read( InputStream in )
 1888  
         throws IOException, XmlPullParserException
 1889  
     {
 1890  0
         Reader reader = ReaderFactory.newXmlReader( in );
 1891  
     
 1892  0
         return read( reader );
 1893  
     } //-- Settings read( InputStream ) 
 1894  
 
 1895  
     /**
 1896  
      * Sets the state of the "add default entities" flag.
 1897  
      * 
 1898  
      * @param addDefaultEntities
 1899  
      */
 1900  
     public void setAddDefaultEntities( boolean addDefaultEntities )
 1901  
     {
 1902  0
         this.addDefaultEntities = addDefaultEntities;
 1903  0
     } //-- void setAddDefaultEntities( boolean ) 
 1904  
 
 1905  
 
 1906  
 }