Coverage Report - org.apache.maven.plugins.assembly.model.io.xpp3.ComponentXpp3Reader
 
Classes in this File Line Coverage Branch Coverage Complexity
ComponentXpp3Reader
0%
0/736
0%
0/176
12.682
 
 1  
 /*
 2  
  * $Id$
 3  
  */
 4  
 
 5  
 package org.apache.maven.plugins.assembly.model.io.xpp3;
 6  
 
 7  
   //---------------------------------/
 8  
  //- Imported classes and packages -/
 9  
 //---------------------------------/
 10  
 
 11  
 import java.io.ByteArrayInputStream;
 12  
 import java.io.IOException;
 13  
 import java.io.InputStreamReader;
 14  
 import java.io.Reader;
 15  
 import java.io.StringReader;
 16  
 import java.io.StringWriter;
 17  
 import java.text.DateFormat;
 18  
 import java.text.ParsePosition;
 19  
 import java.util.regex.Matcher;
 20  
 import java.util.regex.Pattern;
 21  
 import org.apache.maven.plugins.assembly.model.Component;
 22  
 import org.apache.maven.plugins.assembly.model.DependencySet;
 23  
 import org.apache.maven.plugins.assembly.model.FileItem;
 24  
 import org.apache.maven.plugins.assembly.model.FileSet;
 25  
 import org.apache.maven.plugins.assembly.model.GroupVersionAlignment;
 26  
 import org.apache.maven.plugins.assembly.model.Repository;
 27  
 import org.apache.maven.plugins.assembly.model.SetBase;
 28  
 import org.apache.maven.plugins.assembly.model.UnpackOptions;
 29  
 import org.codehaus.plexus.util.IOUtil;
 30  
 import org.codehaus.plexus.util.xml.pull.MXParser;
 31  
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 32  
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 33  
 
 34  
 /**
 35  
  * Class ComponentXpp3Reader.
 36  
  * 
 37  
  * @version $Revision$ $Date$
 38  
  */
 39  0
 public class ComponentXpp3Reader {
 40  
 
 41  
 
 42  
       //--------------------------/
 43  
      //- Class/Member Variables -/
 44  
     //--------------------------/
 45  
 
 46  
     /**
 47  
      * If set the parser till be loaded with all single characters
 48  
      * from the XHTML specification.
 49  
      * The entities used:
 50  
      * <ul>
 51  
      * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent</li>
 52  
      * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent</li>
 53  
      * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent</li>
 54  
      * </ul>
 55  
      */
 56  0
     private boolean addDefaultEntities = true;
 57  
 
 58  
 
 59  
       //-----------/
 60  
      //- Methods -/
 61  
     //-----------/
 62  
 
 63  
     /**
 64  
      * Method getAddDefaultEntities
 65  
      */
 66  
     public boolean getAddDefaultEntities()
 67  
     {
 68  0
         return addDefaultEntities;
 69  
     } //-- boolean getAddDefaultEntities() 
 70  
 
 71  
     /**
 72  
      * Method getBooleanValue
 73  
      * 
 74  
      * @param s
 75  
      * @param parser
 76  
      * @param attribute
 77  
      */
 78  
     public boolean getBooleanValue(String s, String attribute, XmlPullParser parser)
 79  
         throws XmlPullParserException
 80  
     {
 81  0
         if ( s != null )
 82  
         {
 83  0
             return Boolean.valueOf( s ).booleanValue();
 84  
         }
 85  0
         return false;
 86  
     } //-- boolean getBooleanValue(String, String, XmlPullParser) 
 87  
 
 88  
     /**
 89  
      * Method getCharacterValue
 90  
      * 
 91  
      * @param s
 92  
      * @param parser
 93  
      * @param attribute
 94  
      */
 95  
     public char getCharacterValue(String s, String attribute, XmlPullParser parser)
 96  
         throws XmlPullParserException
 97  
     {
 98  0
         if ( s != null )
 99  
         {
 100  0
             return s.charAt( 0 );
 101  
         }
 102  0
         return 0;
 103  
     } //-- char getCharacterValue(String, String, XmlPullParser) 
 104  
 
 105  
     /**
 106  
      * Method getDateValue
 107  
      * 
 108  
      * @param s
 109  
      * @param parser
 110  
      * @param attribute
 111  
      */
 112  
     public java.util.Date getDateValue(String s, String attribute, XmlPullParser parser)
 113  
         throws XmlPullParserException
 114  
     {
 115  0
         if ( s != null )
 116  
         {
 117  0
             DateFormat dateParser = DateFormat.getDateTimeInstance( DateFormat.FULL, DateFormat.FULL );
 118  0
             return dateParser.parse( s, new ParsePosition( 0 ) );
 119  
         }
 120  0
         return null;
 121  
     } //-- java.util.Date getDateValue(String, String, XmlPullParser) 
 122  
 
 123  
     /**
 124  
      * Method getDoubleValue
 125  
      * 
 126  
      * @param s
 127  
      * @param strict
 128  
      * @param parser
 129  
      * @param attribute
 130  
      */
 131  
     public double getDoubleValue(String s, String attribute, XmlPullParser parser, boolean strict)
 132  
         throws XmlPullParserException
 133  
     {
 134  0
         if ( s != null )
 135  
         {
 136  
             try
 137  
             {
 138  0
                 return Double.valueOf( s ).doubleValue();
 139  
             }
 140  0
             catch ( NumberFormatException e )
 141  
             {
 142  0
                 if ( strict )
 143  
                 {
 144  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, null );
 145  
                 }
 146  
             }
 147  
         }
 148  0
         return 0;
 149  
     } //-- double getDoubleValue(String, String, XmlPullParser, boolean) 
 150  
 
 151  
     /**
 152  
      * Method getFloatValue
 153  
      * 
 154  
      * @param s
 155  
      * @param strict
 156  
      * @param parser
 157  
      * @param attribute
 158  
      */
 159  
     public float getFloatValue(String s, String attribute, XmlPullParser parser, boolean strict)
 160  
         throws XmlPullParserException
 161  
     {
 162  0
         if ( s != null )
 163  
         {
 164  
             try
 165  
             {
 166  0
                 return Float.valueOf( s ).floatValue();
 167  
             }
 168  0
             catch ( NumberFormatException e )
 169  
             {
 170  0
                 if ( strict )
 171  
                 {
 172  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, null );
 173  
                 }
 174  
             }
 175  
         }
 176  0
         return 0;
 177  
     } //-- float getFloatValue(String, String, XmlPullParser, boolean) 
 178  
 
 179  
     /**
 180  
      * Method getIntegerValue
 181  
      * 
 182  
      * @param s
 183  
      * @param strict
 184  
      * @param parser
 185  
      * @param attribute
 186  
      */
 187  
     public int getIntegerValue(String s, String attribute, XmlPullParser parser, boolean strict)
 188  
         throws XmlPullParserException
 189  
     {
 190  0
         if ( s != null )
 191  
         {
 192  
             try
 193  
             {
 194  0
                 return Integer.valueOf( s ).intValue();
 195  
             }
 196  0
             catch ( NumberFormatException e )
 197  
             {
 198  0
                 if ( strict )
 199  
                 {
 200  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be an integer", parser, null );
 201  
                 }
 202  
             }
 203  
         }
 204  0
         return 0;
 205  
     } //-- int getIntegerValue(String, String, XmlPullParser, boolean) 
 206  
 
 207  
     /**
 208  
      * Method getLongValue
 209  
      * 
 210  
      * @param s
 211  
      * @param strict
 212  
      * @param parser
 213  
      * @param attribute
 214  
      */
 215  
     public long getLongValue(String s, String attribute, XmlPullParser parser, boolean strict)
 216  
         throws XmlPullParserException
 217  
     {
 218  0
         if ( s != null )
 219  
         {
 220  
             try
 221  
             {
 222  0
                 return Long.valueOf( s ).longValue();
 223  
             }
 224  0
             catch ( NumberFormatException e )
 225  
             {
 226  0
                 if ( strict )
 227  
                 {
 228  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a long integer", parser, null );
 229  
                 }
 230  
             }
 231  
         }
 232  0
         return 0;
 233  
     } //-- long getLongValue(String, String, XmlPullParser, boolean) 
 234  
 
 235  
     /**
 236  
      * Method getRequiredAttributeValue
 237  
      * 
 238  
      * @param s
 239  
      * @param strict
 240  
      * @param parser
 241  
      * @param attribute
 242  
      */
 243  
     public String getRequiredAttributeValue(String s, String attribute, XmlPullParser parser, boolean strict)
 244  
         throws XmlPullParserException
 245  
     {
 246  0
         if ( s == null )
 247  
         {
 248  0
             if ( strict )
 249  
             {
 250  0
                 throw new XmlPullParserException( "Missing required value for attribute '" + attribute + "'", parser, null );
 251  
             }
 252  
         }
 253  0
         return s;
 254  
     } //-- String getRequiredAttributeValue(String, String, XmlPullParser, boolean) 
 255  
 
 256  
     /**
 257  
      * Method getShortValue
 258  
      * 
 259  
      * @param s
 260  
      * @param strict
 261  
      * @param parser
 262  
      * @param attribute
 263  
      */
 264  
     public short getShortValue(String s, String attribute, XmlPullParser parser, boolean strict)
 265  
         throws XmlPullParserException
 266  
     {
 267  0
         if ( s != null )
 268  
         {
 269  
             try
 270  
             {
 271  0
                 return Short.valueOf( s ).shortValue();
 272  
             }
 273  0
             catch ( NumberFormatException e )
 274  
             {
 275  0
                 if ( strict )
 276  
                 {
 277  0
                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a short integer", parser, null );
 278  
                 }
 279  
             }
 280  
         }
 281  0
         return 0;
 282  
     } //-- short getShortValue(String, String, XmlPullParser, boolean) 
 283  
 
 284  
     /**
 285  
      * Method getTrimmedValue
 286  
      * 
 287  
      * @param s
 288  
      */
 289  
     public String getTrimmedValue(String s)
 290  
     {
 291  0
         if ( s != null )
 292  
         {
 293  0
             s = s.trim();
 294  
         }
 295  0
         return s;
 296  
     } //-- String getTrimmedValue(String) 
 297  
 
 298  
     /**
 299  
      * Method parseComponent
 300  
      * 
 301  
      * @param tagName
 302  
      * @param encoding
 303  
      * @param strict
 304  
      * @param parser
 305  
      */
 306  
     private Component parseComponent(String tagName, XmlPullParser parser, boolean strict, String encoding)
 307  
         throws IOException, XmlPullParserException
 308  
     {
 309  0
         Component component = new Component();
 310  0
         component.setModelEncoding( encoding );
 311  0
         java.util.Set parsed = new java.util.HashSet();
 312  0
         int eventType = parser.getEventType();
 313  0
         boolean foundRoot = false;
 314  0
         while ( eventType != XmlPullParser.END_DOCUMENT )
 315  
         {
 316  0
             if ( eventType == XmlPullParser.START_TAG )
 317  
             {
 318  0
                 if ( parser.getName().equals( tagName ) )
 319  
                 {
 320  0
                     foundRoot = true;
 321  
                 }
 322  0
                 else if ( parser.getName().equals( "fileSets" )  )
 323  
                 {
 324  0
                     if ( parsed.contains( "fileSets" ) )
 325  
                     {
 326  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 327  
                     }
 328  0
                     parsed.add( "fileSets" );
 329  0
                     java.util.List fileSets = new java.util.ArrayList();
 330  0
                     component.setFileSets( fileSets );
 331  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 332  
                     {
 333  0
                         if ( parser.getName().equals( "fileSet" ) )
 334  
                         {
 335  0
                             fileSets.add( parseFileSet( "fileSet", parser, strict, encoding ) );
 336  
                         }
 337  
                         else
 338  
                         {
 339  0
                             parser.nextText();
 340  
                         }
 341  
                     }
 342  0
                 }
 343  0
                 else if ( parser.getName().equals( "files" )  )
 344  
                 {
 345  0
                     if ( parsed.contains( "files" ) )
 346  
                     {
 347  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 348  
                     }
 349  0
                     parsed.add( "files" );
 350  0
                     java.util.List files = new java.util.ArrayList();
 351  0
                     component.setFiles( files );
 352  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 353  
                     {
 354  0
                         if ( parser.getName().equals( "file" ) )
 355  
                         {
 356  0
                             files.add( parseFileItem( "file", parser, strict, encoding ) );
 357  
                         }
 358  
                         else
 359  
                         {
 360  0
                             parser.nextText();
 361  
                         }
 362  
                     }
 363  0
                 }
 364  0
                 else if ( parser.getName().equals( "dependencySets" )  )
 365  
                 {
 366  0
                     if ( parsed.contains( "dependencySets" ) )
 367  
                     {
 368  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 369  
                     }
 370  0
                     parsed.add( "dependencySets" );
 371  0
                     java.util.List dependencySets = new java.util.ArrayList();
 372  0
                     component.setDependencySets( dependencySets );
 373  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 374  
                     {
 375  0
                         if ( parser.getName().equals( "dependencySet" ) )
 376  
                         {
 377  0
                             dependencySets.add( parseDependencySet( "dependencySet", parser, strict, encoding ) );
 378  
                         }
 379  
                         else
 380  
                         {
 381  0
                             parser.nextText();
 382  
                         }
 383  
                     }
 384  0
                 }
 385  0
                 else if ( parser.getName().equals( "repositories" )  )
 386  
                 {
 387  0
                     if ( parsed.contains( "repositories" ) )
 388  
                     {
 389  0
                         throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 390  
                     }
 391  0
                     parsed.add( "repositories" );
 392  0
                     java.util.List repositories = new java.util.ArrayList();
 393  0
                     component.setRepositories( repositories );
 394  0
                     while ( parser.nextTag() == XmlPullParser.START_TAG )
 395  
                     {
 396  0
                         if ( parser.getName().equals( "repository" ) )
 397  
                         {
 398  0
                             repositories.add( parseRepository( "repository", parser, strict, encoding ) );
 399  
                         }
 400  
                         else
 401  
                         {
 402  0
                             parser.nextText();
 403  
                         }
 404  
                     }
 405  0
                 }
 406  
                 else
 407  
                 {
 408  0
                     if ( foundRoot )
 409  
                     {
 410  0
                         if ( strict )
 411  
                         {
 412  0
                             throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 413  
                         }
 414  
                     }
 415  
                 }
 416  
             }
 417  0
             eventType = parser.next();
 418  
         }
 419  0
         return component;
 420  
     } //-- Component parseComponent(String, XmlPullParser, boolean, String) 
 421  
 
 422  
     /**
 423  
      * Method parseDependencySet
 424  
      * 
 425  
      * @param tagName
 426  
      * @param encoding
 427  
      * @param strict
 428  
      * @param parser
 429  
      */
 430  
     private DependencySet parseDependencySet(String tagName, XmlPullParser parser, boolean strict, String encoding)
 431  
         throws IOException, XmlPullParserException
 432  
     {
 433  0
         DependencySet dependencySet = new DependencySet();
 434  0
         dependencySet.setModelEncoding( encoding );
 435  0
         java.util.Set parsed = new java.util.HashSet();
 436  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 437  
         {
 438  0
             if ( parser.getName().equals( "outputFileNameMapping" )  )
 439  
             {
 440  0
                 if ( parsed.contains( "outputFileNameMapping" ) )
 441  
                 {
 442  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 443  
                 }
 444  0
                 parsed.add( "outputFileNameMapping" );
 445  0
                 dependencySet.setOutputFileNameMapping( getTrimmedValue( parser.nextText()) );
 446  
             }
 447  0
             else if ( parser.getName().equals( "unpack" )  )
 448  
             {
 449  0
                 if ( parsed.contains( "unpack" ) )
 450  
                 {
 451  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 452  
                 }
 453  0
                 parsed.add( "unpack" );
 454  0
                 dependencySet.setUnpack( getBooleanValue( getTrimmedValue( parser.nextText()), "unpack", parser ) );
 455  
             }
 456  0
             else if ( parser.getName().equals( "unpackOptions" )  )
 457  
             {
 458  0
                 if ( parsed.contains( "unpackOptions" ) )
 459  
                 {
 460  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 461  
                 }
 462  0
                 parsed.add( "unpackOptions" );
 463  0
                 dependencySet.setUnpackOptions( parseUnpackOptions( "unpackOptions", parser, strict, encoding ) );
 464  
             }
 465  0
             else if ( parser.getName().equals( "scope" )  )
 466  
             {
 467  0
                 if ( parsed.contains( "scope" ) )
 468  
                 {
 469  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 470  
                 }
 471  0
                 parsed.add( "scope" );
 472  0
                 dependencySet.setScope( getTrimmedValue( parser.nextText()) );
 473  
             }
 474  0
             else if ( parser.getName().equals( "useStrictFiltering" )  )
 475  
             {
 476  0
                 if ( parsed.contains( "useStrictFiltering" ) )
 477  
                 {
 478  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 479  
                 }
 480  0
                 parsed.add( "useStrictFiltering" );
 481  0
                 dependencySet.setUseStrictFiltering( getBooleanValue( getTrimmedValue( parser.nextText()), "useStrictFiltering", parser ) );
 482  
             }
 483  0
             else if ( parser.getName().equals( "useDefaultExcludes" )  )
 484  
             {
 485  0
                 if ( parsed.contains( "useDefaultExcludes" ) )
 486  
                 {
 487  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 488  
                 }
 489  0
                 parsed.add( "useDefaultExcludes" );
 490  0
                 dependencySet.setUseDefaultExcludes( getBooleanValue( getTrimmedValue( parser.nextText()), "useDefaultExcludes", parser ) );
 491  
             }
 492  0
             else if ( parser.getName().equals( "outputDirectory" )  )
 493  
             {
 494  0
                 if ( parsed.contains( "outputDirectory" ) )
 495  
                 {
 496  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 497  
                 }
 498  0
                 parsed.add( "outputDirectory" );
 499  0
                 dependencySet.setOutputDirectory( getTrimmedValue( parser.nextText()) );
 500  
             }
 501  0
             else if ( parser.getName().equals( "includes" )  )
 502  
             {
 503  0
                 if ( parsed.contains( "includes" ) )
 504  
                 {
 505  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 506  
                 }
 507  0
                 parsed.add( "includes" );
 508  0
                 java.util.List includes = new java.util.ArrayList();
 509  0
                 dependencySet.setIncludes( includes );
 510  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 511  
                 {
 512  0
                     if ( parser.getName().equals( "include" ) )
 513  
                     {
 514  0
                         includes.add( getTrimmedValue( parser.nextText()) );
 515  
                     }
 516  
                     else
 517  
                     {
 518  0
                         parser.nextText();
 519  
                     }
 520  
                 }
 521  0
             }
 522  0
             else if ( parser.getName().equals( "excludes" )  )
 523  
             {
 524  0
                 if ( parsed.contains( "excludes" ) )
 525  
                 {
 526  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 527  
                 }
 528  0
                 parsed.add( "excludes" );
 529  0
                 java.util.List excludes = new java.util.ArrayList();
 530  0
                 dependencySet.setExcludes( excludes );
 531  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 532  
                 {
 533  0
                     if ( parser.getName().equals( "exclude" ) )
 534  
                     {
 535  0
                         excludes.add( getTrimmedValue( parser.nextText()) );
 536  
                     }
 537  
                     else
 538  
                     {
 539  0
                         parser.nextText();
 540  
                     }
 541  
                 }
 542  0
             }
 543  0
             else if ( parser.getName().equals( "fileMode" )  )
 544  
             {
 545  0
                 if ( parsed.contains( "fileMode" ) )
 546  
                 {
 547  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 548  
                 }
 549  0
                 parsed.add( "fileMode" );
 550  0
                 dependencySet.setFileMode( getTrimmedValue( parser.nextText()) );
 551  
             }
 552  0
             else if ( parser.getName().equals( "directoryMode" )  )
 553  
             {
 554  0
                 if ( parsed.contains( "directoryMode" ) )
 555  
                 {
 556  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 557  
                 }
 558  0
                 parsed.add( "directoryMode" );
 559  0
                 dependencySet.setDirectoryMode( getTrimmedValue( parser.nextText()) );
 560  
             }
 561  
             else
 562  
             {
 563  0
                 if ( strict )
 564  
                 {
 565  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 566  
                 }
 567  
             }
 568  
         }
 569  0
         return dependencySet;
 570  
     } //-- DependencySet parseDependencySet(String, XmlPullParser, boolean, String) 
 571  
 
 572  
     /**
 573  
      * Method parseFileItem
 574  
      * 
 575  
      * @param tagName
 576  
      * @param encoding
 577  
      * @param strict
 578  
      * @param parser
 579  
      */
 580  
     private FileItem parseFileItem(String tagName, XmlPullParser parser, boolean strict, String encoding)
 581  
         throws IOException, XmlPullParserException
 582  
     {
 583  0
         FileItem fileItem = new FileItem();
 584  0
         fileItem.setModelEncoding( encoding );
 585  0
         java.util.Set parsed = new java.util.HashSet();
 586  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 587  
         {
 588  0
             if ( parser.getName().equals( "source" )  )
 589  
             {
 590  0
                 if ( parsed.contains( "source" ) )
 591  
                 {
 592  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 593  
                 }
 594  0
                 parsed.add( "source" );
 595  0
                 fileItem.setSource( getTrimmedValue( parser.nextText()) );
 596  
             }
 597  0
             else if ( parser.getName().equals( "outputDirectory" )  )
 598  
             {
 599  0
                 if ( parsed.contains( "outputDirectory" ) )
 600  
                 {
 601  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 602  
                 }
 603  0
                 parsed.add( "outputDirectory" );
 604  0
                 fileItem.setOutputDirectory( getTrimmedValue( parser.nextText()) );
 605  
             }
 606  0
             else if ( parser.getName().equals( "destName" )  )
 607  
             {
 608  0
                 if ( parsed.contains( "destName" ) )
 609  
                 {
 610  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 611  
                 }
 612  0
                 parsed.add( "destName" );
 613  0
                 fileItem.setDestName( getTrimmedValue( parser.nextText()) );
 614  
             }
 615  0
             else if ( parser.getName().equals( "fileMode" )  )
 616  
             {
 617  0
                 if ( parsed.contains( "fileMode" ) )
 618  
                 {
 619  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 620  
                 }
 621  0
                 parsed.add( "fileMode" );
 622  0
                 fileItem.setFileMode( getTrimmedValue( parser.nextText()) );
 623  
             }
 624  0
             else if ( parser.getName().equals( "lineEnding" )  )
 625  
             {
 626  0
                 if ( parsed.contains( "lineEnding" ) )
 627  
                 {
 628  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 629  
                 }
 630  0
                 parsed.add( "lineEnding" );
 631  0
                 fileItem.setLineEnding( getTrimmedValue( parser.nextText()) );
 632  
             }
 633  0
             else if ( parser.getName().equals( "filtered" )  )
 634  
             {
 635  0
                 if ( parsed.contains( "filtered" ) )
 636  
                 {
 637  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 638  
                 }
 639  0
                 parsed.add( "filtered" );
 640  0
                 fileItem.setFiltered( getBooleanValue( getTrimmedValue( parser.nextText()), "filtered", parser ) );
 641  
             }
 642  
             else
 643  
             {
 644  0
                 if ( strict )
 645  
                 {
 646  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 647  
                 }
 648  
             }
 649  
         }
 650  0
         return fileItem;
 651  
     } //-- FileItem parseFileItem(String, XmlPullParser, boolean, String) 
 652  
 
 653  
     /**
 654  
      * Method parseFileSet
 655  
      * 
 656  
      * @param tagName
 657  
      * @param encoding
 658  
      * @param strict
 659  
      * @param parser
 660  
      */
 661  
     private FileSet parseFileSet(String tagName, XmlPullParser parser, boolean strict, String encoding)
 662  
         throws IOException, XmlPullParserException
 663  
     {
 664  0
         FileSet fileSet = new FileSet();
 665  0
         fileSet.setModelEncoding( encoding );
 666  0
         java.util.Set parsed = new java.util.HashSet();
 667  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 668  
         {
 669  0
             if ( parser.getName().equals( "directory" )  )
 670  
             {
 671  0
                 if ( parsed.contains( "directory" ) )
 672  
                 {
 673  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 674  
                 }
 675  0
                 parsed.add( "directory" );
 676  0
                 fileSet.setDirectory( getTrimmedValue( parser.nextText()) );
 677  
             }
 678  0
             else if ( parser.getName().equals( "lineEnding" )  )
 679  
             {
 680  0
                 if ( parsed.contains( "lineEnding" ) )
 681  
                 {
 682  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 683  
                 }
 684  0
                 parsed.add( "lineEnding" );
 685  0
                 fileSet.setLineEnding( getTrimmedValue( parser.nextText()) );
 686  
             }
 687  0
             else if ( parser.getName().equals( "filtered" )  )
 688  
             {
 689  0
                 if ( parsed.contains( "filtered" ) )
 690  
                 {
 691  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 692  
                 }
 693  0
                 parsed.add( "filtered" );
 694  0
                 fileSet.setFiltered( getBooleanValue( getTrimmedValue( parser.nextText()), "filtered", parser ) );
 695  
             }
 696  0
             else if ( parser.getName().equals( "useStrictFiltering" )  )
 697  
             {
 698  0
                 if ( parsed.contains( "useStrictFiltering" ) )
 699  
                 {
 700  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 701  
                 }
 702  0
                 parsed.add( "useStrictFiltering" );
 703  0
                 fileSet.setUseStrictFiltering( getBooleanValue( getTrimmedValue( parser.nextText()), "useStrictFiltering", parser ) );
 704  
             }
 705  0
             else if ( parser.getName().equals( "useDefaultExcludes" )  )
 706  
             {
 707  0
                 if ( parsed.contains( "useDefaultExcludes" ) )
 708  
                 {
 709  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 710  
                 }
 711  0
                 parsed.add( "useDefaultExcludes" );
 712  0
                 fileSet.setUseDefaultExcludes( getBooleanValue( getTrimmedValue( parser.nextText()), "useDefaultExcludes", parser ) );
 713  
             }
 714  0
             else if ( parser.getName().equals( "outputDirectory" )  )
 715  
             {
 716  0
                 if ( parsed.contains( "outputDirectory" ) )
 717  
                 {
 718  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 719  
                 }
 720  0
                 parsed.add( "outputDirectory" );
 721  0
                 fileSet.setOutputDirectory( getTrimmedValue( parser.nextText()) );
 722  
             }
 723  0
             else if ( parser.getName().equals( "includes" )  )
 724  
             {
 725  0
                 if ( parsed.contains( "includes" ) )
 726  
                 {
 727  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 728  
                 }
 729  0
                 parsed.add( "includes" );
 730  0
                 java.util.List includes = new java.util.ArrayList();
 731  0
                 fileSet.setIncludes( includes );
 732  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 733  
                 {
 734  0
                     if ( parser.getName().equals( "include" ) )
 735  
                     {
 736  0
                         includes.add( getTrimmedValue( parser.nextText()) );
 737  
                     }
 738  
                     else
 739  
                     {
 740  0
                         parser.nextText();
 741  
                     }
 742  
                 }
 743  0
             }
 744  0
             else if ( parser.getName().equals( "excludes" )  )
 745  
             {
 746  0
                 if ( parsed.contains( "excludes" ) )
 747  
                 {
 748  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 749  
                 }
 750  0
                 parsed.add( "excludes" );
 751  0
                 java.util.List excludes = new java.util.ArrayList();
 752  0
                 fileSet.setExcludes( excludes );
 753  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 754  
                 {
 755  0
                     if ( parser.getName().equals( "exclude" ) )
 756  
                     {
 757  0
                         excludes.add( getTrimmedValue( parser.nextText()) );
 758  
                     }
 759  
                     else
 760  
                     {
 761  0
                         parser.nextText();
 762  
                     }
 763  
                 }
 764  0
             }
 765  0
             else if ( parser.getName().equals( "fileMode" )  )
 766  
             {
 767  0
                 if ( parsed.contains( "fileMode" ) )
 768  
                 {
 769  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 770  
                 }
 771  0
                 parsed.add( "fileMode" );
 772  0
                 fileSet.setFileMode( getTrimmedValue( parser.nextText()) );
 773  
             }
 774  0
             else if ( parser.getName().equals( "directoryMode" )  )
 775  
             {
 776  0
                 if ( parsed.contains( "directoryMode" ) )
 777  
                 {
 778  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 779  
                 }
 780  0
                 parsed.add( "directoryMode" );
 781  0
                 fileSet.setDirectoryMode( getTrimmedValue( parser.nextText()) );
 782  
             }
 783  
             else
 784  
             {
 785  0
                 if ( strict )
 786  
                 {
 787  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 788  
                 }
 789  
             }
 790  
         }
 791  0
         return fileSet;
 792  
     } //-- FileSet parseFileSet(String, XmlPullParser, boolean, String) 
 793  
 
 794  
     /**
 795  
      * Method parseGroupVersionAlignment
 796  
      * 
 797  
      * @param tagName
 798  
      * @param encoding
 799  
      * @param strict
 800  
      * @param parser
 801  
      */
 802  
     private GroupVersionAlignment parseGroupVersionAlignment(String tagName, XmlPullParser parser, boolean strict, String encoding)
 803  
         throws IOException, XmlPullParserException
 804  
     {
 805  0
         GroupVersionAlignment groupVersionAlignment = new GroupVersionAlignment();
 806  0
         groupVersionAlignment.setModelEncoding( encoding );
 807  0
         java.util.Set parsed = new java.util.HashSet();
 808  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 809  
         {
 810  0
             if ( parser.getName().equals( "id" )  )
 811  
             {
 812  0
                 if ( parsed.contains( "id" ) )
 813  
                 {
 814  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 815  
                 }
 816  0
                 parsed.add( "id" );
 817  0
                 groupVersionAlignment.setId( getTrimmedValue( parser.nextText()) );
 818  
             }
 819  0
             else if ( parser.getName().equals( "version" )  )
 820  
             {
 821  0
                 if ( parsed.contains( "version" ) )
 822  
                 {
 823  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 824  
                 }
 825  0
                 parsed.add( "version" );
 826  0
                 groupVersionAlignment.setVersion( getTrimmedValue( parser.nextText()) );
 827  
             }
 828  0
             else if ( parser.getName().equals( "excludes" )  )
 829  
             {
 830  0
                 if ( parsed.contains( "excludes" ) )
 831  
                 {
 832  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 833  
                 }
 834  0
                 parsed.add( "excludes" );
 835  0
                 java.util.List excludes = new java.util.ArrayList();
 836  0
                 groupVersionAlignment.setExcludes( excludes );
 837  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 838  
                 {
 839  0
                     if ( parser.getName().equals( "exclude" ) )
 840  
                     {
 841  0
                         excludes.add( getTrimmedValue( parser.nextText()) );
 842  
                     }
 843  
                     else
 844  
                     {
 845  0
                         parser.nextText();
 846  
                     }
 847  
                 }
 848  0
             }
 849  
             else
 850  
             {
 851  0
                 if ( strict )
 852  
                 {
 853  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 854  
                 }
 855  
             }
 856  
         }
 857  0
         return groupVersionAlignment;
 858  
     } //-- GroupVersionAlignment parseGroupVersionAlignment(String, XmlPullParser, boolean, String) 
 859  
 
 860  
     /**
 861  
      * Method parseRepository
 862  
      * 
 863  
      * @param tagName
 864  
      * @param encoding
 865  
      * @param strict
 866  
      * @param parser
 867  
      */
 868  
     private Repository parseRepository(String tagName, XmlPullParser parser, boolean strict, String encoding)
 869  
         throws IOException, XmlPullParserException
 870  
     {
 871  0
         Repository repository = new Repository();
 872  0
         repository.setModelEncoding( encoding );
 873  0
         java.util.Set parsed = new java.util.HashSet();
 874  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 875  
         {
 876  0
             if ( parser.getName().equals( "includeMetadata" )  )
 877  
             {
 878  0
                 if ( parsed.contains( "includeMetadata" ) )
 879  
                 {
 880  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 881  
                 }
 882  0
                 parsed.add( "includeMetadata" );
 883  0
                 repository.setIncludeMetadata( getBooleanValue( getTrimmedValue( parser.nextText()), "includeMetadata", parser ) );
 884  
             }
 885  0
             else if ( parser.getName().equals( "groupVersionAlignments" )  )
 886  
             {
 887  0
                 if ( parsed.contains( "groupVersionAlignments" ) )
 888  
                 {
 889  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 890  
                 }
 891  0
                 parsed.add( "groupVersionAlignments" );
 892  0
                 java.util.List groupVersionAlignments = new java.util.ArrayList();
 893  0
                 repository.setGroupVersionAlignments( groupVersionAlignments );
 894  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 895  
                 {
 896  0
                     if ( parser.getName().equals( "groupVersionAlignment" ) )
 897  
                     {
 898  0
                         groupVersionAlignments.add( parseGroupVersionAlignment( "groupVersionAlignment", parser, strict, encoding ) );
 899  
                     }
 900  
                     else
 901  
                     {
 902  0
                         parser.nextText();
 903  
                     }
 904  
                 }
 905  0
             }
 906  0
             else if ( parser.getName().equals( "scope" )  )
 907  
             {
 908  0
                 if ( parsed.contains( "scope" ) )
 909  
                 {
 910  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 911  
                 }
 912  0
                 parsed.add( "scope" );
 913  0
                 repository.setScope( getTrimmedValue( parser.nextText()) );
 914  
             }
 915  0
             else if ( parser.getName().equals( "useStrictFiltering" )  )
 916  
             {
 917  0
                 if ( parsed.contains( "useStrictFiltering" ) )
 918  
                 {
 919  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 920  
                 }
 921  0
                 parsed.add( "useStrictFiltering" );
 922  0
                 repository.setUseStrictFiltering( getBooleanValue( getTrimmedValue( parser.nextText()), "useStrictFiltering", parser ) );
 923  
             }
 924  0
             else if ( parser.getName().equals( "useDefaultExcludes" )  )
 925  
             {
 926  0
                 if ( parsed.contains( "useDefaultExcludes" ) )
 927  
                 {
 928  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 929  
                 }
 930  0
                 parsed.add( "useDefaultExcludes" );
 931  0
                 repository.setUseDefaultExcludes( getBooleanValue( getTrimmedValue( parser.nextText()), "useDefaultExcludes", parser ) );
 932  
             }
 933  0
             else if ( parser.getName().equals( "outputDirectory" )  )
 934  
             {
 935  0
                 if ( parsed.contains( "outputDirectory" ) )
 936  
                 {
 937  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 938  
                 }
 939  0
                 parsed.add( "outputDirectory" );
 940  0
                 repository.setOutputDirectory( getTrimmedValue( parser.nextText()) );
 941  
             }
 942  0
             else if ( parser.getName().equals( "includes" )  )
 943  
             {
 944  0
                 if ( parsed.contains( "includes" ) )
 945  
                 {
 946  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 947  
                 }
 948  0
                 parsed.add( "includes" );
 949  0
                 java.util.List includes = new java.util.ArrayList();
 950  0
                 repository.setIncludes( includes );
 951  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 952  
                 {
 953  0
                     if ( parser.getName().equals( "include" ) )
 954  
                     {
 955  0
                         includes.add( getTrimmedValue( parser.nextText()) );
 956  
                     }
 957  
                     else
 958  
                     {
 959  0
                         parser.nextText();
 960  
                     }
 961  
                 }
 962  0
             }
 963  0
             else if ( parser.getName().equals( "excludes" )  )
 964  
             {
 965  0
                 if ( parsed.contains( "excludes" ) )
 966  
                 {
 967  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 968  
                 }
 969  0
                 parsed.add( "excludes" );
 970  0
                 java.util.List excludes = new java.util.ArrayList();
 971  0
                 repository.setExcludes( excludes );
 972  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 973  
                 {
 974  0
                     if ( parser.getName().equals( "exclude" ) )
 975  
                     {
 976  0
                         excludes.add( getTrimmedValue( parser.nextText()) );
 977  
                     }
 978  
                     else
 979  
                     {
 980  0
                         parser.nextText();
 981  
                     }
 982  
                 }
 983  0
             }
 984  0
             else if ( parser.getName().equals( "fileMode" )  )
 985  
             {
 986  0
                 if ( parsed.contains( "fileMode" ) )
 987  
                 {
 988  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 989  
                 }
 990  0
                 parsed.add( "fileMode" );
 991  0
                 repository.setFileMode( getTrimmedValue( parser.nextText()) );
 992  
             }
 993  0
             else if ( parser.getName().equals( "directoryMode" )  )
 994  
             {
 995  0
                 if ( parsed.contains( "directoryMode" ) )
 996  
                 {
 997  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 998  
                 }
 999  0
                 parsed.add( "directoryMode" );
 1000  0
                 repository.setDirectoryMode( getTrimmedValue( parser.nextText()) );
 1001  
             }
 1002  
             else
 1003  
             {
 1004  0
                 if ( strict )
 1005  
                 {
 1006  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 1007  
                 }
 1008  
             }
 1009  
         }
 1010  0
         return repository;
 1011  
     } //-- Repository parseRepository(String, XmlPullParser, boolean, String) 
 1012  
 
 1013  
     /**
 1014  
      * Method parseSetBase
 1015  
      * 
 1016  
      * @param tagName
 1017  
      * @param encoding
 1018  
      * @param strict
 1019  
      * @param parser
 1020  
      */
 1021  
     private SetBase parseSetBase(String tagName, XmlPullParser parser, boolean strict, String encoding)
 1022  
         throws IOException, XmlPullParserException
 1023  
     {
 1024  0
         SetBase setBase = new SetBase();
 1025  0
         setBase.setModelEncoding( encoding );
 1026  0
         java.util.Set parsed = new java.util.HashSet();
 1027  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 1028  
         {
 1029  0
             if ( parser.getName().equals( "useStrictFiltering" )  )
 1030  
             {
 1031  0
                 if ( parsed.contains( "useStrictFiltering" ) )
 1032  
                 {
 1033  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1034  
                 }
 1035  0
                 parsed.add( "useStrictFiltering" );
 1036  0
                 setBase.setUseStrictFiltering( getBooleanValue( getTrimmedValue( parser.nextText()), "useStrictFiltering", parser ) );
 1037  
             }
 1038  0
             else if ( parser.getName().equals( "useDefaultExcludes" )  )
 1039  
             {
 1040  0
                 if ( parsed.contains( "useDefaultExcludes" ) )
 1041  
                 {
 1042  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1043  
                 }
 1044  0
                 parsed.add( "useDefaultExcludes" );
 1045  0
                 setBase.setUseDefaultExcludes( getBooleanValue( getTrimmedValue( parser.nextText()), "useDefaultExcludes", parser ) );
 1046  
             }
 1047  0
             else if ( parser.getName().equals( "outputDirectory" )  )
 1048  
             {
 1049  0
                 if ( parsed.contains( "outputDirectory" ) )
 1050  
                 {
 1051  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1052  
                 }
 1053  0
                 parsed.add( "outputDirectory" );
 1054  0
                 setBase.setOutputDirectory( getTrimmedValue( parser.nextText()) );
 1055  
             }
 1056  0
             else if ( parser.getName().equals( "includes" )  )
 1057  
             {
 1058  0
                 if ( parsed.contains( "includes" ) )
 1059  
                 {
 1060  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1061  
                 }
 1062  0
                 parsed.add( "includes" );
 1063  0
                 java.util.List includes = new java.util.ArrayList();
 1064  0
                 setBase.setIncludes( includes );
 1065  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 1066  
                 {
 1067  0
                     if ( parser.getName().equals( "include" ) )
 1068  
                     {
 1069  0
                         includes.add( getTrimmedValue( parser.nextText()) );
 1070  
                     }
 1071  
                     else
 1072  
                     {
 1073  0
                         parser.nextText();
 1074  
                     }
 1075  
                 }
 1076  0
             }
 1077  0
             else if ( parser.getName().equals( "excludes" )  )
 1078  
             {
 1079  0
                 if ( parsed.contains( "excludes" ) )
 1080  
                 {
 1081  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1082  
                 }
 1083  0
                 parsed.add( "excludes" );
 1084  0
                 java.util.List excludes = new java.util.ArrayList();
 1085  0
                 setBase.setExcludes( excludes );
 1086  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 1087  
                 {
 1088  0
                     if ( parser.getName().equals( "exclude" ) )
 1089  
                     {
 1090  0
                         excludes.add( getTrimmedValue( parser.nextText()) );
 1091  
                     }
 1092  
                     else
 1093  
                     {
 1094  0
                         parser.nextText();
 1095  
                     }
 1096  
                 }
 1097  0
             }
 1098  0
             else if ( parser.getName().equals( "fileMode" )  )
 1099  
             {
 1100  0
                 if ( parsed.contains( "fileMode" ) )
 1101  
                 {
 1102  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1103  
                 }
 1104  0
                 parsed.add( "fileMode" );
 1105  0
                 setBase.setFileMode( getTrimmedValue( parser.nextText()) );
 1106  
             }
 1107  0
             else if ( parser.getName().equals( "directoryMode" )  )
 1108  
             {
 1109  0
                 if ( parsed.contains( "directoryMode" ) )
 1110  
                 {
 1111  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1112  
                 }
 1113  0
                 parsed.add( "directoryMode" );
 1114  0
                 setBase.setDirectoryMode( getTrimmedValue( parser.nextText()) );
 1115  
             }
 1116  
             else
 1117  
             {
 1118  0
                 if ( strict )
 1119  
                 {
 1120  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 1121  
                 }
 1122  
             }
 1123  
         }
 1124  0
         return setBase;
 1125  
     } //-- SetBase parseSetBase(String, XmlPullParser, boolean, String) 
 1126  
 
 1127  
     /**
 1128  
      * Method parseUnpackOptions
 1129  
      * 
 1130  
      * @param tagName
 1131  
      * @param encoding
 1132  
      * @param strict
 1133  
      * @param parser
 1134  
      */
 1135  
     private UnpackOptions parseUnpackOptions(String tagName, XmlPullParser parser, boolean strict, String encoding)
 1136  
         throws IOException, XmlPullParserException
 1137  
     {
 1138  0
         UnpackOptions unpackOptions = new UnpackOptions();
 1139  0
         unpackOptions.setModelEncoding( encoding );
 1140  0
         java.util.Set parsed = new java.util.HashSet();
 1141  0
         while ( parser.nextTag() == XmlPullParser.START_TAG )
 1142  
         {
 1143  0
             if ( parser.getName().equals( "includes" )  )
 1144  
             {
 1145  0
                 if ( parsed.contains( "includes" ) )
 1146  
                 {
 1147  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1148  
                 }
 1149  0
                 parsed.add( "includes" );
 1150  0
                 java.util.List includes = new java.util.ArrayList();
 1151  0
                 unpackOptions.setIncludes( includes );
 1152  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 1153  
                 {
 1154  0
                     if ( parser.getName().equals( "include" ) )
 1155  
                     {
 1156  0
                         includes.add( getTrimmedValue( parser.nextText()) );
 1157  
                     }
 1158  
                     else
 1159  
                     {
 1160  0
                         parser.nextText();
 1161  
                     }
 1162  
                 }
 1163  0
             }
 1164  0
             else if ( parser.getName().equals( "excludes" )  )
 1165  
             {
 1166  0
                 if ( parsed.contains( "excludes" ) )
 1167  
                 {
 1168  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1169  
                 }
 1170  0
                 parsed.add( "excludes" );
 1171  0
                 java.util.List excludes = new java.util.ArrayList();
 1172  0
                 unpackOptions.setExcludes( excludes );
 1173  0
                 while ( parser.nextTag() == XmlPullParser.START_TAG )
 1174  
                 {
 1175  0
                     if ( parser.getName().equals( "exclude" ) )
 1176  
                     {
 1177  0
                         excludes.add( getTrimmedValue( parser.nextText()) );
 1178  
                     }
 1179  
                     else
 1180  
                     {
 1181  0
                         parser.nextText();
 1182  
                     }
 1183  
                 }
 1184  0
             }
 1185  0
             else if ( parser.getName().equals( "filtered" )  )
 1186  
             {
 1187  0
                 if ( parsed.contains( "filtered" ) )
 1188  
                 {
 1189  0
                     throw new XmlPullParserException( "Duplicated tag: '" + parser.getName() + "'", parser, null);
 1190  
                 }
 1191  0
                 parsed.add( "filtered" );
 1192  0
                 unpackOptions.setFiltered( getBooleanValue( getTrimmedValue( parser.nextText()), "filtered", parser ) );
 1193  
             }
 1194  
             else
 1195  
             {
 1196  0
                 if ( strict )
 1197  
                 {
 1198  0
                     throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null);
 1199  
                 }
 1200  
             }
 1201  
         }
 1202  0
         return unpackOptions;
 1203  
     } //-- UnpackOptions parseUnpackOptions(String, XmlPullParser, boolean, String) 
 1204  
 
 1205  
     /**
 1206  
      * Method read
 1207  
      * 
 1208  
      * @param reader
 1209  
      * @param strict
 1210  
      */
 1211  
     public Component read(Reader reader, boolean strict)
 1212  
         throws IOException, XmlPullParserException
 1213  
     {
 1214  0
         XmlPullParser parser = new MXParser();
 1215  
         
 1216  0
         parser.setInput( reader );
 1217  
         
 1218  0
         if ( addDefaultEntities ) 
 1219  
         {
 1220  
             // ----------------------------------------------------------------------
 1221  
             // Latin 1 entities
 1222  
             // ----------------------------------------------------------------------
 1223  
             
 1224  0
             parser.defineEntityReplacementText( "nbsp", "\u00a0" ); 
 1225  0
             parser.defineEntityReplacementText( "iexcl", "\u00a1" ); 
 1226  0
             parser.defineEntityReplacementText( "cent", "\u00a2" ); 
 1227  0
             parser.defineEntityReplacementText( "pound", "\u00a3" ); 
 1228  0
             parser.defineEntityReplacementText( "curren", "\u00a4" ); 
 1229  0
             parser.defineEntityReplacementText( "yen", "\u00a5" ); 
 1230  0
             parser.defineEntityReplacementText( "brvbar", "\u00a6" ); 
 1231  0
             parser.defineEntityReplacementText( "sect", "\u00a7" ); 
 1232  0
             parser.defineEntityReplacementText( "uml", "\u00a8" ); 
 1233  0
             parser.defineEntityReplacementText( "copy", "\u00a9" ); 
 1234  0
             parser.defineEntityReplacementText( "ordf", "\u00aa" ); 
 1235  0
             parser.defineEntityReplacementText( "laquo", "\u00ab" ); 
 1236  0
             parser.defineEntityReplacementText( "not", "\u00ac" ); 
 1237  0
             parser.defineEntityReplacementText( "shy", "\u00ad" ); 
 1238  0
             parser.defineEntityReplacementText( "reg", "\u00ae" ); 
 1239  0
             parser.defineEntityReplacementText( "macr", "\u00af" ); 
 1240  0
             parser.defineEntityReplacementText( "deg", "\u00b0" ); 
 1241  0
             parser.defineEntityReplacementText( "plusmn", "\u00b1" ); 
 1242  0
             parser.defineEntityReplacementText( "sup2", "\u00b2" ); 
 1243  0
             parser.defineEntityReplacementText( "sup3", "\u00b3" ); 
 1244  0
             parser.defineEntityReplacementText( "acute", "\u00b4" ); 
 1245  0
             parser.defineEntityReplacementText( "micro", "\u00b5" ); 
 1246  0
             parser.defineEntityReplacementText( "para", "\u00b6" ); 
 1247  0
             parser.defineEntityReplacementText( "middot", "\u00b7" ); 
 1248  0
             parser.defineEntityReplacementText( "cedil", "\u00b8" ); 
 1249  0
             parser.defineEntityReplacementText( "sup1", "\u00b9" ); 
 1250  0
             parser.defineEntityReplacementText( "ordm", "\u00ba" ); 
 1251  0
             parser.defineEntityReplacementText( "raquo", "\u00bb" ); 
 1252  0
             parser.defineEntityReplacementText( "frac14", "\u00bc" ); 
 1253  0
             parser.defineEntityReplacementText( "frac12", "\u00bd" ); 
 1254  0
             parser.defineEntityReplacementText( "frac34", "\u00be" ); 
 1255  0
             parser.defineEntityReplacementText( "iquest", "\u00bf" ); 
 1256  0
             parser.defineEntityReplacementText( "Agrave", "\u00c0" ); 
 1257  0
             parser.defineEntityReplacementText( "Aacute", "\u00c1" ); 
 1258  0
             parser.defineEntityReplacementText( "Acirc", "\u00c2" ); 
 1259  0
             parser.defineEntityReplacementText( "Atilde", "\u00c3" ); 
 1260  0
             parser.defineEntityReplacementText( "Auml", "\u00c4" ); 
 1261  0
             parser.defineEntityReplacementText( "Aring", "\u00c5" ); 
 1262  0
             parser.defineEntityReplacementText( "AElig", "\u00c6" ); 
 1263  0
             parser.defineEntityReplacementText( "Ccedil", "\u00c7" ); 
 1264  0
             parser.defineEntityReplacementText( "Egrave", "\u00c8" ); 
 1265  0
             parser.defineEntityReplacementText( "Eacute", "\u00c9" ); 
 1266  0
             parser.defineEntityReplacementText( "Ecirc", "\u00ca" ); 
 1267  0
             parser.defineEntityReplacementText( "Euml", "\u00cb" ); 
 1268  0
             parser.defineEntityReplacementText( "Igrave", "\u00cc" ); 
 1269  0
             parser.defineEntityReplacementText( "Iacute", "\u00cd" ); 
 1270  0
             parser.defineEntityReplacementText( "Icirc", "\u00ce" ); 
 1271  0
             parser.defineEntityReplacementText( "Iuml", "\u00cf" ); 
 1272  0
             parser.defineEntityReplacementText( "ETH", "\u00d0" ); 
 1273  0
             parser.defineEntityReplacementText( "Ntilde", "\u00d1" ); 
 1274  0
             parser.defineEntityReplacementText( "Ograve", "\u00d2" ); 
 1275  0
             parser.defineEntityReplacementText( "Oacute", "\u00d3" ); 
 1276  0
             parser.defineEntityReplacementText( "Ocirc", "\u00d4" ); 
 1277  0
             parser.defineEntityReplacementText( "Otilde", "\u00d5" ); 
 1278  0
             parser.defineEntityReplacementText( "Ouml", "\u00d6" ); 
 1279  0
             parser.defineEntityReplacementText( "times", "\u00d7" ); 
 1280  0
             parser.defineEntityReplacementText( "Oslash", "\u00d8" ); 
 1281  0
             parser.defineEntityReplacementText( "Ugrave", "\u00d9" ); 
 1282  0
             parser.defineEntityReplacementText( "Uacute", "\u00da" ); 
 1283  0
             parser.defineEntityReplacementText( "Ucirc", "\u00db" ); 
 1284  0
             parser.defineEntityReplacementText( "Uuml", "\u00dc" ); 
 1285  0
             parser.defineEntityReplacementText( "Yacute", "\u00dd" ); 
 1286  0
             parser.defineEntityReplacementText( "THORN", "\u00de" ); 
 1287  0
             parser.defineEntityReplacementText( "szlig", "\u00df" ); 
 1288  0
             parser.defineEntityReplacementText( "agrave", "\u00e0" ); 
 1289  0
             parser.defineEntityReplacementText( "aacute", "\u00e1" ); 
 1290  0
             parser.defineEntityReplacementText( "acirc", "\u00e2" ); 
 1291  0
             parser.defineEntityReplacementText( "atilde", "\u00e3" ); 
 1292  0
             parser.defineEntityReplacementText( "auml", "\u00e4" ); 
 1293  0
             parser.defineEntityReplacementText( "aring", "\u00e5" ); 
 1294  0
             parser.defineEntityReplacementText( "aelig", "\u00e6" ); 
 1295  0
             parser.defineEntityReplacementText( "ccedil", "\u00e7" ); 
 1296  0
             parser.defineEntityReplacementText( "egrave", "\u00e8" ); 
 1297  0
             parser.defineEntityReplacementText( "eacute", "\u00e9" ); 
 1298  0
             parser.defineEntityReplacementText( "ecirc", "\u00ea" ); 
 1299  0
             parser.defineEntityReplacementText( "euml", "\u00eb" ); 
 1300  0
             parser.defineEntityReplacementText( "igrave", "\u00ec" ); 
 1301  0
             parser.defineEntityReplacementText( "iacute", "\u00ed" ); 
 1302  0
             parser.defineEntityReplacementText( "icirc", "\u00ee" ); 
 1303  0
             parser.defineEntityReplacementText( "iuml", "\u00ef" ); 
 1304  0
             parser.defineEntityReplacementText( "eth", "\u00f0" ); 
 1305  0
             parser.defineEntityReplacementText( "ntilde", "\u00f1" ); 
 1306  0
             parser.defineEntityReplacementText( "ograve", "\u00f2" ); 
 1307  0
             parser.defineEntityReplacementText( "oacute", "\u00f3" ); 
 1308  0
             parser.defineEntityReplacementText( "ocirc", "\u00f4" ); 
 1309  0
             parser.defineEntityReplacementText( "otilde", "\u00f5" ); 
 1310  0
             parser.defineEntityReplacementText( "ouml", "\u00f6" ); 
 1311  0
             parser.defineEntityReplacementText( "divide", "\u00f7" ); 
 1312  0
             parser.defineEntityReplacementText( "oslash", "\u00f8" ); 
 1313  0
             parser.defineEntityReplacementText( "ugrave", "\u00f9" ); 
 1314  0
             parser.defineEntityReplacementText( "uacute", "\u00fa" ); 
 1315  0
             parser.defineEntityReplacementText( "ucirc", "\u00fb" ); 
 1316  0
             parser.defineEntityReplacementText( "uuml", "\u00fc" ); 
 1317  0
             parser.defineEntityReplacementText( "yacute", "\u00fd" ); 
 1318  0
             parser.defineEntityReplacementText( "thorn", "\u00fe" ); 
 1319  0
             parser.defineEntityReplacementText( "yuml", "\u00ff" ); 
 1320  
             
 1321  
             // ----------------------------------------------------------------------
 1322  
             // Special entities
 1323  
             // ----------------------------------------------------------------------
 1324  
             
 1325  0
             parser.defineEntityReplacementText( "OElig", "\u0152" ); 
 1326  0
             parser.defineEntityReplacementText( "oelig", "\u0153" ); 
 1327  0
             parser.defineEntityReplacementText( "Scaron", "\u0160" ); 
 1328  0
             parser.defineEntityReplacementText( "scaron", "\u0161" ); 
 1329  0
             parser.defineEntityReplacementText( "Yuml", "\u0178" ); 
 1330  0
             parser.defineEntityReplacementText( "circ", "\u02c6" ); 
 1331  0
             parser.defineEntityReplacementText( "tilde", "\u02dc" ); 
 1332  0
             parser.defineEntityReplacementText( "ensp", "\u2002" ); 
 1333  0
             parser.defineEntityReplacementText( "emsp", "\u2003" ); 
 1334  0
             parser.defineEntityReplacementText( "thinsp", "\u2009" ); 
 1335  0
             parser.defineEntityReplacementText( "zwnj", "\u200c" ); 
 1336  0
             parser.defineEntityReplacementText( "zwj", "\u200d" ); 
 1337  0
             parser.defineEntityReplacementText( "lrm", "\u200e" ); 
 1338  0
             parser.defineEntityReplacementText( "rlm", "\u200f" ); 
 1339  0
             parser.defineEntityReplacementText( "ndash", "\u2013" ); 
 1340  0
             parser.defineEntityReplacementText( "mdash", "\u2014" ); 
 1341  0
             parser.defineEntityReplacementText( "lsquo", "\u2018" ); 
 1342  0
             parser.defineEntityReplacementText( "rsquo", "\u2019" ); 
 1343  0
             parser.defineEntityReplacementText( "sbquo", "\u201a" ); 
 1344  0
             parser.defineEntityReplacementText( "ldquo", "\u201c" ); 
 1345  0
             parser.defineEntityReplacementText( "rdquo", "\u201d" ); 
 1346  0
             parser.defineEntityReplacementText( "bdquo", "\u201e" ); 
 1347  0
             parser.defineEntityReplacementText( "dagger", "\u2020" ); 
 1348  0
             parser.defineEntityReplacementText( "Dagger", "\u2021" ); 
 1349  0
             parser.defineEntityReplacementText( "permil", "\u2030" ); 
 1350  0
             parser.defineEntityReplacementText( "lsaquo", "\u2039" ); 
 1351  0
             parser.defineEntityReplacementText( "rsaquo", "\u203a" ); 
 1352  0
             parser.defineEntityReplacementText( "euro", "\u20ac" ); 
 1353  
             
 1354  
             // ----------------------------------------------------------------------
 1355  
             // Symbol entities
 1356  
             // ----------------------------------------------------------------------
 1357  
             
 1358  0
             parser.defineEntityReplacementText( "fnof", "\u0192" ); 
 1359  0
             parser.defineEntityReplacementText( "Alpha", "\u0391" ); 
 1360  0
             parser.defineEntityReplacementText( "Beta", "\u0392" ); 
 1361  0
             parser.defineEntityReplacementText( "Gamma", "\u0393" ); 
 1362  0
             parser.defineEntityReplacementText( "Delta", "\u0394" ); 
 1363  0
             parser.defineEntityReplacementText( "Epsilon", "\u0395" ); 
 1364  0
             parser.defineEntityReplacementText( "Zeta", "\u0396" ); 
 1365  0
             parser.defineEntityReplacementText( "Eta", "\u0397" ); 
 1366  0
             parser.defineEntityReplacementText( "Theta", "\u0398" ); 
 1367  0
             parser.defineEntityReplacementText( "Iota", "\u0399" ); 
 1368  0
             parser.defineEntityReplacementText( "Kappa", "\u039a" ); 
 1369  0
             parser.defineEntityReplacementText( "Lambda", "\u039b" ); 
 1370  0
             parser.defineEntityReplacementText( "Mu", "\u039c" ); 
 1371  0
             parser.defineEntityReplacementText( "Nu", "\u039d" ); 
 1372  0
             parser.defineEntityReplacementText( "Xi", "\u039e" ); 
 1373  0
             parser.defineEntityReplacementText( "Omicron", "\u039f" ); 
 1374  0
             parser.defineEntityReplacementText( "Pi", "\u03a0" ); 
 1375  0
             parser.defineEntityReplacementText( "Rho", "\u03a1" ); 
 1376  0
             parser.defineEntityReplacementText( "Sigma", "\u03a3" ); 
 1377  0
             parser.defineEntityReplacementText( "Tau", "\u03a4" ); 
 1378  0
             parser.defineEntityReplacementText( "Upsilon", "\u03a5" ); 
 1379  0
             parser.defineEntityReplacementText( "Phi", "\u03a6" ); 
 1380  0
             parser.defineEntityReplacementText( "Chi", "\u03a7" ); 
 1381  0
             parser.defineEntityReplacementText( "Psi", "\u03a8" ); 
 1382  0
             parser.defineEntityReplacementText( "Omega", "\u03a9" ); 
 1383  0
             parser.defineEntityReplacementText( "alpha", "\u03b1" ); 
 1384  0
             parser.defineEntityReplacementText( "beta", "\u03b2" ); 
 1385  0
             parser.defineEntityReplacementText( "gamma", "\u03b3" ); 
 1386  0
             parser.defineEntityReplacementText( "delta", "\u03b4" ); 
 1387  0
             parser.defineEntityReplacementText( "epsilon", "\u03b5" ); 
 1388  0
             parser.defineEntityReplacementText( "zeta", "\u03b6" ); 
 1389  0
             parser.defineEntityReplacementText( "eta", "\u03b7" ); 
 1390  0
             parser.defineEntityReplacementText( "theta", "\u03b8" ); 
 1391  0
             parser.defineEntityReplacementText( "iota", "\u03b9" ); 
 1392  0
             parser.defineEntityReplacementText( "kappa", "\u03ba" ); 
 1393  0
             parser.defineEntityReplacementText( "lambda", "\u03bb" ); 
 1394  0
             parser.defineEntityReplacementText( "mu", "\u03bc" ); 
 1395  0
             parser.defineEntityReplacementText( "nu", "\u03bd" ); 
 1396  0
             parser.defineEntityReplacementText( "xi", "\u03be" ); 
 1397  0
             parser.defineEntityReplacementText( "omicron", "\u03bf" ); 
 1398  0
             parser.defineEntityReplacementText( "pi", "\u03c0" ); 
 1399  0
             parser.defineEntityReplacementText( "rho", "\u03c1" ); 
 1400  0
             parser.defineEntityReplacementText( "sigmaf", "\u03c2" ); 
 1401  0
             parser.defineEntityReplacementText( "sigma", "\u03c3" ); 
 1402  0
             parser.defineEntityReplacementText( "tau", "\u03c4" ); 
 1403  0
             parser.defineEntityReplacementText( "upsilon", "\u03c5" ); 
 1404  0
             parser.defineEntityReplacementText( "phi", "\u03c6" ); 
 1405  0
             parser.defineEntityReplacementText( "chi", "\u03c7" ); 
 1406  0
             parser.defineEntityReplacementText( "psi", "\u03c8" ); 
 1407  0
             parser.defineEntityReplacementText( "omega", "\u03c9" ); 
 1408  0
             parser.defineEntityReplacementText( "thetasym", "\u03d1" ); 
 1409  0
             parser.defineEntityReplacementText( "upsih", "\u03d2" ); 
 1410  0
             parser.defineEntityReplacementText( "piv", "\u03d6" ); 
 1411  0
             parser.defineEntityReplacementText( "bull", "\u2022" ); 
 1412  0
             parser.defineEntityReplacementText( "hellip", "\u2026" ); 
 1413  0
             parser.defineEntityReplacementText( "prime", "\u2032" ); 
 1414  0
             parser.defineEntityReplacementText( "Prime", "\u2033" ); 
 1415  0
             parser.defineEntityReplacementText( "oline", "\u203e" ); 
 1416  0
             parser.defineEntityReplacementText( "frasl", "\u2044" ); 
 1417  0
             parser.defineEntityReplacementText( "weierp", "\u2118" ); 
 1418  0
             parser.defineEntityReplacementText( "image", "\u2111" ); 
 1419  0
             parser.defineEntityReplacementText( "real", "\u211c" ); 
 1420  0
             parser.defineEntityReplacementText( "trade", "\u2122" ); 
 1421  0
             parser.defineEntityReplacementText( "alefsym", "\u2135" ); 
 1422  0
             parser.defineEntityReplacementText( "larr", "\u2190" ); 
 1423  0
             parser.defineEntityReplacementText( "uarr", "\u2191" ); 
 1424  0
             parser.defineEntityReplacementText( "rarr", "\u2192" ); 
 1425  0
             parser.defineEntityReplacementText( "darr", "\u2193" ); 
 1426  0
             parser.defineEntityReplacementText( "harr", "\u2194" ); 
 1427  0
             parser.defineEntityReplacementText( "crarr", "\u21b5" ); 
 1428  0
             parser.defineEntityReplacementText( "lArr", "\u21d0" ); 
 1429  0
             parser.defineEntityReplacementText( "uArr", "\u21d1" ); 
 1430  0
             parser.defineEntityReplacementText( "rArr", "\u21d2" ); 
 1431  0
             parser.defineEntityReplacementText( "dArr", "\u21d3" ); 
 1432  0
             parser.defineEntityReplacementText( "hArr", "\u21d4" ); 
 1433  0
             parser.defineEntityReplacementText( "forall", "\u2200" ); 
 1434  0
             parser.defineEntityReplacementText( "part", "\u2202" ); 
 1435  0
             parser.defineEntityReplacementText( "exist", "\u2203" ); 
 1436  0
             parser.defineEntityReplacementText( "empty", "\u2205" ); 
 1437  0
             parser.defineEntityReplacementText( "nabla", "\u2207" ); 
 1438  0
             parser.defineEntityReplacementText( "isin", "\u2208" ); 
 1439  0
             parser.defineEntityReplacementText( "notin", "\u2209" ); 
 1440  0
             parser.defineEntityReplacementText( "ni", "\u220b" ); 
 1441  0
             parser.defineEntityReplacementText( "prod", "\u220f" ); 
 1442  0
             parser.defineEntityReplacementText( "sum", "\u2211" ); 
 1443  0
             parser.defineEntityReplacementText( "minus", "\u2212" ); 
 1444  0
             parser.defineEntityReplacementText( "lowast", "\u2217" ); 
 1445  0
             parser.defineEntityReplacementText( "radic", "\u221a" ); 
 1446  0
             parser.defineEntityReplacementText( "prop", "\u221d" ); 
 1447  0
             parser.defineEntityReplacementText( "infin", "\u221e" ); 
 1448  0
             parser.defineEntityReplacementText( "ang", "\u2220" ); 
 1449  0
             parser.defineEntityReplacementText( "and", "\u2227" ); 
 1450  0
             parser.defineEntityReplacementText( "or", "\u2228" ); 
 1451  0
             parser.defineEntityReplacementText( "cap", "\u2229" ); 
 1452  0
             parser.defineEntityReplacementText( "cup", "\u222a" ); 
 1453  0
             parser.defineEntityReplacementText( "int", "\u222b" ); 
 1454  0
             parser.defineEntityReplacementText( "there4", "\u2234" ); 
 1455  0
             parser.defineEntityReplacementText( "sim", "\u223c" ); 
 1456  0
             parser.defineEntityReplacementText( "cong", "\u2245" ); 
 1457  0
             parser.defineEntityReplacementText( "asymp", "\u2248" ); 
 1458  0
             parser.defineEntityReplacementText( "ne", "\u2260" ); 
 1459  0
             parser.defineEntityReplacementText( "equiv", "\u2261" ); 
 1460  0
             parser.defineEntityReplacementText( "le", "\u2264" ); 
 1461  0
             parser.defineEntityReplacementText( "ge", "\u2265" ); 
 1462  0
             parser.defineEntityReplacementText( "sub", "\u2282" ); 
 1463  0
             parser.defineEntityReplacementText( "sup", "\u2283" ); 
 1464  0
             parser.defineEntityReplacementText( "nsub", "\u2284" ); 
 1465  0
             parser.defineEntityReplacementText( "sube", "\u2286" ); 
 1466  0
             parser.defineEntityReplacementText( "supe", "\u2287" ); 
 1467  0
             parser.defineEntityReplacementText( "oplus", "\u2295" ); 
 1468  0
             parser.defineEntityReplacementText( "otimes", "\u2297" ); 
 1469  0
             parser.defineEntityReplacementText( "perp", "\u22a5" ); 
 1470  0
             parser.defineEntityReplacementText( "sdot", "\u22c5" ); 
 1471  0
             parser.defineEntityReplacementText( "lceil", "\u2308" ); 
 1472  0
             parser.defineEntityReplacementText( "rceil", "\u2309" ); 
 1473  0
             parser.defineEntityReplacementText( "lfloor", "\u230a" ); 
 1474  0
             parser.defineEntityReplacementText( "rfloor", "\u230b" ); 
 1475  0
             parser.defineEntityReplacementText( "lang", "\u2329" ); 
 1476  0
             parser.defineEntityReplacementText( "rang", "\u232a" ); 
 1477  0
             parser.defineEntityReplacementText( "loz", "\u25ca" ); 
 1478  0
             parser.defineEntityReplacementText( "spades", "\u2660" ); 
 1479  0
             parser.defineEntityReplacementText( "clubs", "\u2663" ); 
 1480  0
             parser.defineEntityReplacementText( "hearts", "\u2665" ); 
 1481  0
             parser.defineEntityReplacementText( "diams", "\u2666" ); 
 1482  
             
 1483  
         }
 1484  
         
 1485  0
         parser.next();
 1486  0
         String encoding = parser.getInputEncoding();
 1487  
         
 1488  0
         return parseComponent( "component", parser, strict, encoding );
 1489  
     } //-- Component read(Reader, boolean) 
 1490  
 
 1491  
     /**
 1492  
      * Method read
 1493  
      * 
 1494  
      * @param reader
 1495  
      */
 1496  
     public Component read(Reader reader)
 1497  
         throws IOException, XmlPullParserException
 1498  
     {
 1499  0
         return read( reader, true );
 1500  
     } //-- Component read(Reader) 
 1501  
 
 1502  
     /**
 1503  
      * Returns the state of the "add default entities" flag.
 1504  
      * 
 1505  
      * @param addDefaultEntities
 1506  
      */
 1507  
     public void setAddDefaultEntities(boolean addDefaultEntities)
 1508  
     {
 1509  0
         this.addDefaultEntities = addDefaultEntities;
 1510  0
     } //-- void setAddDefaultEntities(boolean) 
 1511  
 
 1512  
 }