View Javadoc

1   /*
2    =================== DO NOT EDIT THIS FILE ====================
3    Generated by Modello 1.4.1 on 2012-01-20 18:09:18,
4    any modifications will be overwritten.
5    ==============================================================
6    */
7   
8   package org.apache.maven.model.io.xpp3;
9   
10    //---------------------------------/
11   //- Imported classes and packages -/
12  //---------------------------------/
13  
14  import java.io.IOException;
15  import java.io.InputStream;
16  import java.io.Reader;
17  import java.text.DateFormat;
18  import java.util.Locale;
19  import org.apache.maven.model.Activation;
20  import org.apache.maven.model.ActivationFile;
21  import org.apache.maven.model.ActivationOS;
22  import org.apache.maven.model.ActivationProperty;
23  import org.apache.maven.model.Build;
24  import org.apache.maven.model.BuildBase;
25  import org.apache.maven.model.CiManagement;
26  import org.apache.maven.model.ConfigurationContainer;
27  import org.apache.maven.model.Contributor;
28  import org.apache.maven.model.Dependency;
29  import org.apache.maven.model.DependencyManagement;
30  import org.apache.maven.model.DeploymentRepository;
31  import org.apache.maven.model.Developer;
32  import org.apache.maven.model.DistributionManagement;
33  import org.apache.maven.model.Exclusion;
34  import org.apache.maven.model.Extension;
35  import org.apache.maven.model.FileSet;
36  import org.apache.maven.model.InputLocation;
37  import org.apache.maven.model.InputSource;
38  import org.apache.maven.model.IssueManagement;
39  import org.apache.maven.model.License;
40  import org.apache.maven.model.MailingList;
41  import org.apache.maven.model.Model;
42  import org.apache.maven.model.ModelBase;
43  import org.apache.maven.model.Notifier;
44  import org.apache.maven.model.Organization;
45  import org.apache.maven.model.Parent;
46  import org.apache.maven.model.PatternSet;
47  import org.apache.maven.model.Plugin;
48  import org.apache.maven.model.PluginConfiguration;
49  import org.apache.maven.model.PluginContainer;
50  import org.apache.maven.model.PluginExecution;
51  import org.apache.maven.model.PluginManagement;
52  import org.apache.maven.model.Prerequisites;
53  import org.apache.maven.model.Profile;
54  import org.apache.maven.model.Relocation;
55  import org.apache.maven.model.ReportPlugin;
56  import org.apache.maven.model.ReportSet;
57  import org.apache.maven.model.Reporting;
58  import org.apache.maven.model.Repository;
59  import org.apache.maven.model.RepositoryBase;
60  import org.apache.maven.model.RepositoryPolicy;
61  import org.apache.maven.model.Resource;
62  import org.apache.maven.model.Scm;
63  import org.apache.maven.model.Site;
64  import org.codehaus.plexus.util.ReaderFactory;
65  import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
66  import org.codehaus.plexus.util.xml.pull.MXParser;
67  import org.codehaus.plexus.util.xml.pull.XmlPullParser;
68  import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
69  
70  /**
71   * Class MavenXpp3ReaderEx.
72   * 
73   * @version $Revision$ $Date$
74   */
75  @SuppressWarnings( "all" )
76  public class MavenXpp3ReaderEx
77  {
78  
79        //--------------------------/
80       //- Class/Member Variables -/
81      //--------------------------/
82  
83      /**
84       * If set the parser will be loaded with all single characters
85       * from the XHTML specification.
86       * The entities used:
87       * <ul>
88       * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent</li>
89       * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent</li>
90       * <li>http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent</li>
91       * </ul>
92       */
93      private boolean addDefaultEntities = true;
94  
95  
96        //-----------/
97       //- Methods -/
98      //-----------/
99  
100     /**
101      * Method checkFieldWithDuplicate.
102      * 
103      * @param parser
104      * @param parsed
105      * @param alias
106      * @param tagName
107      * @throws XmlPullParserException
108      * @return boolean
109      */
110     private boolean checkFieldWithDuplicate( XmlPullParser parser, String tagName, String alias, java.util.Set parsed )
111         throws XmlPullParserException
112     {
113         if ( !( parser.getName().equals( tagName ) || parser.getName().equals( alias ) ) )
114         {
115             return false;
116         }
117         if ( !parsed.add( tagName ) )
118         {
119             throw new XmlPullParserException( "Duplicated tag: '" + tagName + "'", parser, null );
120         }
121         return true;
122     } //-- boolean checkFieldWithDuplicate( XmlPullParser, String, String, java.util.Set )
123 
124     /**
125      * Method checkUnknownAttribute.
126      * 
127      * @param parser
128      * @param strict
129      * @param tagName
130      * @param attribute
131      * @throws XmlPullParserException
132      * @throws IOException
133      */
134     private void checkUnknownAttribute( XmlPullParser parser, String attribute, String tagName, boolean strict )
135         throws XmlPullParserException, IOException
136     {
137         // strictXmlAttributes = true for model: if strict == true, not only elements are checked but attributes too
138         if ( strict )
139         {
140             throw new XmlPullParserException( "Unknown attribute '" + attribute + "' for tag '" + tagName + "'", parser, null );
141         }
142     } //-- void checkUnknownAttribute( XmlPullParser, String, String, boolean )
143 
144     /**
145      * Method checkUnknownElement.
146      * 
147      * @param parser
148      * @param strict
149      * @throws XmlPullParserException
150      * @throws IOException
151      */
152     private void checkUnknownElement( XmlPullParser parser, boolean strict )
153         throws XmlPullParserException, IOException
154     {
155         if ( strict )
156         {
157             throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
158         }
159 
160         for ( int unrecognizedTagCount = 1; unrecognizedTagCount > 0; )
161         {
162             int eventType = parser.next();
163             if ( eventType == XmlPullParser.START_TAG )
164             {
165                 unrecognizedTagCount++;
166             }
167             else if ( eventType == XmlPullParser.END_TAG )
168             {
169                 unrecognizedTagCount--;
170             }
171         }
172     } //-- void checkUnknownElement( XmlPullParser, boolean )
173 
174     /**
175      * Returns the state of the "add default entities" flag.
176      * 
177      * @return boolean
178      */
179     public boolean getAddDefaultEntities()
180     {
181         return addDefaultEntities;
182     } //-- boolean getAddDefaultEntities()
183 
184     /**
185      * Method getBooleanValue.
186      * 
187      * @param s
188      * @param parser
189      * @param attribute
190      * @throws XmlPullParserException
191      * @return boolean
192      */
193     private boolean getBooleanValue( String s, String attribute, XmlPullParser parser )
194         throws XmlPullParserException
195     {
196         return getBooleanValue( s, attribute, parser, null );
197     } //-- boolean getBooleanValue( String, String, XmlPullParser )
198 
199     /**
200      * Method getBooleanValue.
201      * 
202      * @param s
203      * @param defaultValue
204      * @param parser
205      * @param attribute
206      * @throws XmlPullParserException
207      * @return boolean
208      */
209     private boolean getBooleanValue( String s, String attribute, XmlPullParser parser, String defaultValue )
210         throws XmlPullParserException
211     {
212         if ( s != null && s.length() != 0 )
213         {
214             return Boolean.valueOf( s ).booleanValue();
215         }
216         if ( defaultValue != null )
217         {
218             return Boolean.valueOf( defaultValue ).booleanValue();
219         }
220         return false;
221     } //-- boolean getBooleanValue( String, String, XmlPullParser, String )
222 
223     /**
224      * Method getByteValue.
225      * 
226      * @param s
227      * @param strict
228      * @param parser
229      * @param attribute
230      * @throws XmlPullParserException
231      * @return byte
232      */
233     private byte getByteValue( String s, String attribute, XmlPullParser parser, boolean strict )
234         throws XmlPullParserException
235     {
236         if ( s != null )
237         {
238             try
239             {
240                 return Byte.valueOf( s ).byteValue();
241             }
242             catch ( NumberFormatException nfe )
243             {
244                 if ( strict )
245                 {
246                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a byte", parser, nfe );
247                 }
248             }
249         }
250         return 0;
251     } //-- byte getByteValue( String, String, XmlPullParser, boolean )
252 
253     /**
254      * Method getCharacterValue.
255      * 
256      * @param s
257      * @param parser
258      * @param attribute
259      * @throws XmlPullParserException
260      * @return char
261      */
262     private char getCharacterValue( String s, String attribute, XmlPullParser parser )
263         throws XmlPullParserException
264     {
265         if ( s != null )
266         {
267             return s.charAt( 0 );
268         }
269         return 0;
270     } //-- char getCharacterValue( String, String, XmlPullParser )
271 
272     /**
273      * Method getDateValue.
274      * 
275      * @param s
276      * @param parser
277      * @param attribute
278      * @throws XmlPullParserException
279      * @return Date
280      */
281     private java.util.Date getDateValue( String s, String attribute, XmlPullParser parser )
282         throws XmlPullParserException
283     {
284         return getDateValue( s, attribute, null, parser );
285     } //-- java.util.Date getDateValue( String, String, XmlPullParser )
286 
287     /**
288      * Method getDateValue.
289      * 
290      * @param s
291      * @param parser
292      * @param dateFormat
293      * @param attribute
294      * @throws XmlPullParserException
295      * @return Date
296      */
297     private java.util.Date getDateValue( String s, String attribute, String dateFormat, XmlPullParser parser )
298         throws XmlPullParserException
299     {
300         if ( s != null )
301         {
302             String effectiveDateFormat = dateFormat;
303             if ( dateFormat == null )
304             {
305                 effectiveDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS";
306             }
307             if ( "long".equals( effectiveDateFormat ) )
308             {
309                 try
310                 {
311                     return new java.util.Date( Long.parseLong( s ) );
312                 }
313                 catch ( NumberFormatException e )
314                 {
315                     throw new XmlPullParserException( e.getMessage(), parser, e );
316                 }
317             }
318             else
319             {
320                 try
321                 {
322                     DateFormat dateParser = new java.text.SimpleDateFormat( effectiveDateFormat, Locale.US );
323                     return dateParser.parse( s );
324                 }
325                 catch ( java.text.ParseException e )
326                 {
327                     throw new XmlPullParserException( e.getMessage(), parser, e );
328                 }
329             }
330         }
331         return null;
332     } //-- java.util.Date getDateValue( String, String, String, XmlPullParser )
333 
334     /**
335      * Method getDoubleValue.
336      * 
337      * @param s
338      * @param strict
339      * @param parser
340      * @param attribute
341      * @throws XmlPullParserException
342      * @return double
343      */
344     private double getDoubleValue( String s, String attribute, XmlPullParser parser, boolean strict )
345         throws XmlPullParserException
346     {
347         if ( s != null )
348         {
349             try
350             {
351                 return Double.valueOf( s ).doubleValue();
352             }
353             catch ( NumberFormatException nfe )
354             {
355                 if ( strict )
356                 {
357                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, nfe );
358                 }
359             }
360         }
361         return 0;
362     } //-- double getDoubleValue( String, String, XmlPullParser, boolean )
363 
364     /**
365      * Method getFloatValue.
366      * 
367      * @param s
368      * @param strict
369      * @param parser
370      * @param attribute
371      * @throws XmlPullParserException
372      * @return float
373      */
374     private float getFloatValue( String s, String attribute, XmlPullParser parser, boolean strict )
375         throws XmlPullParserException
376     {
377         if ( s != null )
378         {
379             try
380             {
381                 return Float.valueOf( s ).floatValue();
382             }
383             catch ( NumberFormatException nfe )
384             {
385                 if ( strict )
386                 {
387                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, nfe );
388                 }
389             }
390         }
391         return 0;
392     } //-- float getFloatValue( String, String, XmlPullParser, boolean )
393 
394     /**
395      * Method getIntegerValue.
396      * 
397      * @param s
398      * @param strict
399      * @param parser
400      * @param attribute
401      * @throws XmlPullParserException
402      * @return int
403      */
404     private int getIntegerValue( String s, String attribute, XmlPullParser parser, boolean strict )
405         throws XmlPullParserException
406     {
407         if ( s != null )
408         {
409             try
410             {
411                 return Integer.valueOf( s ).intValue();
412             }
413             catch ( NumberFormatException nfe )
414             {
415                 if ( strict )
416                 {
417                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be an integer", parser, nfe );
418                 }
419             }
420         }
421         return 0;
422     } //-- int getIntegerValue( String, String, XmlPullParser, boolean )
423 
424     /**
425      * Method getLongValue.
426      * 
427      * @param s
428      * @param strict
429      * @param parser
430      * @param attribute
431      * @throws XmlPullParserException
432      * @return long
433      */
434     private long getLongValue( String s, String attribute, XmlPullParser parser, boolean strict )
435         throws XmlPullParserException
436     {
437         if ( s != null )
438         {
439             try
440             {
441                 return Long.valueOf( s ).longValue();
442             }
443             catch ( NumberFormatException nfe )
444             {
445                 if ( strict )
446                 {
447                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a long integer", parser, nfe );
448                 }
449             }
450         }
451         return 0;
452     } //-- long getLongValue( String, String, XmlPullParser, boolean )
453 
454     /**
455      * Method getRequiredAttributeValue.
456      * 
457      * @param s
458      * @param strict
459      * @param parser
460      * @param attribute
461      * @throws XmlPullParserException
462      * @return String
463      */
464     private String getRequiredAttributeValue( String s, String attribute, XmlPullParser parser, boolean strict )
465         throws XmlPullParserException
466     {
467         if ( s == null )
468         {
469             if ( strict )
470             {
471                 throw new XmlPullParserException( "Missing required value for attribute '" + attribute + "'", parser, null );
472             }
473         }
474         return s;
475     } //-- String getRequiredAttributeValue( String, String, XmlPullParser, boolean )
476 
477     /**
478      * Method getShortValue.
479      * 
480      * @param s
481      * @param strict
482      * @param parser
483      * @param attribute
484      * @throws XmlPullParserException
485      * @return short
486      */
487     private short getShortValue( String s, String attribute, XmlPullParser parser, boolean strict )
488         throws XmlPullParserException
489     {
490         if ( s != null )
491         {
492             try
493             {
494                 return Short.valueOf( s ).shortValue();
495             }
496             catch ( NumberFormatException nfe )
497             {
498                 if ( strict )
499                 {
500                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a short integer", parser, nfe );
501                 }
502             }
503         }
504         return 0;
505     } //-- short getShortValue( String, String, XmlPullParser, boolean )
506 
507     /**
508      * Method getTrimmedValue.
509      * 
510      * @param s
511      * @return String
512      */
513     private String getTrimmedValue( String s )
514     {
515         if ( s != null )
516         {
517             s = s.trim();
518         }
519         return s;
520     } //-- String getTrimmedValue( String )
521 
522     /**
523      * Method initParser.
524      * 
525      * @param parser
526      * @throws XmlPullParserException
527      */
528     private void initParser( XmlPullParser parser )
529         throws XmlPullParserException
530     {
531         if ( addDefaultEntities )
532         {
533             // ----------------------------------------------------------------------
534             // Latin 1 entities
535             // ----------------------------------------------------------------------
536 
537             parser.defineEntityReplacementText( "nbsp", "\u00a0" );
538             parser.defineEntityReplacementText( "iexcl", "\u00a1" );
539             parser.defineEntityReplacementText( "cent", "\u00a2" );
540             parser.defineEntityReplacementText( "pound", "\u00a3" );
541             parser.defineEntityReplacementText( "curren", "\u00a4" );
542             parser.defineEntityReplacementText( "yen", "\u00a5" );
543             parser.defineEntityReplacementText( "brvbar", "\u00a6" );
544             parser.defineEntityReplacementText( "sect", "\u00a7" );
545             parser.defineEntityReplacementText( "uml", "\u00a8" );
546             parser.defineEntityReplacementText( "copy", "\u00a9" );
547             parser.defineEntityReplacementText( "ordf", "\u00aa" );
548             parser.defineEntityReplacementText( "laquo", "\u00ab" );
549             parser.defineEntityReplacementText( "not", "\u00ac" );
550             parser.defineEntityReplacementText( "shy", "\u00ad" );
551             parser.defineEntityReplacementText( "reg", "\u00ae" );
552             parser.defineEntityReplacementText( "macr", "\u00af" );
553             parser.defineEntityReplacementText( "deg", "\u00b0" );
554             parser.defineEntityReplacementText( "plusmn", "\u00b1" );
555             parser.defineEntityReplacementText( "sup2", "\u00b2" );
556             parser.defineEntityReplacementText( "sup3", "\u00b3" );
557             parser.defineEntityReplacementText( "acute", "\u00b4" );
558             parser.defineEntityReplacementText( "micro", "\u00b5" );
559             parser.defineEntityReplacementText( "para", "\u00b6" );
560             parser.defineEntityReplacementText( "middot", "\u00b7" );
561             parser.defineEntityReplacementText( "cedil", "\u00b8" );
562             parser.defineEntityReplacementText( "sup1", "\u00b9" );
563             parser.defineEntityReplacementText( "ordm", "\u00ba" );
564             parser.defineEntityReplacementText( "raquo", "\u00bb" );
565             parser.defineEntityReplacementText( "frac14", "\u00bc" );
566             parser.defineEntityReplacementText( "frac12", "\u00bd" );
567             parser.defineEntityReplacementText( "frac34", "\u00be" );
568             parser.defineEntityReplacementText( "iquest", "\u00bf" );
569             parser.defineEntityReplacementText( "Agrave", "\u00c0" );
570             parser.defineEntityReplacementText( "Aacute", "\u00c1" );
571             parser.defineEntityReplacementText( "Acirc", "\u00c2" );
572             parser.defineEntityReplacementText( "Atilde", "\u00c3" );
573             parser.defineEntityReplacementText( "Auml", "\u00c4" );
574             parser.defineEntityReplacementText( "Aring", "\u00c5" );
575             parser.defineEntityReplacementText( "AElig", "\u00c6" );
576             parser.defineEntityReplacementText( "Ccedil", "\u00c7" );
577             parser.defineEntityReplacementText( "Egrave", "\u00c8" );
578             parser.defineEntityReplacementText( "Eacute", "\u00c9" );
579             parser.defineEntityReplacementText( "Ecirc", "\u00ca" );
580             parser.defineEntityReplacementText( "Euml", "\u00cb" );
581             parser.defineEntityReplacementText( "Igrave", "\u00cc" );
582             parser.defineEntityReplacementText( "Iacute", "\u00cd" );
583             parser.defineEntityReplacementText( "Icirc", "\u00ce" );
584             parser.defineEntityReplacementText( "Iuml", "\u00cf" );
585             parser.defineEntityReplacementText( "ETH", "\u00d0" );
586             parser.defineEntityReplacementText( "Ntilde", "\u00d1" );
587             parser.defineEntityReplacementText( "Ograve", "\u00d2" );
588             parser.defineEntityReplacementText( "Oacute", "\u00d3" );
589             parser.defineEntityReplacementText( "Ocirc", "\u00d4" );
590             parser.defineEntityReplacementText( "Otilde", "\u00d5" );
591             parser.defineEntityReplacementText( "Ouml", "\u00d6" );
592             parser.defineEntityReplacementText( "times", "\u00d7" );
593             parser.defineEntityReplacementText( "Oslash", "\u00d8" );
594             parser.defineEntityReplacementText( "Ugrave", "\u00d9" );
595             parser.defineEntityReplacementText( "Uacute", "\u00da" );
596             parser.defineEntityReplacementText( "Ucirc", "\u00db" );
597             parser.defineEntityReplacementText( "Uuml", "\u00dc" );
598             parser.defineEntityReplacementText( "Yacute", "\u00dd" );
599             parser.defineEntityReplacementText( "THORN", "\u00de" );
600             parser.defineEntityReplacementText( "szlig", "\u00df" );
601             parser.defineEntityReplacementText( "agrave", "\u00e0" );
602             parser.defineEntityReplacementText( "aacute", "\u00e1" );
603             parser.defineEntityReplacementText( "acirc", "\u00e2" );
604             parser.defineEntityReplacementText( "atilde", "\u00e3" );
605             parser.defineEntityReplacementText( "auml", "\u00e4" );
606             parser.defineEntityReplacementText( "aring", "\u00e5" );
607             parser.defineEntityReplacementText( "aelig", "\u00e6" );
608             parser.defineEntityReplacementText( "ccedil", "\u00e7" );
609             parser.defineEntityReplacementText( "egrave", "\u00e8" );
610             parser.defineEntityReplacementText( "eacute", "\u00e9" );
611             parser.defineEntityReplacementText( "ecirc", "\u00ea" );
612             parser.defineEntityReplacementText( "euml", "\u00eb" );
613             parser.defineEntityReplacementText( "igrave", "\u00ec" );
614             parser.defineEntityReplacementText( "iacute", "\u00ed" );
615             parser.defineEntityReplacementText( "icirc", "\u00ee" );
616             parser.defineEntityReplacementText( "iuml", "\u00ef" );
617             parser.defineEntityReplacementText( "eth", "\u00f0" );
618             parser.defineEntityReplacementText( "ntilde", "\u00f1" );
619             parser.defineEntityReplacementText( "ograve", "\u00f2" );
620             parser.defineEntityReplacementText( "oacute", "\u00f3" );
621             parser.defineEntityReplacementText( "ocirc", "\u00f4" );
622             parser.defineEntityReplacementText( "otilde", "\u00f5" );
623             parser.defineEntityReplacementText( "ouml", "\u00f6" );
624             parser.defineEntityReplacementText( "divide", "\u00f7" );
625             parser.defineEntityReplacementText( "oslash", "\u00f8" );
626             parser.defineEntityReplacementText( "ugrave", "\u00f9" );
627             parser.defineEntityReplacementText( "uacute", "\u00fa" );
628             parser.defineEntityReplacementText( "ucirc", "\u00fb" );
629             parser.defineEntityReplacementText( "uuml", "\u00fc" );
630             parser.defineEntityReplacementText( "yacute", "\u00fd" );
631             parser.defineEntityReplacementText( "thorn", "\u00fe" );
632             parser.defineEntityReplacementText( "yuml", "\u00ff" );
633 
634             // ----------------------------------------------------------------------
635             // Special entities
636             // ----------------------------------------------------------------------
637 
638             parser.defineEntityReplacementText( "OElig", "\u0152" );
639             parser.defineEntityReplacementText( "oelig", "\u0153" );
640             parser.defineEntityReplacementText( "Scaron", "\u0160" );
641             parser.defineEntityReplacementText( "scaron", "\u0161" );
642             parser.defineEntityReplacementText( "Yuml", "\u0178" );
643             parser.defineEntityReplacementText( "circ", "\u02c6" );
644             parser.defineEntityReplacementText( "tilde", "\u02dc" );
645             parser.defineEntityReplacementText( "ensp", "\u2002" );
646             parser.defineEntityReplacementText( "emsp", "\u2003" );
647             parser.defineEntityReplacementText( "thinsp", "\u2009" );
648             parser.defineEntityReplacementText( "zwnj", "\u200c" );
649             parser.defineEntityReplacementText( "zwj", "\u200d" );
650             parser.defineEntityReplacementText( "lrm", "\u200e" );
651             parser.defineEntityReplacementText( "rlm", "\u200f" );
652             parser.defineEntityReplacementText( "ndash", "\u2013" );
653             parser.defineEntityReplacementText( "mdash", "\u2014" );
654             parser.defineEntityReplacementText( "lsquo", "\u2018" );
655             parser.defineEntityReplacementText( "rsquo", "\u2019" );
656             parser.defineEntityReplacementText( "sbquo", "\u201a" );
657             parser.defineEntityReplacementText( "ldquo", "\u201c" );
658             parser.defineEntityReplacementText( "rdquo", "\u201d" );
659             parser.defineEntityReplacementText( "bdquo", "\u201e" );
660             parser.defineEntityReplacementText( "dagger", "\u2020" );
661             parser.defineEntityReplacementText( "Dagger", "\u2021" );
662             parser.defineEntityReplacementText( "permil", "\u2030" );
663             parser.defineEntityReplacementText( "lsaquo", "\u2039" );
664             parser.defineEntityReplacementText( "rsaquo", "\u203a" );
665             parser.defineEntityReplacementText( "euro", "\u20ac" );
666 
667             // ----------------------------------------------------------------------
668             // Symbol entities
669             // ----------------------------------------------------------------------
670 
671             parser.defineEntityReplacementText( "fnof", "\u0192" );
672             parser.defineEntityReplacementText( "Alpha", "\u0391" );
673             parser.defineEntityReplacementText( "Beta", "\u0392" );
674             parser.defineEntityReplacementText( "Gamma", "\u0393" );
675             parser.defineEntityReplacementText( "Delta", "\u0394" );
676             parser.defineEntityReplacementText( "Epsilon", "\u0395" );
677             parser.defineEntityReplacementText( "Zeta", "\u0396" );
678             parser.defineEntityReplacementText( "Eta", "\u0397" );
679             parser.defineEntityReplacementText( "Theta", "\u0398" );
680             parser.defineEntityReplacementText( "Iota", "\u0399" );
681             parser.defineEntityReplacementText( "Kappa", "\u039a" );
682             parser.defineEntityReplacementText( "Lambda", "\u039b" );
683             parser.defineEntityReplacementText( "Mu", "\u039c" );
684             parser.defineEntityReplacementText( "Nu", "\u039d" );
685             parser.defineEntityReplacementText( "Xi", "\u039e" );
686             parser.defineEntityReplacementText( "Omicron", "\u039f" );
687             parser.defineEntityReplacementText( "Pi", "\u03a0" );
688             parser.defineEntityReplacementText( "Rho", "\u03a1" );
689             parser.defineEntityReplacementText( "Sigma", "\u03a3" );
690             parser.defineEntityReplacementText( "Tau", "\u03a4" );
691             parser.defineEntityReplacementText( "Upsilon", "\u03a5" );
692             parser.defineEntityReplacementText( "Phi", "\u03a6" );
693             parser.defineEntityReplacementText( "Chi", "\u03a7" );
694             parser.defineEntityReplacementText( "Psi", "\u03a8" );
695             parser.defineEntityReplacementText( "Omega", "\u03a9" );
696             parser.defineEntityReplacementText( "alpha", "\u03b1" );
697             parser.defineEntityReplacementText( "beta", "\u03b2" );
698             parser.defineEntityReplacementText( "gamma", "\u03b3" );
699             parser.defineEntityReplacementText( "delta", "\u03b4" );
700             parser.defineEntityReplacementText( "epsilon", "\u03b5" );
701             parser.defineEntityReplacementText( "zeta", "\u03b6" );
702             parser.defineEntityReplacementText( "eta", "\u03b7" );
703             parser.defineEntityReplacementText( "theta", "\u03b8" );
704             parser.defineEntityReplacementText( "iota", "\u03b9" );
705             parser.defineEntityReplacementText( "kappa", "\u03ba" );
706             parser.defineEntityReplacementText( "lambda", "\u03bb" );
707             parser.defineEntityReplacementText( "mu", "\u03bc" );
708             parser.defineEntityReplacementText( "nu", "\u03bd" );
709             parser.defineEntityReplacementText( "xi", "\u03be" );
710             parser.defineEntityReplacementText( "omicron", "\u03bf" );
711             parser.defineEntityReplacementText( "pi", "\u03c0" );
712             parser.defineEntityReplacementText( "rho", "\u03c1" );
713             parser.defineEntityReplacementText( "sigmaf", "\u03c2" );
714             parser.defineEntityReplacementText( "sigma", "\u03c3" );
715             parser.defineEntityReplacementText( "tau", "\u03c4" );
716             parser.defineEntityReplacementText( "upsilon", "\u03c5" );
717             parser.defineEntityReplacementText( "phi", "\u03c6" );
718             parser.defineEntityReplacementText( "chi", "\u03c7" );
719             parser.defineEntityReplacementText( "psi", "\u03c8" );
720             parser.defineEntityReplacementText( "omega", "\u03c9" );
721             parser.defineEntityReplacementText( "thetasym", "\u03d1" );
722             parser.defineEntityReplacementText( "upsih", "\u03d2" );
723             parser.defineEntityReplacementText( "piv", "\u03d6" );
724             parser.defineEntityReplacementText( "bull", "\u2022" );
725             parser.defineEntityReplacementText( "hellip", "\u2026" );
726             parser.defineEntityReplacementText( "prime", "\u2032" );
727             parser.defineEntityReplacementText( "Prime", "\u2033" );
728             parser.defineEntityReplacementText( "oline", "\u203e" );
729             parser.defineEntityReplacementText( "frasl", "\u2044" );
730             parser.defineEntityReplacementText( "weierp", "\u2118" );
731             parser.defineEntityReplacementText( "image", "\u2111" );
732             parser.defineEntityReplacementText( "real", "\u211c" );
733             parser.defineEntityReplacementText( "trade", "\u2122" );
734             parser.defineEntityReplacementText( "alefsym", "\u2135" );
735             parser.defineEntityReplacementText( "larr", "\u2190" );
736             parser.defineEntityReplacementText( "uarr", "\u2191" );
737             parser.defineEntityReplacementText( "rarr", "\u2192" );
738             parser.defineEntityReplacementText( "darr", "\u2193" );
739             parser.defineEntityReplacementText( "harr", "\u2194" );
740             parser.defineEntityReplacementText( "crarr", "\u21b5" );
741             parser.defineEntityReplacementText( "lArr", "\u21d0" );
742             parser.defineEntityReplacementText( "uArr", "\u21d1" );
743             parser.defineEntityReplacementText( "rArr", "\u21d2" );
744             parser.defineEntityReplacementText( "dArr", "\u21d3" );
745             parser.defineEntityReplacementText( "hArr", "\u21d4" );
746             parser.defineEntityReplacementText( "forall", "\u2200" );
747             parser.defineEntityReplacementText( "part", "\u2202" );
748             parser.defineEntityReplacementText( "exist", "\u2203" );
749             parser.defineEntityReplacementText( "empty", "\u2205" );
750             parser.defineEntityReplacementText( "nabla", "\u2207" );
751             parser.defineEntityReplacementText( "isin", "\u2208" );
752             parser.defineEntityReplacementText( "notin", "\u2209" );
753             parser.defineEntityReplacementText( "ni", "\u220b" );
754             parser.defineEntityReplacementText( "prod", "\u220f" );
755             parser.defineEntityReplacementText( "sum", "\u2211" );
756             parser.defineEntityReplacementText( "minus", "\u2212" );
757             parser.defineEntityReplacementText( "lowast", "\u2217" );
758             parser.defineEntityReplacementText( "radic", "\u221a" );
759             parser.defineEntityReplacementText( "prop", "\u221d" );
760             parser.defineEntityReplacementText( "infin", "\u221e" );
761             parser.defineEntityReplacementText( "ang", "\u2220" );
762             parser.defineEntityReplacementText( "and", "\u2227" );
763             parser.defineEntityReplacementText( "or", "\u2228" );
764             parser.defineEntityReplacementText( "cap", "\u2229" );
765             parser.defineEntityReplacementText( "cup", "\u222a" );
766             parser.defineEntityReplacementText( "int", "\u222b" );
767             parser.defineEntityReplacementText( "there4", "\u2234" );
768             parser.defineEntityReplacementText( "sim", "\u223c" );
769             parser.defineEntityReplacementText( "cong", "\u2245" );
770             parser.defineEntityReplacementText( "asymp", "\u2248" );
771             parser.defineEntityReplacementText( "ne", "\u2260" );
772             parser.defineEntityReplacementText( "equiv", "\u2261" );
773             parser.defineEntityReplacementText( "le", "\u2264" );
774             parser.defineEntityReplacementText( "ge", "\u2265" );
775             parser.defineEntityReplacementText( "sub", "\u2282" );
776             parser.defineEntityReplacementText( "sup", "\u2283" );
777             parser.defineEntityReplacementText( "nsub", "\u2284" );
778             parser.defineEntityReplacementText( "sube", "\u2286" );
779             parser.defineEntityReplacementText( "supe", "\u2287" );
780             parser.defineEntityReplacementText( "oplus", "\u2295" );
781             parser.defineEntityReplacementText( "otimes", "\u2297" );
782             parser.defineEntityReplacementText( "perp", "\u22a5" );
783             parser.defineEntityReplacementText( "sdot", "\u22c5" );
784             parser.defineEntityReplacementText( "lceil", "\u2308" );
785             parser.defineEntityReplacementText( "rceil", "\u2309" );
786             parser.defineEntityReplacementText( "lfloor", "\u230a" );
787             parser.defineEntityReplacementText( "rfloor", "\u230b" );
788             parser.defineEntityReplacementText( "lang", "\u2329" );
789             parser.defineEntityReplacementText( "rang", "\u232a" );
790             parser.defineEntityReplacementText( "loz", "\u25ca" );
791             parser.defineEntityReplacementText( "spades", "\u2660" );
792             parser.defineEntityReplacementText( "clubs", "\u2663" );
793             parser.defineEntityReplacementText( "hearts", "\u2665" );
794             parser.defineEntityReplacementText( "diams", "\u2666" );
795 
796         }
797     } //-- void initParser( XmlPullParser )
798 
799     /**
800      * Method nextTag.
801      * 
802      * @param parser
803      * @throws IOException
804      * @throws XmlPullParserException
805      * @return int
806      */
807     private int nextTag( XmlPullParser parser )
808         throws IOException, XmlPullParserException
809     {
810         int eventType = parser.next();
811         if ( eventType == XmlPullParser.TEXT )
812         {
813             eventType = parser.next();
814         }
815         if ( eventType != XmlPullParser.START_TAG && eventType != XmlPullParser.END_TAG )
816         {
817             throw new XmlPullParserException( "expected START_TAG or END_TAG not " + XmlPullParser.TYPES[eventType], parser, null );
818         }
819         return eventType;
820     } //-- int nextTag( XmlPullParser )
821 
822     /**
823      * Method parseActivation.
824      * 
825      * @param parser
826      * @param source
827      * @param strict
828      * @throws IOException
829      * @throws XmlPullParserException
830      * @return Activation
831      */
832     private Activation parseActivation( XmlPullParser parser, boolean strict, InputSource source )
833         throws IOException, XmlPullParserException
834     {
835         String tagName = parser.getName();
836         Activation activation = new Activation();
837         InputLocation _location;
838         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
839         activation.setLocation( "", _location );
840         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
841         {
842             String name = parser.getAttributeName( i );
843             String value = parser.getAttributeValue( i );
844 
845             if ( name.indexOf( ':' ) >= 0 )
846             {
847                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
848             }
849             else
850             {
851                 checkUnknownAttribute( parser, name, tagName, strict );
852             }
853         }
854         java.util.Set parsed = new java.util.HashSet();
855         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
856         {
857             if ( checkFieldWithDuplicate( parser, "activeByDefault", null, parsed ) )
858             {
859                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
860                 activation.setLocation( "activeByDefault", _location );
861                 activation.setActiveByDefault( getBooleanValue( getTrimmedValue( parser.nextText() ), "activeByDefault", parser, "false" ) );
862             }
863             else if ( checkFieldWithDuplicate( parser, "jdk", null, parsed ) )
864             {
865                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
866                 activation.setLocation( "jdk", _location );
867                 activation.setJdk( getTrimmedValue( parser.nextText() ) );
868             }
869             else if ( checkFieldWithDuplicate( parser, "os", null, parsed ) )
870             {
871                 activation.setOs( parseActivationOS( parser, strict, source ) );
872             }
873             else if ( checkFieldWithDuplicate( parser, "property", null, parsed ) )
874             {
875                 activation.setProperty( parseActivationProperty( parser, strict, source ) );
876             }
877             else if ( checkFieldWithDuplicate( parser, "file", null, parsed ) )
878             {
879                 activation.setFile( parseActivationFile( parser, strict, source ) );
880             }
881             else
882             {
883                 checkUnknownElement( parser, strict );
884             }
885         }
886         return activation;
887     } //-- Activation parseActivation( XmlPullParser, boolean, InputSource )
888 
889     /**
890      * Method parseActivationFile.
891      * 
892      * @param parser
893      * @param source
894      * @param strict
895      * @throws IOException
896      * @throws XmlPullParserException
897      * @return ActivationFile
898      */
899     private ActivationFile parseActivationFile( XmlPullParser parser, boolean strict, InputSource source )
900         throws IOException, XmlPullParserException
901     {
902         String tagName = parser.getName();
903         ActivationFile activationFile = new ActivationFile();
904         InputLocation _location;
905         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
906         activationFile.setLocation( "", _location );
907         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
908         {
909             String name = parser.getAttributeName( i );
910             String value = parser.getAttributeValue( i );
911 
912             if ( name.indexOf( ':' ) >= 0 )
913             {
914                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
915             }
916             else
917             {
918                 checkUnknownAttribute( parser, name, tagName, strict );
919             }
920         }
921         java.util.Set parsed = new java.util.HashSet();
922         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
923         {
924             if ( checkFieldWithDuplicate( parser, "missing", null, parsed ) )
925             {
926                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
927                 activationFile.setLocation( "missing", _location );
928                 activationFile.setMissing( getTrimmedValue( parser.nextText() ) );
929             }
930             else if ( checkFieldWithDuplicate( parser, "exists", null, parsed ) )
931             {
932                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
933                 activationFile.setLocation( "exists", _location );
934                 activationFile.setExists( getTrimmedValue( parser.nextText() ) );
935             }
936             else
937             {
938                 checkUnknownElement( parser, strict );
939             }
940         }
941         return activationFile;
942     } //-- ActivationFile parseActivationFile( XmlPullParser, boolean, InputSource )
943 
944     /**
945      * Method parseActivationOS.
946      * 
947      * @param parser
948      * @param source
949      * @param strict
950      * @throws IOException
951      * @throws XmlPullParserException
952      * @return ActivationOS
953      */
954     private ActivationOS parseActivationOS( XmlPullParser parser, boolean strict, InputSource source )
955         throws IOException, XmlPullParserException
956     {
957         String tagName = parser.getName();
958         ActivationOS activationOS = new ActivationOS();
959         InputLocation _location;
960         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
961         activationOS.setLocation( "", _location );
962         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
963         {
964             String name = parser.getAttributeName( i );
965             String value = parser.getAttributeValue( i );
966 
967             if ( name.indexOf( ':' ) >= 0 )
968             {
969                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
970             }
971             else
972             {
973                 checkUnknownAttribute( parser, name, tagName, strict );
974             }
975         }
976         java.util.Set parsed = new java.util.HashSet();
977         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
978         {
979             if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
980             {
981                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
982                 activationOS.setLocation( "name", _location );
983                 activationOS.setName( getTrimmedValue( parser.nextText() ) );
984             }
985             else if ( checkFieldWithDuplicate( parser, "family", null, parsed ) )
986             {
987                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
988                 activationOS.setLocation( "family", _location );
989                 activationOS.setFamily( getTrimmedValue( parser.nextText() ) );
990             }
991             else if ( checkFieldWithDuplicate( parser, "arch", null, parsed ) )
992             {
993                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
994                 activationOS.setLocation( "arch", _location );
995                 activationOS.setArch( getTrimmedValue( parser.nextText() ) );
996             }
997             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
998             {
999                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1000                 activationOS.setLocation( "version", _location );
1001                 activationOS.setVersion( getTrimmedValue( parser.nextText() ) );
1002             }
1003             else
1004             {
1005                 checkUnknownElement( parser, strict );
1006             }
1007         }
1008         return activationOS;
1009     } //-- ActivationOS parseActivationOS( XmlPullParser, boolean, InputSource )
1010 
1011     /**
1012      * Method parseActivationProperty.
1013      * 
1014      * @param parser
1015      * @param source
1016      * @param strict
1017      * @throws IOException
1018      * @throws XmlPullParserException
1019      * @return ActivationProperty
1020      */
1021     private ActivationProperty parseActivationProperty( XmlPullParser parser, boolean strict, InputSource source )
1022         throws IOException, XmlPullParserException
1023     {
1024         String tagName = parser.getName();
1025         ActivationProperty activationProperty = new ActivationProperty();
1026         InputLocation _location;
1027         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1028         activationProperty.setLocation( "", _location );
1029         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1030         {
1031             String name = parser.getAttributeName( i );
1032             String value = parser.getAttributeValue( i );
1033 
1034             if ( name.indexOf( ':' ) >= 0 )
1035             {
1036                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1037             }
1038             else
1039             {
1040                 checkUnknownAttribute( parser, name, tagName, strict );
1041             }
1042         }
1043         java.util.Set parsed = new java.util.HashSet();
1044         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1045         {
1046             if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
1047             {
1048                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1049                 activationProperty.setLocation( "name", _location );
1050                 activationProperty.setName( getTrimmedValue( parser.nextText() ) );
1051             }
1052             else if ( checkFieldWithDuplicate( parser, "value", null, parsed ) )
1053             {
1054                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1055                 activationProperty.setLocation( "value", _location );
1056                 activationProperty.setValue( getTrimmedValue( parser.nextText() ) );
1057             }
1058             else
1059             {
1060                 checkUnknownElement( parser, strict );
1061             }
1062         }
1063         return activationProperty;
1064     } //-- ActivationProperty parseActivationProperty( XmlPullParser, boolean, InputSource )
1065 
1066     /**
1067      * Method parseBuild.
1068      * 
1069      * @param parser
1070      * @param source
1071      * @param strict
1072      * @throws IOException
1073      * @throws XmlPullParserException
1074      * @return Build
1075      */
1076     private Build parseBuild( XmlPullParser parser, boolean strict, InputSource source )
1077         throws IOException, XmlPullParserException
1078     {
1079         String tagName = parser.getName();
1080         Build build = new Build();
1081         InputLocation _location;
1082         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1083         build.setLocation( "", _location );
1084         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1085         {
1086             String name = parser.getAttributeName( i );
1087             String value = parser.getAttributeValue( i );
1088 
1089             if ( name.indexOf( ':' ) >= 0 )
1090             {
1091                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1092             }
1093             else
1094             {
1095                 checkUnknownAttribute( parser, name, tagName, strict );
1096             }
1097         }
1098         java.util.Set parsed = new java.util.HashSet();
1099         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1100         {
1101             if ( checkFieldWithDuplicate( parser, "sourceDirectory", null, parsed ) )
1102             {
1103                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1104                 build.setLocation( "sourceDirectory", _location );
1105                 build.setSourceDirectory( getTrimmedValue( parser.nextText() ) );
1106             }
1107             else if ( checkFieldWithDuplicate( parser, "scriptSourceDirectory", null, parsed ) )
1108             {
1109                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1110                 build.setLocation( "scriptSourceDirectory", _location );
1111                 build.setScriptSourceDirectory( getTrimmedValue( parser.nextText() ) );
1112             }
1113             else if ( checkFieldWithDuplicate( parser, "testSourceDirectory", null, parsed ) )
1114             {
1115                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1116                 build.setLocation( "testSourceDirectory", _location );
1117                 build.setTestSourceDirectory( getTrimmedValue( parser.nextText() ) );
1118             }
1119             else if ( checkFieldWithDuplicate( parser, "outputDirectory", null, parsed ) )
1120             {
1121                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1122                 build.setLocation( "outputDirectory", _location );
1123                 build.setOutputDirectory( getTrimmedValue( parser.nextText() ) );
1124             }
1125             else if ( checkFieldWithDuplicate( parser, "testOutputDirectory", null, parsed ) )
1126             {
1127                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1128                 build.setLocation( "testOutputDirectory", _location );
1129                 build.setTestOutputDirectory( getTrimmedValue( parser.nextText() ) );
1130             }
1131             else if ( checkFieldWithDuplicate( parser, "extensions", null, parsed ) )
1132             {
1133                 java.util.List extensions = new java.util.ArrayList/*<Extension>*/();
1134                 build.setExtensions( extensions );
1135                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1136                 {
1137                     if ( "extension".equals( parser.getName() ) )
1138                     {
1139                         extensions.add( parseExtension( parser, strict, source ) );
1140                     }
1141                     else
1142                     {
1143                         checkUnknownElement( parser, strict );
1144                     }
1145                 }
1146             }
1147             else if ( checkFieldWithDuplicate( parser, "defaultGoal", null, parsed ) )
1148             {
1149                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1150                 build.setLocation( "defaultGoal", _location );
1151                 build.setDefaultGoal( getTrimmedValue( parser.nextText() ) );
1152             }
1153             else if ( checkFieldWithDuplicate( parser, "resources", null, parsed ) )
1154             {
1155                 java.util.List resources = new java.util.ArrayList/*<Resource>*/();
1156                 build.setResources( resources );
1157                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1158                 {
1159                     if ( "resource".equals( parser.getName() ) )
1160                     {
1161                         resources.add( parseResource( parser, strict, source ) );
1162                     }
1163                     else
1164                     {
1165                         checkUnknownElement( parser, strict );
1166                     }
1167                 }
1168             }
1169             else if ( checkFieldWithDuplicate( parser, "testResources", null, parsed ) )
1170             {
1171                 java.util.List testResources = new java.util.ArrayList/*<Resource>*/();
1172                 build.setTestResources( testResources );
1173                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1174                 {
1175                     if ( "testResource".equals( parser.getName() ) )
1176                     {
1177                         testResources.add( parseResource( parser, strict, source ) );
1178                     }
1179                     else
1180                     {
1181                         checkUnknownElement( parser, strict );
1182                     }
1183                 }
1184             }
1185             else if ( checkFieldWithDuplicate( parser, "directory", null, parsed ) )
1186             {
1187                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1188                 build.setLocation( "directory", _location );
1189                 build.setDirectory( getTrimmedValue( parser.nextText() ) );
1190             }
1191             else if ( checkFieldWithDuplicate( parser, "finalName", null, parsed ) )
1192             {
1193                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1194                 build.setLocation( "finalName", _location );
1195                 build.setFinalName( getTrimmedValue( parser.nextText() ) );
1196             }
1197             else if ( checkFieldWithDuplicate( parser, "filters", null, parsed ) )
1198             {
1199                 java.util.List filters = new java.util.ArrayList/*<String>*/();
1200                 build.setFilters( filters );
1201                 InputLocation _locations;
1202                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1203                 build.setLocation( "filters", _locations );
1204                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1205                 {
1206                     if ( "filter".equals( parser.getName() ) )
1207                     {
1208                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1209                         _locations.setLocation( Integer.valueOf( filters.size() ), _location );
1210                         filters.add( getTrimmedValue( parser.nextText() ) );
1211                     }
1212                     else
1213                     {
1214                         checkUnknownElement( parser, strict );
1215                     }
1216                 }
1217             }
1218             else if ( checkFieldWithDuplicate( parser, "pluginManagement", null, parsed ) )
1219             {
1220                 build.setPluginManagement( parsePluginManagement( parser, strict, source ) );
1221             }
1222             else if ( checkFieldWithDuplicate( parser, "plugins", null, parsed ) )
1223             {
1224                 java.util.List plugins = new java.util.ArrayList/*<Plugin>*/();
1225                 build.setPlugins( plugins );
1226                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1227                 {
1228                     if ( "plugin".equals( parser.getName() ) )
1229                     {
1230                         plugins.add( parsePlugin( parser, strict, source ) );
1231                     }
1232                     else
1233                     {
1234                         checkUnknownElement( parser, strict );
1235                     }
1236                 }
1237             }
1238             else
1239             {
1240                 checkUnknownElement( parser, strict );
1241             }
1242         }
1243         return build;
1244     } //-- Build parseBuild( XmlPullParser, boolean, InputSource )
1245 
1246     /**
1247      * Method parseBuildBase.
1248      * 
1249      * @param parser
1250      * @param source
1251      * @param strict
1252      * @throws IOException
1253      * @throws XmlPullParserException
1254      * @return BuildBase
1255      */
1256     private BuildBase parseBuildBase( XmlPullParser parser, boolean strict, InputSource source )
1257         throws IOException, XmlPullParserException
1258     {
1259         String tagName = parser.getName();
1260         BuildBase buildBase = new BuildBase();
1261         InputLocation _location;
1262         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1263         buildBase.setLocation( "", _location );
1264         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1265         {
1266             String name = parser.getAttributeName( i );
1267             String value = parser.getAttributeValue( i );
1268 
1269             if ( name.indexOf( ':' ) >= 0 )
1270             {
1271                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1272             }
1273             else
1274             {
1275                 checkUnknownAttribute( parser, name, tagName, strict );
1276             }
1277         }
1278         java.util.Set parsed = new java.util.HashSet();
1279         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1280         {
1281             if ( checkFieldWithDuplicate( parser, "defaultGoal", null, parsed ) )
1282             {
1283                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1284                 buildBase.setLocation( "defaultGoal", _location );
1285                 buildBase.setDefaultGoal( getTrimmedValue( parser.nextText() ) );
1286             }
1287             else if ( checkFieldWithDuplicate( parser, "resources", null, parsed ) )
1288             {
1289                 java.util.List resources = new java.util.ArrayList/*<Resource>*/();
1290                 buildBase.setResources( resources );
1291                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1292                 {
1293                     if ( "resource".equals( parser.getName() ) )
1294                     {
1295                         resources.add( parseResource( parser, strict, source ) );
1296                     }
1297                     else
1298                     {
1299                         checkUnknownElement( parser, strict );
1300                     }
1301                 }
1302             }
1303             else if ( checkFieldWithDuplicate( parser, "testResources", null, parsed ) )
1304             {
1305                 java.util.List testResources = new java.util.ArrayList/*<Resource>*/();
1306                 buildBase.setTestResources( testResources );
1307                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1308                 {
1309                     if ( "testResource".equals( parser.getName() ) )
1310                     {
1311                         testResources.add( parseResource( parser, strict, source ) );
1312                     }
1313                     else
1314                     {
1315                         checkUnknownElement( parser, strict );
1316                     }
1317                 }
1318             }
1319             else if ( checkFieldWithDuplicate( parser, "directory", null, parsed ) )
1320             {
1321                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1322                 buildBase.setLocation( "directory", _location );
1323                 buildBase.setDirectory( getTrimmedValue( parser.nextText() ) );
1324             }
1325             else if ( checkFieldWithDuplicate( parser, "finalName", null, parsed ) )
1326             {
1327                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1328                 buildBase.setLocation( "finalName", _location );
1329                 buildBase.setFinalName( getTrimmedValue( parser.nextText() ) );
1330             }
1331             else if ( checkFieldWithDuplicate( parser, "filters", null, parsed ) )
1332             {
1333                 java.util.List filters = new java.util.ArrayList/*<String>*/();
1334                 buildBase.setFilters( filters );
1335                 InputLocation _locations;
1336                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1337                 buildBase.setLocation( "filters", _locations );
1338                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1339                 {
1340                     if ( "filter".equals( parser.getName() ) )
1341                     {
1342                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1343                         _locations.setLocation( Integer.valueOf( filters.size() ), _location );
1344                         filters.add( getTrimmedValue( parser.nextText() ) );
1345                     }
1346                     else
1347                     {
1348                         checkUnknownElement( parser, strict );
1349                     }
1350                 }
1351             }
1352             else if ( checkFieldWithDuplicate( parser, "pluginManagement", null, parsed ) )
1353             {
1354                 buildBase.setPluginManagement( parsePluginManagement( parser, strict, source ) );
1355             }
1356             else if ( checkFieldWithDuplicate( parser, "plugins", null, parsed ) )
1357             {
1358                 java.util.List plugins = new java.util.ArrayList/*<Plugin>*/();
1359                 buildBase.setPlugins( plugins );
1360                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1361                 {
1362                     if ( "plugin".equals( parser.getName() ) )
1363                     {
1364                         plugins.add( parsePlugin( parser, strict, source ) );
1365                     }
1366                     else
1367                     {
1368                         checkUnknownElement( parser, strict );
1369                     }
1370                 }
1371             }
1372             else
1373             {
1374                 checkUnknownElement( parser, strict );
1375             }
1376         }
1377         return buildBase;
1378     } //-- BuildBase parseBuildBase( XmlPullParser, boolean, InputSource )
1379 
1380     /**
1381      * Method parseCiManagement.
1382      * 
1383      * @param parser
1384      * @param source
1385      * @param strict
1386      * @throws IOException
1387      * @throws XmlPullParserException
1388      * @return CiManagement
1389      */
1390     private CiManagement parseCiManagement( XmlPullParser parser, boolean strict, InputSource source )
1391         throws IOException, XmlPullParserException
1392     {
1393         String tagName = parser.getName();
1394         CiManagement ciManagement = new CiManagement();
1395         InputLocation _location;
1396         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1397         ciManagement.setLocation( "", _location );
1398         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1399         {
1400             String name = parser.getAttributeName( i );
1401             String value = parser.getAttributeValue( i );
1402 
1403             if ( name.indexOf( ':' ) >= 0 )
1404             {
1405                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1406             }
1407             else
1408             {
1409                 checkUnknownAttribute( parser, name, tagName, strict );
1410             }
1411         }
1412         java.util.Set parsed = new java.util.HashSet();
1413         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1414         {
1415             if ( checkFieldWithDuplicate( parser, "system", null, parsed ) )
1416             {
1417                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1418                 ciManagement.setLocation( "system", _location );
1419                 ciManagement.setSystem( getTrimmedValue( parser.nextText() ) );
1420             }
1421             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
1422             {
1423                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1424                 ciManagement.setLocation( "url", _location );
1425                 ciManagement.setUrl( getTrimmedValue( parser.nextText() ) );
1426             }
1427             else if ( checkFieldWithDuplicate( parser, "notifiers", null, parsed ) )
1428             {
1429                 java.util.List notifiers = new java.util.ArrayList/*<Notifier>*/();
1430                 ciManagement.setNotifiers( notifiers );
1431                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1432                 {
1433                     if ( "notifier".equals( parser.getName() ) )
1434                     {
1435                         notifiers.add( parseNotifier( parser, strict, source ) );
1436                     }
1437                     else
1438                     {
1439                         checkUnknownElement( parser, strict );
1440                     }
1441                 }
1442             }
1443             else
1444             {
1445                 checkUnknownElement( parser, strict );
1446             }
1447         }
1448         return ciManagement;
1449     } //-- CiManagement parseCiManagement( XmlPullParser, boolean, InputSource )
1450 
1451     /**
1452      * Method parseConfigurationContainer.
1453      * 
1454      * @param parser
1455      * @param source
1456      * @param strict
1457      * @throws IOException
1458      * @throws XmlPullParserException
1459      * @return ConfigurationContainer
1460      */
1461     private ConfigurationContainer parseConfigurationContainer( XmlPullParser parser, boolean strict, InputSource source )
1462         throws IOException, XmlPullParserException
1463     {
1464         String tagName = parser.getName();
1465         ConfigurationContainer configurationContainer = new ConfigurationContainer();
1466         InputLocation _location;
1467         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1468         configurationContainer.setLocation( "", _location );
1469         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1470         {
1471             String name = parser.getAttributeName( i );
1472             String value = parser.getAttributeValue( i );
1473 
1474             if ( name.indexOf( ':' ) >= 0 )
1475             {
1476                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1477             }
1478             else
1479             {
1480                 checkUnknownAttribute( parser, name, tagName, strict );
1481             }
1482         }
1483         java.util.Set parsed = new java.util.HashSet();
1484         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1485         {
1486             if ( checkFieldWithDuplicate( parser, "inherited", null, parsed ) )
1487             {
1488                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1489                 configurationContainer.setLocation( "inherited", _location );
1490                 configurationContainer.setInherited( getTrimmedValue( parser.nextText() ) );
1491             }
1492             else if ( checkFieldWithDuplicate( parser, "configuration", null, parsed ) )
1493             {
1494                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1495                 configurationContainer.setLocation( "configuration", _location );
1496                 configurationContainer.setConfiguration( Xpp3DomBuilder.build( parser ) );
1497             }
1498             else
1499             {
1500                 checkUnknownElement( parser, strict );
1501             }
1502         }
1503         return configurationContainer;
1504     } //-- ConfigurationContainer parseConfigurationContainer( XmlPullParser, boolean, InputSource )
1505 
1506     /**
1507      * Method parseContributor.
1508      * 
1509      * @param parser
1510      * @param source
1511      * @param strict
1512      * @throws IOException
1513      * @throws XmlPullParserException
1514      * @return Contributor
1515      */
1516     private Contributor parseContributor( XmlPullParser parser, boolean strict, InputSource source )
1517         throws IOException, XmlPullParserException
1518     {
1519         String tagName = parser.getName();
1520         Contributor contributor = new Contributor();
1521         InputLocation _location;
1522         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1523         contributor.setLocation( "", _location );
1524         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1525         {
1526             String name = parser.getAttributeName( i );
1527             String value = parser.getAttributeValue( i );
1528 
1529             if ( name.indexOf( ':' ) >= 0 )
1530             {
1531                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1532             }
1533             else
1534             {
1535                 checkUnknownAttribute( parser, name, tagName, strict );
1536             }
1537         }
1538         java.util.Set parsed = new java.util.HashSet();
1539         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1540         {
1541             if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
1542             {
1543                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1544                 contributor.setLocation( "name", _location );
1545                 contributor.setName( getTrimmedValue( parser.nextText() ) );
1546             }
1547             else if ( checkFieldWithDuplicate( parser, "email", null, parsed ) )
1548             {
1549                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1550                 contributor.setLocation( "email", _location );
1551                 contributor.setEmail( getTrimmedValue( parser.nextText() ) );
1552             }
1553             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
1554             {
1555                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1556                 contributor.setLocation( "url", _location );
1557                 contributor.setUrl( getTrimmedValue( parser.nextText() ) );
1558             }
1559             else if ( checkFieldWithDuplicate( parser, "organization", "organisation", parsed ) )
1560             {
1561                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1562                 contributor.setLocation( "organization", _location );
1563                 contributor.setOrganization( getTrimmedValue( parser.nextText() ) );
1564             }
1565             else if ( checkFieldWithDuplicate( parser, "organizationUrl", "organisationUrl", parsed ) )
1566             {
1567                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1568                 contributor.setLocation( "organizationUrl", _location );
1569                 contributor.setOrganizationUrl( getTrimmedValue( parser.nextText() ) );
1570             }
1571             else if ( checkFieldWithDuplicate( parser, "roles", null, parsed ) )
1572             {
1573                 java.util.List roles = new java.util.ArrayList/*<String>*/();
1574                 contributor.setRoles( roles );
1575                 InputLocation _locations;
1576                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1577                 contributor.setLocation( "roles", _locations );
1578                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1579                 {
1580                     if ( "role".equals( parser.getName() ) )
1581                     {
1582                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1583                         _locations.setLocation( Integer.valueOf( roles.size() ), _location );
1584                         roles.add( getTrimmedValue( parser.nextText() ) );
1585                     }
1586                     else
1587                     {
1588                         checkUnknownElement( parser, strict );
1589                     }
1590                 }
1591             }
1592             else if ( checkFieldWithDuplicate( parser, "timezone", null, parsed ) )
1593             {
1594                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1595                 contributor.setLocation( "timezone", _location );
1596                 contributor.setTimezone( getTrimmedValue( parser.nextText() ) );
1597             }
1598             else if ( checkFieldWithDuplicate( parser, "properties", null, parsed ) )
1599             {
1600                 InputLocation _locations;
1601                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1602                 contributor.setLocation( "properties", _locations );
1603                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1604                 {
1605                     String key = parser.getName();
1606                     _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1607                     _locations.setLocation( key, _location );
1608                     String value = parser.nextText().trim();
1609                     contributor.addProperty( key, value );
1610                 }
1611             }
1612             else
1613             {
1614                 checkUnknownElement( parser, strict );
1615             }
1616         }
1617         return contributor;
1618     } //-- Contributor parseContributor( XmlPullParser, boolean, InputSource )
1619 
1620     /**
1621      * Method parseDependency.
1622      * 
1623      * @param parser
1624      * @param source
1625      * @param strict
1626      * @throws IOException
1627      * @throws XmlPullParserException
1628      * @return Dependency
1629      */
1630     private Dependency parseDependency( XmlPullParser parser, boolean strict, InputSource source )
1631         throws IOException, XmlPullParserException
1632     {
1633         String tagName = parser.getName();
1634         Dependency dependency = new Dependency();
1635         InputLocation _location;
1636         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1637         dependency.setLocation( "", _location );
1638         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1639         {
1640             String name = parser.getAttributeName( i );
1641             String value = parser.getAttributeValue( i );
1642 
1643             if ( name.indexOf( ':' ) >= 0 )
1644             {
1645                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1646             }
1647             else
1648             {
1649                 checkUnknownAttribute( parser, name, tagName, strict );
1650             }
1651         }
1652         java.util.Set parsed = new java.util.HashSet();
1653         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1654         {
1655             if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
1656             {
1657                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1658                 dependency.setLocation( "groupId", _location );
1659                 dependency.setGroupId( getTrimmedValue( parser.nextText() ) );
1660             }
1661             else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
1662             {
1663                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1664                 dependency.setLocation( "artifactId", _location );
1665                 dependency.setArtifactId( getTrimmedValue( parser.nextText() ) );
1666             }
1667             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
1668             {
1669                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1670                 dependency.setLocation( "version", _location );
1671                 dependency.setVersion( getTrimmedValue( parser.nextText() ) );
1672             }
1673             else if ( checkFieldWithDuplicate( parser, "type", null, parsed ) )
1674             {
1675                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1676                 dependency.setLocation( "type", _location );
1677                 dependency.setType( getTrimmedValue( parser.nextText() ) );
1678             }
1679             else if ( checkFieldWithDuplicate( parser, "classifier", null, parsed ) )
1680             {
1681                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1682                 dependency.setLocation( "classifier", _location );
1683                 dependency.setClassifier( getTrimmedValue( parser.nextText() ) );
1684             }
1685             else if ( checkFieldWithDuplicate( parser, "scope", null, parsed ) )
1686             {
1687                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1688                 dependency.setLocation( "scope", _location );
1689                 dependency.setScope( getTrimmedValue( parser.nextText() ) );
1690             }
1691             else if ( checkFieldWithDuplicate( parser, "systemPath", null, parsed ) )
1692             {
1693                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1694                 dependency.setLocation( "systemPath", _location );
1695                 dependency.setSystemPath( getTrimmedValue( parser.nextText() ) );
1696             }
1697             else if ( checkFieldWithDuplicate( parser, "exclusions", null, parsed ) )
1698             {
1699                 java.util.List exclusions = new java.util.ArrayList/*<Exclusion>*/();
1700                 dependency.setExclusions( exclusions );
1701                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1702                 {
1703                     if ( "exclusion".equals( parser.getName() ) )
1704                     {
1705                         exclusions.add( parseExclusion( parser, strict, source ) );
1706                     }
1707                     else
1708                     {
1709                         checkUnknownElement( parser, strict );
1710                     }
1711                 }
1712             }
1713             else if ( checkFieldWithDuplicate( parser, "optional", null, parsed ) )
1714             {
1715                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1716                 dependency.setLocation( "optional", _location );
1717                 dependency.setOptional( getTrimmedValue( parser.nextText() ) );
1718             }
1719             else
1720             {
1721                 checkUnknownElement( parser, strict );
1722             }
1723         }
1724         return dependency;
1725     } //-- Dependency parseDependency( XmlPullParser, boolean, InputSource )
1726 
1727     /**
1728      * Method parseDependencyManagement.
1729      * 
1730      * @param parser
1731      * @param source
1732      * @param strict
1733      * @throws IOException
1734      * @throws XmlPullParserException
1735      * @return DependencyManagement
1736      */
1737     private DependencyManagement parseDependencyManagement( XmlPullParser parser, boolean strict, InputSource source )
1738         throws IOException, XmlPullParserException
1739     {
1740         String tagName = parser.getName();
1741         DependencyManagement dependencyManagement = new DependencyManagement();
1742         InputLocation _location;
1743         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1744         dependencyManagement.setLocation( "", _location );
1745         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1746         {
1747             String name = parser.getAttributeName( i );
1748             String value = parser.getAttributeValue( i );
1749 
1750             if ( name.indexOf( ':' ) >= 0 )
1751             {
1752                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1753             }
1754             else
1755             {
1756                 checkUnknownAttribute( parser, name, tagName, strict );
1757             }
1758         }
1759         java.util.Set parsed = new java.util.HashSet();
1760         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1761         {
1762             if ( checkFieldWithDuplicate( parser, "dependencies", null, parsed ) )
1763             {
1764                 java.util.List dependencies = new java.util.ArrayList/*<Dependency>*/();
1765                 dependencyManagement.setDependencies( dependencies );
1766                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1767                 {
1768                     if ( "dependency".equals( parser.getName() ) )
1769                     {
1770                         dependencies.add( parseDependency( parser, strict, source ) );
1771                     }
1772                     else
1773                     {
1774                         checkUnknownElement( parser, strict );
1775                     }
1776                 }
1777             }
1778             else
1779             {
1780                 checkUnknownElement( parser, strict );
1781             }
1782         }
1783         return dependencyManagement;
1784     } //-- DependencyManagement parseDependencyManagement( XmlPullParser, boolean, InputSource )
1785 
1786     /**
1787      * Method parseDeploymentRepository.
1788      * 
1789      * @param parser
1790      * @param source
1791      * @param strict
1792      * @throws IOException
1793      * @throws XmlPullParserException
1794      * @return DeploymentRepository
1795      */
1796     private DeploymentRepository parseDeploymentRepository( XmlPullParser parser, boolean strict, InputSource source )
1797         throws IOException, XmlPullParserException
1798     {
1799         String tagName = parser.getName();
1800         DeploymentRepository deploymentRepository = new DeploymentRepository();
1801         InputLocation _location;
1802         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1803         deploymentRepository.setLocation( "", _location );
1804         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1805         {
1806             String name = parser.getAttributeName( i );
1807             String value = parser.getAttributeValue( i );
1808 
1809             if ( name.indexOf( ':' ) >= 0 )
1810             {
1811                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1812             }
1813             else
1814             {
1815                 checkUnknownAttribute( parser, name, tagName, strict );
1816             }
1817         }
1818         java.util.Set parsed = new java.util.HashSet();
1819         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1820         {
1821             if ( checkFieldWithDuplicate( parser, "uniqueVersion", null, parsed ) )
1822             {
1823                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1824                 deploymentRepository.setLocation( "uniqueVersion", _location );
1825                 deploymentRepository.setUniqueVersion( getBooleanValue( getTrimmedValue( parser.nextText() ), "uniqueVersion", parser, "true" ) );
1826             }
1827             else if ( checkFieldWithDuplicate( parser, "releases", null, parsed ) )
1828             {
1829                 deploymentRepository.setReleases( parseRepositoryPolicy( parser, strict, source ) );
1830             }
1831             else if ( checkFieldWithDuplicate( parser, "snapshots", null, parsed ) )
1832             {
1833                 deploymentRepository.setSnapshots( parseRepositoryPolicy( parser, strict, source ) );
1834             }
1835             else if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
1836             {
1837                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1838                 deploymentRepository.setLocation( "id", _location );
1839                 deploymentRepository.setId( getTrimmedValue( parser.nextText() ) );
1840             }
1841             else if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
1842             {
1843                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1844                 deploymentRepository.setLocation( "name", _location );
1845                 deploymentRepository.setName( getTrimmedValue( parser.nextText() ) );
1846             }
1847             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
1848             {
1849                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1850                 deploymentRepository.setLocation( "url", _location );
1851                 deploymentRepository.setUrl( getTrimmedValue( parser.nextText() ) );
1852             }
1853             else if ( checkFieldWithDuplicate( parser, "layout", null, parsed ) )
1854             {
1855                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1856                 deploymentRepository.setLocation( "layout", _location );
1857                 deploymentRepository.setLayout( getTrimmedValue( parser.nextText() ) );
1858             }
1859             else
1860             {
1861                 checkUnknownElement( parser, strict );
1862             }
1863         }
1864         return deploymentRepository;
1865     } //-- DeploymentRepository parseDeploymentRepository( XmlPullParser, boolean, InputSource )
1866 
1867     /**
1868      * Method parseDeveloper.
1869      * 
1870      * @param parser
1871      * @param source
1872      * @param strict
1873      * @throws IOException
1874      * @throws XmlPullParserException
1875      * @return Developer
1876      */
1877     private Developer parseDeveloper( XmlPullParser parser, boolean strict, InputSource source )
1878         throws IOException, XmlPullParserException
1879     {
1880         String tagName = parser.getName();
1881         Developer developer = new Developer();
1882         InputLocation _location;
1883         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1884         developer.setLocation( "", _location );
1885         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
1886         {
1887             String name = parser.getAttributeName( i );
1888             String value = parser.getAttributeValue( i );
1889 
1890             if ( name.indexOf( ':' ) >= 0 )
1891             {
1892                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
1893             }
1894             else
1895             {
1896                 checkUnknownAttribute( parser, name, tagName, strict );
1897             }
1898         }
1899         java.util.Set parsed = new java.util.HashSet();
1900         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
1901         {
1902             if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
1903             {
1904                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1905                 developer.setLocation( "id", _location );
1906                 developer.setId( getTrimmedValue( parser.nextText() ) );
1907             }
1908             else if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
1909             {
1910                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1911                 developer.setLocation( "name", _location );
1912                 developer.setName( getTrimmedValue( parser.nextText() ) );
1913             }
1914             else if ( checkFieldWithDuplicate( parser, "email", null, parsed ) )
1915             {
1916                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1917                 developer.setLocation( "email", _location );
1918                 developer.setEmail( getTrimmedValue( parser.nextText() ) );
1919             }
1920             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
1921             {
1922                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1923                 developer.setLocation( "url", _location );
1924                 developer.setUrl( getTrimmedValue( parser.nextText() ) );
1925             }
1926             else if ( checkFieldWithDuplicate( parser, "organization", "organisation", parsed ) )
1927             {
1928                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1929                 developer.setLocation( "organization", _location );
1930                 developer.setOrganization( getTrimmedValue( parser.nextText() ) );
1931             }
1932             else if ( checkFieldWithDuplicate( parser, "organizationUrl", "organisationUrl", parsed ) )
1933             {
1934                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1935                 developer.setLocation( "organizationUrl", _location );
1936                 developer.setOrganizationUrl( getTrimmedValue( parser.nextText() ) );
1937             }
1938             else if ( checkFieldWithDuplicate( parser, "roles", null, parsed ) )
1939             {
1940                 java.util.List roles = new java.util.ArrayList/*<String>*/();
1941                 developer.setRoles( roles );
1942                 InputLocation _locations;
1943                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1944                 developer.setLocation( "roles", _locations );
1945                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1946                 {
1947                     if ( "role".equals( parser.getName() ) )
1948                     {
1949                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1950                         _locations.setLocation( Integer.valueOf( roles.size() ), _location );
1951                         roles.add( getTrimmedValue( parser.nextText() ) );
1952                     }
1953                     else
1954                     {
1955                         checkUnknownElement( parser, strict );
1956                     }
1957                 }
1958             }
1959             else if ( checkFieldWithDuplicate( parser, "timezone", null, parsed ) )
1960             {
1961                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1962                 developer.setLocation( "timezone", _location );
1963                 developer.setTimezone( getTrimmedValue( parser.nextText() ) );
1964             }
1965             else if ( checkFieldWithDuplicate( parser, "properties", null, parsed ) )
1966             {
1967                 InputLocation _locations;
1968                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1969                 developer.setLocation( "properties", _locations );
1970                 while ( parser.nextTag() == XmlPullParser.START_TAG )
1971                 {
1972                     String key = parser.getName();
1973                     _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
1974                     _locations.setLocation( key, _location );
1975                     String value = parser.nextText().trim();
1976                     developer.addProperty( key, value );
1977                 }
1978             }
1979             else
1980             {
1981                 checkUnknownElement( parser, strict );
1982             }
1983         }
1984         return developer;
1985     } //-- Developer parseDeveloper( XmlPullParser, boolean, InputSource )
1986 
1987     /**
1988      * Method parseDistributionManagement.
1989      * 
1990      * @param parser
1991      * @param source
1992      * @param strict
1993      * @throws IOException
1994      * @throws XmlPullParserException
1995      * @return DistributionManagement
1996      */
1997     private DistributionManagement parseDistributionManagement( XmlPullParser parser, boolean strict, InputSource source )
1998         throws IOException, XmlPullParserException
1999     {
2000         String tagName = parser.getName();
2001         DistributionManagement distributionManagement = new DistributionManagement();
2002         InputLocation _location;
2003         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2004         distributionManagement.setLocation( "", _location );
2005         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2006         {
2007             String name = parser.getAttributeName( i );
2008             String value = parser.getAttributeValue( i );
2009 
2010             if ( name.indexOf( ':' ) >= 0 )
2011             {
2012                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2013             }
2014             else
2015             {
2016                 checkUnknownAttribute( parser, name, tagName, strict );
2017             }
2018         }
2019         java.util.Set parsed = new java.util.HashSet();
2020         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2021         {
2022             if ( checkFieldWithDuplicate( parser, "repository", null, parsed ) )
2023             {
2024                 distributionManagement.setRepository( parseDeploymentRepository( parser, strict, source ) );
2025             }
2026             else if ( checkFieldWithDuplicate( parser, "snapshotRepository", null, parsed ) )
2027             {
2028                 distributionManagement.setSnapshotRepository( parseDeploymentRepository( parser, strict, source ) );
2029             }
2030             else if ( checkFieldWithDuplicate( parser, "site", null, parsed ) )
2031             {
2032                 distributionManagement.setSite( parseSite( parser, strict, source ) );
2033             }
2034             else if ( checkFieldWithDuplicate( parser, "downloadUrl", null, parsed ) )
2035             {
2036                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2037                 distributionManagement.setLocation( "downloadUrl", _location );
2038                 distributionManagement.setDownloadUrl( getTrimmedValue( parser.nextText() ) );
2039             }
2040             else if ( checkFieldWithDuplicate( parser, "relocation", null, parsed ) )
2041             {
2042                 distributionManagement.setRelocation( parseRelocation( parser, strict, source ) );
2043             }
2044             else if ( checkFieldWithDuplicate( parser, "status", null, parsed ) )
2045             {
2046                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2047                 distributionManagement.setLocation( "status", _location );
2048                 distributionManagement.setStatus( getTrimmedValue( parser.nextText() ) );
2049             }
2050             else
2051             {
2052                 checkUnknownElement( parser, strict );
2053             }
2054         }
2055         return distributionManagement;
2056     } //-- DistributionManagement parseDistributionManagement( XmlPullParser, boolean, InputSource )
2057 
2058     /**
2059      * Method parseExclusion.
2060      * 
2061      * @param parser
2062      * @param source
2063      * @param strict
2064      * @throws IOException
2065      * @throws XmlPullParserException
2066      * @return Exclusion
2067      */
2068     private Exclusion parseExclusion( XmlPullParser parser, boolean strict, InputSource source )
2069         throws IOException, XmlPullParserException
2070     {
2071         String tagName = parser.getName();
2072         Exclusion exclusion = new Exclusion();
2073         InputLocation _location;
2074         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2075         exclusion.setLocation( "", _location );
2076         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2077         {
2078             String name = parser.getAttributeName( i );
2079             String value = parser.getAttributeValue( i );
2080 
2081             if ( name.indexOf( ':' ) >= 0 )
2082             {
2083                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2084             }
2085             else
2086             {
2087                 checkUnknownAttribute( parser, name, tagName, strict );
2088             }
2089         }
2090         java.util.Set parsed = new java.util.HashSet();
2091         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2092         {
2093             if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
2094             {
2095                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2096                 exclusion.setLocation( "artifactId", _location );
2097                 exclusion.setArtifactId( getTrimmedValue( parser.nextText() ) );
2098             }
2099             else if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
2100             {
2101                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2102                 exclusion.setLocation( "groupId", _location );
2103                 exclusion.setGroupId( getTrimmedValue( parser.nextText() ) );
2104             }
2105             else
2106             {
2107                 checkUnknownElement( parser, strict );
2108             }
2109         }
2110         return exclusion;
2111     } //-- Exclusion parseExclusion( XmlPullParser, boolean, InputSource )
2112 
2113     /**
2114      * Method parseExtension.
2115      * 
2116      * @param parser
2117      * @param source
2118      * @param strict
2119      * @throws IOException
2120      * @throws XmlPullParserException
2121      * @return Extension
2122      */
2123     private Extension parseExtension( XmlPullParser parser, boolean strict, InputSource source )
2124         throws IOException, XmlPullParserException
2125     {
2126         String tagName = parser.getName();
2127         Extension extension = new Extension();
2128         InputLocation _location;
2129         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2130         extension.setLocation( "", _location );
2131         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2132         {
2133             String name = parser.getAttributeName( i );
2134             String value = parser.getAttributeValue( i );
2135 
2136             if ( name.indexOf( ':' ) >= 0 )
2137             {
2138                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2139             }
2140             else
2141             {
2142                 checkUnknownAttribute( parser, name, tagName, strict );
2143             }
2144         }
2145         java.util.Set parsed = new java.util.HashSet();
2146         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2147         {
2148             if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
2149             {
2150                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2151                 extension.setLocation( "groupId", _location );
2152                 extension.setGroupId( getTrimmedValue( parser.nextText() ) );
2153             }
2154             else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
2155             {
2156                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2157                 extension.setLocation( "artifactId", _location );
2158                 extension.setArtifactId( getTrimmedValue( parser.nextText() ) );
2159             }
2160             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
2161             {
2162                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2163                 extension.setLocation( "version", _location );
2164                 extension.setVersion( getTrimmedValue( parser.nextText() ) );
2165             }
2166             else
2167             {
2168                 checkUnknownElement( parser, strict );
2169             }
2170         }
2171         return extension;
2172     } //-- Extension parseExtension( XmlPullParser, boolean, InputSource )
2173 
2174     /**
2175      * Method parseFileSet.
2176      * 
2177      * @param parser
2178      * @param source
2179      * @param strict
2180      * @throws IOException
2181      * @throws XmlPullParserException
2182      * @return FileSet
2183      */
2184     private FileSet parseFileSet( XmlPullParser parser, boolean strict, InputSource source )
2185         throws IOException, XmlPullParserException
2186     {
2187         String tagName = parser.getName();
2188         FileSet fileSet = new FileSet();
2189         InputLocation _location;
2190         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2191         fileSet.setLocation( "", _location );
2192         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2193         {
2194             String name = parser.getAttributeName( i );
2195             String value = parser.getAttributeValue( i );
2196 
2197             if ( name.indexOf( ':' ) >= 0 )
2198             {
2199                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2200             }
2201             else
2202             {
2203                 checkUnknownAttribute( parser, name, tagName, strict );
2204             }
2205         }
2206         java.util.Set parsed = new java.util.HashSet();
2207         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2208         {
2209             if ( checkFieldWithDuplicate( parser, "directory", null, parsed ) )
2210             {
2211                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2212                 fileSet.setLocation( "directory", _location );
2213                 fileSet.setDirectory( getTrimmedValue( parser.nextText() ) );
2214             }
2215             else if ( checkFieldWithDuplicate( parser, "includes", null, parsed ) )
2216             {
2217                 java.util.List includes = new java.util.ArrayList/*<String>*/();
2218                 fileSet.setIncludes( includes );
2219                 InputLocation _locations;
2220                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2221                 fileSet.setLocation( "includes", _locations );
2222                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2223                 {
2224                     if ( "include".equals( parser.getName() ) )
2225                     {
2226                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2227                         _locations.setLocation( Integer.valueOf( includes.size() ), _location );
2228                         includes.add( getTrimmedValue( parser.nextText() ) );
2229                     }
2230                     else
2231                     {
2232                         checkUnknownElement( parser, strict );
2233                     }
2234                 }
2235             }
2236             else if ( checkFieldWithDuplicate( parser, "excludes", null, parsed ) )
2237             {
2238                 java.util.List excludes = new java.util.ArrayList/*<String>*/();
2239                 fileSet.setExcludes( excludes );
2240                 InputLocation _locations;
2241                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2242                 fileSet.setLocation( "excludes", _locations );
2243                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2244                 {
2245                     if ( "exclude".equals( parser.getName() ) )
2246                     {
2247                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2248                         _locations.setLocation( Integer.valueOf( excludes.size() ), _location );
2249                         excludes.add( getTrimmedValue( parser.nextText() ) );
2250                     }
2251                     else
2252                     {
2253                         checkUnknownElement( parser, strict );
2254                     }
2255                 }
2256             }
2257             else
2258             {
2259                 checkUnknownElement( parser, strict );
2260             }
2261         }
2262         return fileSet;
2263     } //-- FileSet parseFileSet( XmlPullParser, boolean, InputSource )
2264 
2265     /**
2266      * Method parseIssueManagement.
2267      * 
2268      * @param parser
2269      * @param source
2270      * @param strict
2271      * @throws IOException
2272      * @throws XmlPullParserException
2273      * @return IssueManagement
2274      */
2275     private IssueManagement parseIssueManagement( XmlPullParser parser, boolean strict, InputSource source )
2276         throws IOException, XmlPullParserException
2277     {
2278         String tagName = parser.getName();
2279         IssueManagement issueManagement = new IssueManagement();
2280         InputLocation _location;
2281         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2282         issueManagement.setLocation( "", _location );
2283         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2284         {
2285             String name = parser.getAttributeName( i );
2286             String value = parser.getAttributeValue( i );
2287 
2288             if ( name.indexOf( ':' ) >= 0 )
2289             {
2290                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2291             }
2292             else
2293             {
2294                 checkUnknownAttribute( parser, name, tagName, strict );
2295             }
2296         }
2297         java.util.Set parsed = new java.util.HashSet();
2298         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2299         {
2300             if ( checkFieldWithDuplicate( parser, "system", null, parsed ) )
2301             {
2302                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2303                 issueManagement.setLocation( "system", _location );
2304                 issueManagement.setSystem( getTrimmedValue( parser.nextText() ) );
2305             }
2306             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
2307             {
2308                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2309                 issueManagement.setLocation( "url", _location );
2310                 issueManagement.setUrl( getTrimmedValue( parser.nextText() ) );
2311             }
2312             else
2313             {
2314                 checkUnknownElement( parser, strict );
2315             }
2316         }
2317         return issueManagement;
2318     } //-- IssueManagement parseIssueManagement( XmlPullParser, boolean, InputSource )
2319 
2320     /**
2321      * Method parseLicense.
2322      * 
2323      * @param parser
2324      * @param source
2325      * @param strict
2326      * @throws IOException
2327      * @throws XmlPullParserException
2328      * @return License
2329      */
2330     private License parseLicense( XmlPullParser parser, boolean strict, InputSource source )
2331         throws IOException, XmlPullParserException
2332     {
2333         String tagName = parser.getName();
2334         License license = new License();
2335         InputLocation _location;
2336         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2337         license.setLocation( "", _location );
2338         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2339         {
2340             String name = parser.getAttributeName( i );
2341             String value = parser.getAttributeValue( i );
2342 
2343             if ( name.indexOf( ':' ) >= 0 )
2344             {
2345                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2346             }
2347             else
2348             {
2349                 checkUnknownAttribute( parser, name, tagName, strict );
2350             }
2351         }
2352         java.util.Set parsed = new java.util.HashSet();
2353         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2354         {
2355             if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
2356             {
2357                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2358                 license.setLocation( "name", _location );
2359                 license.setName( getTrimmedValue( parser.nextText() ) );
2360             }
2361             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
2362             {
2363                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2364                 license.setLocation( "url", _location );
2365                 license.setUrl( getTrimmedValue( parser.nextText() ) );
2366             }
2367             else if ( checkFieldWithDuplicate( parser, "distribution", null, parsed ) )
2368             {
2369                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2370                 license.setLocation( "distribution", _location );
2371                 license.setDistribution( getTrimmedValue( parser.nextText() ) );
2372             }
2373             else if ( checkFieldWithDuplicate( parser, "comments", null, parsed ) )
2374             {
2375                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2376                 license.setLocation( "comments", _location );
2377                 license.setComments( getTrimmedValue( parser.nextText() ) );
2378             }
2379             else
2380             {
2381                 checkUnknownElement( parser, strict );
2382             }
2383         }
2384         return license;
2385     } //-- License parseLicense( XmlPullParser, boolean, InputSource )
2386 
2387     /**
2388      * Method parseMailingList.
2389      * 
2390      * @param parser
2391      * @param source
2392      * @param strict
2393      * @throws IOException
2394      * @throws XmlPullParserException
2395      * @return MailingList
2396      */
2397     private MailingList parseMailingList( XmlPullParser parser, boolean strict, InputSource source )
2398         throws IOException, XmlPullParserException
2399     {
2400         String tagName = parser.getName();
2401         MailingList mailingList = new MailingList();
2402         InputLocation _location;
2403         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2404         mailingList.setLocation( "", _location );
2405         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2406         {
2407             String name = parser.getAttributeName( i );
2408             String value = parser.getAttributeValue( i );
2409 
2410             if ( name.indexOf( ':' ) >= 0 )
2411             {
2412                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2413             }
2414             else
2415             {
2416                 checkUnknownAttribute( parser, name, tagName, strict );
2417             }
2418         }
2419         java.util.Set parsed = new java.util.HashSet();
2420         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2421         {
2422             if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
2423             {
2424                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2425                 mailingList.setLocation( "name", _location );
2426                 mailingList.setName( getTrimmedValue( parser.nextText() ) );
2427             }
2428             else if ( checkFieldWithDuplicate( parser, "subscribe", null, parsed ) )
2429             {
2430                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2431                 mailingList.setLocation( "subscribe", _location );
2432                 mailingList.setSubscribe( getTrimmedValue( parser.nextText() ) );
2433             }
2434             else if ( checkFieldWithDuplicate( parser, "unsubscribe", null, parsed ) )
2435             {
2436                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2437                 mailingList.setLocation( "unsubscribe", _location );
2438                 mailingList.setUnsubscribe( getTrimmedValue( parser.nextText() ) );
2439             }
2440             else if ( checkFieldWithDuplicate( parser, "post", null, parsed ) )
2441             {
2442                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2443                 mailingList.setLocation( "post", _location );
2444                 mailingList.setPost( getTrimmedValue( parser.nextText() ) );
2445             }
2446             else if ( checkFieldWithDuplicate( parser, "archive", null, parsed ) )
2447             {
2448                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2449                 mailingList.setLocation( "archive", _location );
2450                 mailingList.setArchive( getTrimmedValue( parser.nextText() ) );
2451             }
2452             else if ( checkFieldWithDuplicate( parser, "otherArchives", null, parsed ) )
2453             {
2454                 java.util.List otherArchives = new java.util.ArrayList/*<String>*/();
2455                 mailingList.setOtherArchives( otherArchives );
2456                 InputLocation _locations;
2457                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2458                 mailingList.setLocation( "otherArchives", _locations );
2459                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2460                 {
2461                     if ( "otherArchive".equals( parser.getName() ) )
2462                     {
2463                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2464                         _locations.setLocation( Integer.valueOf( otherArchives.size() ), _location );
2465                         otherArchives.add( getTrimmedValue( parser.nextText() ) );
2466                     }
2467                     else
2468                     {
2469                         checkUnknownElement( parser, strict );
2470                     }
2471                 }
2472             }
2473             else
2474             {
2475                 checkUnknownElement( parser, strict );
2476             }
2477         }
2478         return mailingList;
2479     } //-- MailingList parseMailingList( XmlPullParser, boolean, InputSource )
2480 
2481     /**
2482      * Method parseModel.
2483      * 
2484      * @param parser
2485      * @param source
2486      * @param strict
2487      * @throws IOException
2488      * @throws XmlPullParserException
2489      * @return Model
2490      */
2491     private Model parseModel( XmlPullParser parser, boolean strict, InputSource source )
2492         throws IOException, XmlPullParserException
2493     {
2494         String tagName = parser.getName();
2495         Model model = new Model();
2496         InputLocation _location;
2497         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2498         model.setLocation( "", _location );
2499         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2500         {
2501             String name = parser.getAttributeName( i );
2502             String value = parser.getAttributeValue( i );
2503 
2504             if ( name.indexOf( ':' ) >= 0 )
2505             {
2506                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2507             }
2508             else if ( "xmlns".equals( name ) )
2509             {
2510                 // ignore xmlns attribute in root class, which is a reserved attribute name
2511             }
2512             else
2513             {
2514                 checkUnknownAttribute( parser, name, tagName, strict );
2515             }
2516         }
2517         java.util.Set parsed = new java.util.HashSet();
2518         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2519         {
2520             if ( checkFieldWithDuplicate( parser, "modelVersion", null, parsed ) )
2521             {
2522                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2523                 model.setLocation( "modelVersion", _location );
2524                 model.setModelVersion( getTrimmedValue( parser.nextText() ) );
2525             }
2526             else if ( checkFieldWithDuplicate( parser, "parent", null, parsed ) )
2527             {
2528                 model.setParent( parseParent( parser, strict, source ) );
2529             }
2530             else if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
2531             {
2532                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2533                 model.setLocation( "groupId", _location );
2534                 model.setGroupId( getTrimmedValue( parser.nextText() ) );
2535             }
2536             else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
2537             {
2538                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2539                 model.setLocation( "artifactId", _location );
2540                 model.setArtifactId( getTrimmedValue( parser.nextText() ) );
2541             }
2542             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
2543             {
2544                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2545                 model.setLocation( "version", _location );
2546                 model.setVersion( getTrimmedValue( parser.nextText() ) );
2547             }
2548             else if ( checkFieldWithDuplicate( parser, "packaging", null, parsed ) )
2549             {
2550                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2551                 model.setLocation( "packaging", _location );
2552                 model.setPackaging( getTrimmedValue( parser.nextText() ) );
2553             }
2554             else if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
2555             {
2556                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2557                 model.setLocation( "name", _location );
2558                 model.setName( getTrimmedValue( parser.nextText() ) );
2559             }
2560             else if ( checkFieldWithDuplicate( parser, "description", null, parsed ) )
2561             {
2562                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2563                 model.setLocation( "description", _location );
2564                 model.setDescription( getTrimmedValue( parser.nextText() ) );
2565             }
2566             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
2567             {
2568                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2569                 model.setLocation( "url", _location );
2570                 model.setUrl( getTrimmedValue( parser.nextText() ) );
2571             }
2572             else if ( checkFieldWithDuplicate( parser, "inceptionYear", null, parsed ) )
2573             {
2574                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2575                 model.setLocation( "inceptionYear", _location );
2576                 model.setInceptionYear( getTrimmedValue( parser.nextText() ) );
2577             }
2578             else if ( checkFieldWithDuplicate( parser, "organization", "organisation", parsed ) )
2579             {
2580                 model.setOrganization( parseOrganization( parser, strict, source ) );
2581             }
2582             else if ( checkFieldWithDuplicate( parser, "licenses", null, parsed ) )
2583             {
2584                 java.util.List licenses = new java.util.ArrayList/*<License>*/();
2585                 model.setLicenses( licenses );
2586                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2587                 {
2588                     if ( "license".equals( parser.getName() ) )
2589                     {
2590                         licenses.add( parseLicense( parser, strict, source ) );
2591                     }
2592                     else
2593                     {
2594                         checkUnknownElement( parser, strict );
2595                     }
2596                 }
2597             }
2598             else if ( checkFieldWithDuplicate( parser, "developers", null, parsed ) )
2599             {
2600                 java.util.List developers = new java.util.ArrayList/*<Developer>*/();
2601                 model.setDevelopers( developers );
2602                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2603                 {
2604                     if ( "developer".equals( parser.getName() ) )
2605                     {
2606                         developers.add( parseDeveloper( parser, strict, source ) );
2607                     }
2608                     else
2609                     {
2610                         checkUnknownElement( parser, strict );
2611                     }
2612                 }
2613             }
2614             else if ( checkFieldWithDuplicate( parser, "contributors", null, parsed ) )
2615             {
2616                 java.util.List contributors = new java.util.ArrayList/*<Contributor>*/();
2617                 model.setContributors( contributors );
2618                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2619                 {
2620                     if ( "contributor".equals( parser.getName() ) )
2621                     {
2622                         contributors.add( parseContributor( parser, strict, source ) );
2623                     }
2624                     else
2625                     {
2626                         checkUnknownElement( parser, strict );
2627                     }
2628                 }
2629             }
2630             else if ( checkFieldWithDuplicate( parser, "mailingLists", null, parsed ) )
2631             {
2632                 java.util.List mailingLists = new java.util.ArrayList/*<MailingList>*/();
2633                 model.setMailingLists( mailingLists );
2634                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2635                 {
2636                     if ( "mailingList".equals( parser.getName() ) )
2637                     {
2638                         mailingLists.add( parseMailingList( parser, strict, source ) );
2639                     }
2640                     else
2641                     {
2642                         checkUnknownElement( parser, strict );
2643                     }
2644                 }
2645             }
2646             else if ( checkFieldWithDuplicate( parser, "prerequisites", null, parsed ) )
2647             {
2648                 model.setPrerequisites( parsePrerequisites( parser, strict, source ) );
2649             }
2650             else if ( checkFieldWithDuplicate( parser, "modules", null, parsed ) )
2651             {
2652                 java.util.List modules = new java.util.ArrayList/*<String>*/();
2653                 model.setModules( modules );
2654                 InputLocation _locations;
2655                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2656                 model.setLocation( "modules", _locations );
2657                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2658                 {
2659                     if ( "module".equals( parser.getName() ) )
2660                     {
2661                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2662                         _locations.setLocation( Integer.valueOf( modules.size() ), _location );
2663                         modules.add( getTrimmedValue( parser.nextText() ) );
2664                     }
2665                     else
2666                     {
2667                         checkUnknownElement( parser, strict );
2668                     }
2669                 }
2670             }
2671             else if ( checkFieldWithDuplicate( parser, "scm", null, parsed ) )
2672             {
2673                 model.setScm( parseScm( parser, strict, source ) );
2674             }
2675             else if ( checkFieldWithDuplicate( parser, "issueManagement", null, parsed ) )
2676             {
2677                 model.setIssueManagement( parseIssueManagement( parser, strict, source ) );
2678             }
2679             else if ( checkFieldWithDuplicate( parser, "ciManagement", null, parsed ) )
2680             {
2681                 model.setCiManagement( parseCiManagement( parser, strict, source ) );
2682             }
2683             else if ( checkFieldWithDuplicate( parser, "distributionManagement", null, parsed ) )
2684             {
2685                 model.setDistributionManagement( parseDistributionManagement( parser, strict, source ) );
2686             }
2687             else if ( checkFieldWithDuplicate( parser, "properties", null, parsed ) )
2688             {
2689                 InputLocation _locations;
2690                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2691                 model.setLocation( "properties", _locations );
2692                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2693                 {
2694                     String key = parser.getName();
2695                     _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2696                     _locations.setLocation( key, _location );
2697                     String value = parser.nextText().trim();
2698                     model.addProperty( key, value );
2699                 }
2700             }
2701             else if ( checkFieldWithDuplicate( parser, "dependencyManagement", null, parsed ) )
2702             {
2703                 model.setDependencyManagement( parseDependencyManagement( parser, strict, source ) );
2704             }
2705             else if ( checkFieldWithDuplicate( parser, "dependencies", null, parsed ) )
2706             {
2707                 java.util.List dependencies = new java.util.ArrayList/*<Dependency>*/();
2708                 model.setDependencies( dependencies );
2709                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2710                 {
2711                     if ( "dependency".equals( parser.getName() ) )
2712                     {
2713                         dependencies.add( parseDependency( parser, strict, source ) );
2714                     }
2715                     else
2716                     {
2717                         checkUnknownElement( parser, strict );
2718                     }
2719                 }
2720             }
2721             else if ( checkFieldWithDuplicate( parser, "repositories", null, parsed ) )
2722             {
2723                 java.util.List repositories = new java.util.ArrayList/*<Repository>*/();
2724                 model.setRepositories( repositories );
2725                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2726                 {
2727                     if ( "repository".equals( parser.getName() ) )
2728                     {
2729                         repositories.add( parseRepository( parser, strict, source ) );
2730                     }
2731                     else
2732                     {
2733                         checkUnknownElement( parser, strict );
2734                     }
2735                 }
2736             }
2737             else if ( checkFieldWithDuplicate( parser, "pluginRepositories", null, parsed ) )
2738             {
2739                 java.util.List pluginRepositories = new java.util.ArrayList/*<Repository>*/();
2740                 model.setPluginRepositories( pluginRepositories );
2741                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2742                 {
2743                     if ( "pluginRepository".equals( parser.getName() ) )
2744                     {
2745                         pluginRepositories.add( parseRepository( parser, strict, source ) );
2746                     }
2747                     else
2748                     {
2749                         checkUnknownElement( parser, strict );
2750                     }
2751                 }
2752             }
2753             else if ( checkFieldWithDuplicate( parser, "build", null, parsed ) )
2754             {
2755                 model.setBuild( parseBuild( parser, strict, source ) );
2756             }
2757             else if ( checkFieldWithDuplicate( parser, "reports", null, parsed ) )
2758             {
2759                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2760                 model.setLocation( "reports", _location );
2761                 model.setReports( Xpp3DomBuilder.build( parser ) );
2762             }
2763             else if ( checkFieldWithDuplicate( parser, "reporting", null, parsed ) )
2764             {
2765                 model.setReporting( parseReporting( parser, strict, source ) );
2766             }
2767             else if ( checkFieldWithDuplicate( parser, "profiles", null, parsed ) )
2768             {
2769                 java.util.List profiles = new java.util.ArrayList/*<Profile>*/();
2770                 model.setProfiles( profiles );
2771                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2772                 {
2773                     if ( "profile".equals( parser.getName() ) )
2774                     {
2775                         profiles.add( parseProfile( parser, strict, source ) );
2776                     }
2777                     else
2778                     {
2779                         checkUnknownElement( parser, strict );
2780                     }
2781                 }
2782             }
2783             else
2784             {
2785                 checkUnknownElement( parser, strict );
2786             }
2787         }
2788         return model;
2789     } //-- Model parseModel( XmlPullParser, boolean, InputSource )
2790 
2791     /**
2792      * Method parseModelBase.
2793      * 
2794      * @param parser
2795      * @param source
2796      * @param strict
2797      * @throws IOException
2798      * @throws XmlPullParserException
2799      * @return ModelBase
2800      */
2801     private ModelBase parseModelBase( XmlPullParser parser, boolean strict, InputSource source )
2802         throws IOException, XmlPullParserException
2803     {
2804         String tagName = parser.getName();
2805         ModelBase modelBase = new ModelBase();
2806         InputLocation _location;
2807         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2808         modelBase.setLocation( "", _location );
2809         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2810         {
2811             String name = parser.getAttributeName( i );
2812             String value = parser.getAttributeValue( i );
2813 
2814             if ( name.indexOf( ':' ) >= 0 )
2815             {
2816                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2817             }
2818             else
2819             {
2820                 checkUnknownAttribute( parser, name, tagName, strict );
2821             }
2822         }
2823         java.util.Set parsed = new java.util.HashSet();
2824         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2825         {
2826             if ( checkFieldWithDuplicate( parser, "modules", null, parsed ) )
2827             {
2828                 java.util.List modules = new java.util.ArrayList/*<String>*/();
2829                 modelBase.setModules( modules );
2830                 InputLocation _locations;
2831                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2832                 modelBase.setLocation( "modules", _locations );
2833                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2834                 {
2835                     if ( "module".equals( parser.getName() ) )
2836                     {
2837                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2838                         _locations.setLocation( Integer.valueOf( modules.size() ), _location );
2839                         modules.add( getTrimmedValue( parser.nextText() ) );
2840                     }
2841                     else
2842                     {
2843                         checkUnknownElement( parser, strict );
2844                     }
2845                 }
2846             }
2847             else if ( checkFieldWithDuplicate( parser, "distributionManagement", null, parsed ) )
2848             {
2849                 modelBase.setDistributionManagement( parseDistributionManagement( parser, strict, source ) );
2850             }
2851             else if ( checkFieldWithDuplicate( parser, "properties", null, parsed ) )
2852             {
2853                 InputLocation _locations;
2854                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2855                 modelBase.setLocation( "properties", _locations );
2856                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2857                 {
2858                     String key = parser.getName();
2859                     _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2860                     _locations.setLocation( key, _location );
2861                     String value = parser.nextText().trim();
2862                     modelBase.addProperty( key, value );
2863                 }
2864             }
2865             else if ( checkFieldWithDuplicate( parser, "dependencyManagement", null, parsed ) )
2866             {
2867                 modelBase.setDependencyManagement( parseDependencyManagement( parser, strict, source ) );
2868             }
2869             else if ( checkFieldWithDuplicate( parser, "dependencies", null, parsed ) )
2870             {
2871                 java.util.List dependencies = new java.util.ArrayList/*<Dependency>*/();
2872                 modelBase.setDependencies( dependencies );
2873                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2874                 {
2875                     if ( "dependency".equals( parser.getName() ) )
2876                     {
2877                         dependencies.add( parseDependency( parser, strict, source ) );
2878                     }
2879                     else
2880                     {
2881                         checkUnknownElement( parser, strict );
2882                     }
2883                 }
2884             }
2885             else if ( checkFieldWithDuplicate( parser, "repositories", null, parsed ) )
2886             {
2887                 java.util.List repositories = new java.util.ArrayList/*<Repository>*/();
2888                 modelBase.setRepositories( repositories );
2889                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2890                 {
2891                     if ( "repository".equals( parser.getName() ) )
2892                     {
2893                         repositories.add( parseRepository( parser, strict, source ) );
2894                     }
2895                     else
2896                     {
2897                         checkUnknownElement( parser, strict );
2898                     }
2899                 }
2900             }
2901             else if ( checkFieldWithDuplicate( parser, "pluginRepositories", null, parsed ) )
2902             {
2903                 java.util.List pluginRepositories = new java.util.ArrayList/*<Repository>*/();
2904                 modelBase.setPluginRepositories( pluginRepositories );
2905                 while ( parser.nextTag() == XmlPullParser.START_TAG )
2906                 {
2907                     if ( "pluginRepository".equals( parser.getName() ) )
2908                     {
2909                         pluginRepositories.add( parseRepository( parser, strict, source ) );
2910                     }
2911                     else
2912                     {
2913                         checkUnknownElement( parser, strict );
2914                     }
2915                 }
2916             }
2917             else if ( checkFieldWithDuplicate( parser, "reports", null, parsed ) )
2918             {
2919                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2920                 modelBase.setLocation( "reports", _location );
2921                 modelBase.setReports( Xpp3DomBuilder.build( parser ) );
2922             }
2923             else if ( checkFieldWithDuplicate( parser, "reporting", null, parsed ) )
2924             {
2925                 modelBase.setReporting( parseReporting( parser, strict, source ) );
2926             }
2927             else
2928             {
2929                 checkUnknownElement( parser, strict );
2930             }
2931         }
2932         return modelBase;
2933     } //-- ModelBase parseModelBase( XmlPullParser, boolean, InputSource )
2934 
2935     /**
2936      * Method parseNotifier.
2937      * 
2938      * @param parser
2939      * @param source
2940      * @param strict
2941      * @throws IOException
2942      * @throws XmlPullParserException
2943      * @return Notifier
2944      */
2945     private Notifier parseNotifier( XmlPullParser parser, boolean strict, InputSource source )
2946         throws IOException, XmlPullParserException
2947     {
2948         String tagName = parser.getName();
2949         Notifier notifier = new Notifier();
2950         InputLocation _location;
2951         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2952         notifier.setLocation( "", _location );
2953         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
2954         {
2955             String name = parser.getAttributeName( i );
2956             String value = parser.getAttributeValue( i );
2957 
2958             if ( name.indexOf( ':' ) >= 0 )
2959             {
2960                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
2961             }
2962             else
2963             {
2964                 checkUnknownAttribute( parser, name, tagName, strict );
2965             }
2966         }
2967         java.util.Set parsed = new java.util.HashSet();
2968         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
2969         {
2970             if ( checkFieldWithDuplicate( parser, "type", null, parsed ) )
2971             {
2972                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2973                 notifier.setLocation( "type", _location );
2974                 notifier.setType( getTrimmedValue( parser.nextText() ) );
2975             }
2976             else if ( checkFieldWithDuplicate( parser, "sendOnError", null, parsed ) )
2977             {
2978                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2979                 notifier.setLocation( "sendOnError", _location );
2980                 notifier.setSendOnError( getBooleanValue( getTrimmedValue( parser.nextText() ), "sendOnError", parser, "true" ) );
2981             }
2982             else if ( checkFieldWithDuplicate( parser, "sendOnFailure", null, parsed ) )
2983             {
2984                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2985                 notifier.setLocation( "sendOnFailure", _location );
2986                 notifier.setSendOnFailure( getBooleanValue( getTrimmedValue( parser.nextText() ), "sendOnFailure", parser, "true" ) );
2987             }
2988             else if ( checkFieldWithDuplicate( parser, "sendOnSuccess", null, parsed ) )
2989             {
2990                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2991                 notifier.setLocation( "sendOnSuccess", _location );
2992                 notifier.setSendOnSuccess( getBooleanValue( getTrimmedValue( parser.nextText() ), "sendOnSuccess", parser, "true" ) );
2993             }
2994             else if ( checkFieldWithDuplicate( parser, "sendOnWarning", null, parsed ) )
2995             {
2996                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
2997                 notifier.setLocation( "sendOnWarning", _location );
2998                 notifier.setSendOnWarning( getBooleanValue( getTrimmedValue( parser.nextText() ), "sendOnWarning", parser, "true" ) );
2999             }
3000             else if ( checkFieldWithDuplicate( parser, "address", null, parsed ) )
3001             {
3002                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3003                 notifier.setLocation( "address", _location );
3004                 notifier.setAddress( getTrimmedValue( parser.nextText() ) );
3005             }
3006             else if ( checkFieldWithDuplicate( parser, "configuration", null, parsed ) )
3007             {
3008                 InputLocation _locations;
3009                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3010                 notifier.setLocation( "configuration", _locations );
3011                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3012                 {
3013                     String key = parser.getName();
3014                     _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3015                     _locations.setLocation( key, _location );
3016                     String value = parser.nextText().trim();
3017                     notifier.addConfiguration( key, value );
3018                 }
3019             }
3020             else
3021             {
3022                 checkUnknownElement( parser, strict );
3023             }
3024         }
3025         return notifier;
3026     } //-- Notifier parseNotifier( XmlPullParser, boolean, InputSource )
3027 
3028     /**
3029      * Method parseOrganization.
3030      * 
3031      * @param parser
3032      * @param source
3033      * @param strict
3034      * @throws IOException
3035      * @throws XmlPullParserException
3036      * @return Organization
3037      */
3038     private Organization parseOrganization( XmlPullParser parser, boolean strict, InputSource source )
3039         throws IOException, XmlPullParserException
3040     {
3041         String tagName = parser.getName();
3042         Organization organization = new Organization();
3043         InputLocation _location;
3044         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3045         organization.setLocation( "", _location );
3046         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3047         {
3048             String name = parser.getAttributeName( i );
3049             String value = parser.getAttributeValue( i );
3050 
3051             if ( name.indexOf( ':' ) >= 0 )
3052             {
3053                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3054             }
3055             else
3056             {
3057                 checkUnknownAttribute( parser, name, tagName, strict );
3058             }
3059         }
3060         java.util.Set parsed = new java.util.HashSet();
3061         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3062         {
3063             if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
3064             {
3065                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3066                 organization.setLocation( "name", _location );
3067                 organization.setName( getTrimmedValue( parser.nextText() ) );
3068             }
3069             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
3070             {
3071                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3072                 organization.setLocation( "url", _location );
3073                 organization.setUrl( getTrimmedValue( parser.nextText() ) );
3074             }
3075             else
3076             {
3077                 checkUnknownElement( parser, strict );
3078             }
3079         }
3080         return organization;
3081     } //-- Organization parseOrganization( XmlPullParser, boolean, InputSource )
3082 
3083     /**
3084      * Method parseParent.
3085      * 
3086      * @param parser
3087      * @param source
3088      * @param strict
3089      * @throws IOException
3090      * @throws XmlPullParserException
3091      * @return Parent
3092      */
3093     private Parent parseParent( XmlPullParser parser, boolean strict, InputSource source )
3094         throws IOException, XmlPullParserException
3095     {
3096         String tagName = parser.getName();
3097         Parent parent = new Parent();
3098         InputLocation _location;
3099         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3100         parent.setLocation( "", _location );
3101         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3102         {
3103             String name = parser.getAttributeName( i );
3104             String value = parser.getAttributeValue( i );
3105 
3106             if ( name.indexOf( ':' ) >= 0 )
3107             {
3108                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3109             }
3110             else
3111             {
3112                 checkUnknownAttribute( parser, name, tagName, strict );
3113             }
3114         }
3115         java.util.Set parsed = new java.util.HashSet();
3116         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3117         {
3118             if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
3119             {
3120                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3121                 parent.setLocation( "groupId", _location );
3122                 parent.setGroupId( getTrimmedValue( parser.nextText() ) );
3123             }
3124             else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
3125             {
3126                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3127                 parent.setLocation( "artifactId", _location );
3128                 parent.setArtifactId( getTrimmedValue( parser.nextText() ) );
3129             }
3130             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
3131             {
3132                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3133                 parent.setLocation( "version", _location );
3134                 parent.setVersion( getTrimmedValue( parser.nextText() ) );
3135             }
3136             else if ( checkFieldWithDuplicate( parser, "relativePath", null, parsed ) )
3137             {
3138                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3139                 parent.setLocation( "relativePath", _location );
3140                 parent.setRelativePath( getTrimmedValue( parser.nextText() ) );
3141             }
3142             else
3143             {
3144                 checkUnknownElement( parser, strict );
3145             }
3146         }
3147         return parent;
3148     } //-- Parent parseParent( XmlPullParser, boolean, InputSource )
3149 
3150     /**
3151      * Method parsePatternSet.
3152      * 
3153      * @param parser
3154      * @param source
3155      * @param strict
3156      * @throws IOException
3157      * @throws XmlPullParserException
3158      * @return PatternSet
3159      */
3160     private PatternSet parsePatternSet( XmlPullParser parser, boolean strict, InputSource source )
3161         throws IOException, XmlPullParserException
3162     {
3163         String tagName = parser.getName();
3164         PatternSet patternSet = new PatternSet();
3165         InputLocation _location;
3166         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3167         patternSet.setLocation( "", _location );
3168         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3169         {
3170             String name = parser.getAttributeName( i );
3171             String value = parser.getAttributeValue( i );
3172 
3173             if ( name.indexOf( ':' ) >= 0 )
3174             {
3175                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3176             }
3177             else
3178             {
3179                 checkUnknownAttribute( parser, name, tagName, strict );
3180             }
3181         }
3182         java.util.Set parsed = new java.util.HashSet();
3183         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3184         {
3185             if ( checkFieldWithDuplicate( parser, "includes", null, parsed ) )
3186             {
3187                 java.util.List includes = new java.util.ArrayList/*<String>*/();
3188                 patternSet.setIncludes( includes );
3189                 InputLocation _locations;
3190                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3191                 patternSet.setLocation( "includes", _locations );
3192                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3193                 {
3194                     if ( "include".equals( parser.getName() ) )
3195                     {
3196                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3197                         _locations.setLocation( Integer.valueOf( includes.size() ), _location );
3198                         includes.add( getTrimmedValue( parser.nextText() ) );
3199                     }
3200                     else
3201                     {
3202                         checkUnknownElement( parser, strict );
3203                     }
3204                 }
3205             }
3206             else if ( checkFieldWithDuplicate( parser, "excludes", null, parsed ) )
3207             {
3208                 java.util.List excludes = new java.util.ArrayList/*<String>*/();
3209                 patternSet.setExcludes( excludes );
3210                 InputLocation _locations;
3211                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3212                 patternSet.setLocation( "excludes", _locations );
3213                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3214                 {
3215                     if ( "exclude".equals( parser.getName() ) )
3216                     {
3217                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3218                         _locations.setLocation( Integer.valueOf( excludes.size() ), _location );
3219                         excludes.add( getTrimmedValue( parser.nextText() ) );
3220                     }
3221                     else
3222                     {
3223                         checkUnknownElement( parser, strict );
3224                     }
3225                 }
3226             }
3227             else
3228             {
3229                 checkUnknownElement( parser, strict );
3230             }
3231         }
3232         return patternSet;
3233     } //-- PatternSet parsePatternSet( XmlPullParser, boolean, InputSource )
3234 
3235     /**
3236      * Method parsePlugin.
3237      * 
3238      * @param parser
3239      * @param source
3240      * @param strict
3241      * @throws IOException
3242      * @throws XmlPullParserException
3243      * @return Plugin
3244      */
3245     private Plugin parsePlugin( XmlPullParser parser, boolean strict, InputSource source )
3246         throws IOException, XmlPullParserException
3247     {
3248         String tagName = parser.getName();
3249         Plugin plugin = new Plugin();
3250         InputLocation _location;
3251         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3252         plugin.setLocation( "", _location );
3253         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3254         {
3255             String name = parser.getAttributeName( i );
3256             String value = parser.getAttributeValue( i );
3257 
3258             if ( name.indexOf( ':' ) >= 0 )
3259             {
3260                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3261             }
3262             else
3263             {
3264                 checkUnknownAttribute( parser, name, tagName, strict );
3265             }
3266         }
3267         java.util.Set parsed = new java.util.HashSet();
3268         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3269         {
3270             if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
3271             {
3272                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3273                 plugin.setLocation( "groupId", _location );
3274                 plugin.setGroupId( getTrimmedValue( parser.nextText() ) );
3275             }
3276             else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
3277             {
3278                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3279                 plugin.setLocation( "artifactId", _location );
3280                 plugin.setArtifactId( getTrimmedValue( parser.nextText() ) );
3281             }
3282             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
3283             {
3284                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3285                 plugin.setLocation( "version", _location );
3286                 plugin.setVersion( getTrimmedValue( parser.nextText() ) );
3287             }
3288             else if ( checkFieldWithDuplicate( parser, "extensions", null, parsed ) )
3289             {
3290                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3291                 plugin.setLocation( "extensions", _location );
3292                 plugin.setExtensions( getTrimmedValue( parser.nextText() ) );
3293             }
3294             else if ( checkFieldWithDuplicate( parser, "executions", null, parsed ) )
3295             {
3296                 java.util.List executions = new java.util.ArrayList/*<PluginExecution>*/();
3297                 plugin.setExecutions( executions );
3298                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3299                 {
3300                     if ( "execution".equals( parser.getName() ) )
3301                     {
3302                         executions.add( parsePluginExecution( parser, strict, source ) );
3303                     }
3304                     else
3305                     {
3306                         checkUnknownElement( parser, strict );
3307                     }
3308                 }
3309             }
3310             else if ( checkFieldWithDuplicate( parser, "dependencies", null, parsed ) )
3311             {
3312                 java.util.List dependencies = new java.util.ArrayList/*<Dependency>*/();
3313                 plugin.setDependencies( dependencies );
3314                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3315                 {
3316                     if ( "dependency".equals( parser.getName() ) )
3317                     {
3318                         dependencies.add( parseDependency( parser, strict, source ) );
3319                     }
3320                     else
3321                     {
3322                         checkUnknownElement( parser, strict );
3323                     }
3324                 }
3325             }
3326             else if ( checkFieldWithDuplicate( parser, "goals", null, parsed ) )
3327             {
3328                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3329                 plugin.setLocation( "goals", _location );
3330                 plugin.setGoals( Xpp3DomBuilder.build( parser ) );
3331             }
3332             else if ( checkFieldWithDuplicate( parser, "inherited", null, parsed ) )
3333             {
3334                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3335                 plugin.setLocation( "inherited", _location );
3336                 plugin.setInherited( getTrimmedValue( parser.nextText() ) );
3337             }
3338             else if ( checkFieldWithDuplicate( parser, "configuration", null, parsed ) )
3339             {
3340                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3341                 plugin.setLocation( "configuration", _location );
3342                 plugin.setConfiguration( Xpp3DomBuilder.build( parser ) );
3343             }
3344             else
3345             {
3346                 checkUnknownElement( parser, strict );
3347             }
3348         }
3349         return plugin;
3350     } //-- Plugin parsePlugin( XmlPullParser, boolean, InputSource )
3351 
3352     /**
3353      * Method parsePluginConfiguration.
3354      * 
3355      * @param parser
3356      * @param source
3357      * @param strict
3358      * @throws IOException
3359      * @throws XmlPullParserException
3360      * @return PluginConfiguration
3361      */
3362     private PluginConfiguration parsePluginConfiguration( XmlPullParser parser, boolean strict, InputSource source )
3363         throws IOException, XmlPullParserException
3364     {
3365         String tagName = parser.getName();
3366         PluginConfiguration pluginConfiguration = new PluginConfiguration();
3367         InputLocation _location;
3368         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3369         pluginConfiguration.setLocation( "", _location );
3370         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3371         {
3372             String name = parser.getAttributeName( i );
3373             String value = parser.getAttributeValue( i );
3374 
3375             if ( name.indexOf( ':' ) >= 0 )
3376             {
3377                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3378             }
3379             else
3380             {
3381                 checkUnknownAttribute( parser, name, tagName, strict );
3382             }
3383         }
3384         java.util.Set parsed = new java.util.HashSet();
3385         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3386         {
3387             if ( checkFieldWithDuplicate( parser, "pluginManagement", null, parsed ) )
3388             {
3389                 pluginConfiguration.setPluginManagement( parsePluginManagement( parser, strict, source ) );
3390             }
3391             else if ( checkFieldWithDuplicate( parser, "plugins", null, parsed ) )
3392             {
3393                 java.util.List plugins = new java.util.ArrayList/*<Plugin>*/();
3394                 pluginConfiguration.setPlugins( plugins );
3395                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3396                 {
3397                     if ( "plugin".equals( parser.getName() ) )
3398                     {
3399                         plugins.add( parsePlugin( parser, strict, source ) );
3400                     }
3401                     else
3402                     {
3403                         checkUnknownElement( parser, strict );
3404                     }
3405                 }
3406             }
3407             else
3408             {
3409                 checkUnknownElement( parser, strict );
3410             }
3411         }
3412         return pluginConfiguration;
3413     } //-- PluginConfiguration parsePluginConfiguration( XmlPullParser, boolean, InputSource )
3414 
3415     /**
3416      * Method parsePluginContainer.
3417      * 
3418      * @param parser
3419      * @param source
3420      * @param strict
3421      * @throws IOException
3422      * @throws XmlPullParserException
3423      * @return PluginContainer
3424      */
3425     private PluginContainer parsePluginContainer( XmlPullParser parser, boolean strict, InputSource source )
3426         throws IOException, XmlPullParserException
3427     {
3428         String tagName = parser.getName();
3429         PluginContainer pluginContainer = new PluginContainer();
3430         InputLocation _location;
3431         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3432         pluginContainer.setLocation( "", _location );
3433         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3434         {
3435             String name = parser.getAttributeName( i );
3436             String value = parser.getAttributeValue( i );
3437 
3438             if ( name.indexOf( ':' ) >= 0 )
3439             {
3440                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3441             }
3442             else
3443             {
3444                 checkUnknownAttribute( parser, name, tagName, strict );
3445             }
3446         }
3447         java.util.Set parsed = new java.util.HashSet();
3448         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3449         {
3450             if ( checkFieldWithDuplicate( parser, "plugins", null, parsed ) )
3451             {
3452                 java.util.List plugins = new java.util.ArrayList/*<Plugin>*/();
3453                 pluginContainer.setPlugins( plugins );
3454                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3455                 {
3456                     if ( "plugin".equals( parser.getName() ) )
3457                     {
3458                         plugins.add( parsePlugin( parser, strict, source ) );
3459                     }
3460                     else
3461                     {
3462                         checkUnknownElement( parser, strict );
3463                     }
3464                 }
3465             }
3466             else
3467             {
3468                 checkUnknownElement( parser, strict );
3469             }
3470         }
3471         return pluginContainer;
3472     } //-- PluginContainer parsePluginContainer( XmlPullParser, boolean, InputSource )
3473 
3474     /**
3475      * Method parsePluginExecution.
3476      * 
3477      * @param parser
3478      * @param source
3479      * @param strict
3480      * @throws IOException
3481      * @throws XmlPullParserException
3482      * @return PluginExecution
3483      */
3484     private PluginExecution parsePluginExecution( XmlPullParser parser, boolean strict, InputSource source )
3485         throws IOException, XmlPullParserException
3486     {
3487         String tagName = parser.getName();
3488         PluginExecution pluginExecution = new PluginExecution();
3489         InputLocation _location;
3490         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3491         pluginExecution.setLocation( "", _location );
3492         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3493         {
3494             String name = parser.getAttributeName( i );
3495             String value = parser.getAttributeValue( i );
3496 
3497             if ( name.indexOf( ':' ) >= 0 )
3498             {
3499                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3500             }
3501             else
3502             {
3503                 checkUnknownAttribute( parser, name, tagName, strict );
3504             }
3505         }
3506         java.util.Set parsed = new java.util.HashSet();
3507         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3508         {
3509             if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
3510             {
3511                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3512                 pluginExecution.setLocation( "id", _location );
3513                 pluginExecution.setId( getTrimmedValue( parser.nextText() ) );
3514             }
3515             else if ( checkFieldWithDuplicate( parser, "phase", null, parsed ) )
3516             {
3517                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3518                 pluginExecution.setLocation( "phase", _location );
3519                 pluginExecution.setPhase( getTrimmedValue( parser.nextText() ) );
3520             }
3521             else if ( checkFieldWithDuplicate( parser, "goals", null, parsed ) )
3522             {
3523                 java.util.List goals = new java.util.ArrayList/*<String>*/();
3524                 pluginExecution.setGoals( goals );
3525                 InputLocation _locations;
3526                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3527                 pluginExecution.setLocation( "goals", _locations );
3528                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3529                 {
3530                     if ( "goal".equals( parser.getName() ) )
3531                     {
3532                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3533                         _locations.setLocation( Integer.valueOf( goals.size() ), _location );
3534                         goals.add( getTrimmedValue( parser.nextText() ) );
3535                     }
3536                     else
3537                     {
3538                         checkUnknownElement( parser, strict );
3539                     }
3540                 }
3541             }
3542             else if ( checkFieldWithDuplicate( parser, "inherited", null, parsed ) )
3543             {
3544                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3545                 pluginExecution.setLocation( "inherited", _location );
3546                 pluginExecution.setInherited( getTrimmedValue( parser.nextText() ) );
3547             }
3548             else if ( checkFieldWithDuplicate( parser, "configuration", null, parsed ) )
3549             {
3550                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3551                 pluginExecution.setLocation( "configuration", _location );
3552                 pluginExecution.setConfiguration( Xpp3DomBuilder.build( parser ) );
3553             }
3554             else
3555             {
3556                 checkUnknownElement( parser, strict );
3557             }
3558         }
3559         return pluginExecution;
3560     } //-- PluginExecution parsePluginExecution( XmlPullParser, boolean, InputSource )
3561 
3562     /**
3563      * Method parsePluginManagement.
3564      * 
3565      * @param parser
3566      * @param source
3567      * @param strict
3568      * @throws IOException
3569      * @throws XmlPullParserException
3570      * @return PluginManagement
3571      */
3572     private PluginManagement parsePluginManagement( XmlPullParser parser, boolean strict, InputSource source )
3573         throws IOException, XmlPullParserException
3574     {
3575         String tagName = parser.getName();
3576         PluginManagement pluginManagement = new PluginManagement();
3577         InputLocation _location;
3578         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3579         pluginManagement.setLocation( "", _location );
3580         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3581         {
3582             String name = parser.getAttributeName( i );
3583             String value = parser.getAttributeValue( i );
3584 
3585             if ( name.indexOf( ':' ) >= 0 )
3586             {
3587                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3588             }
3589             else
3590             {
3591                 checkUnknownAttribute( parser, name, tagName, strict );
3592             }
3593         }
3594         java.util.Set parsed = new java.util.HashSet();
3595         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3596         {
3597             if ( checkFieldWithDuplicate( parser, "plugins", null, parsed ) )
3598             {
3599                 java.util.List plugins = new java.util.ArrayList/*<Plugin>*/();
3600                 pluginManagement.setPlugins( plugins );
3601                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3602                 {
3603                     if ( "plugin".equals( parser.getName() ) )
3604                     {
3605                         plugins.add( parsePlugin( parser, strict, source ) );
3606                     }
3607                     else
3608                     {
3609                         checkUnknownElement( parser, strict );
3610                     }
3611                 }
3612             }
3613             else
3614             {
3615                 checkUnknownElement( parser, strict );
3616             }
3617         }
3618         return pluginManagement;
3619     } //-- PluginManagement parsePluginManagement( XmlPullParser, boolean, InputSource )
3620 
3621     /**
3622      * Method parsePrerequisites.
3623      * 
3624      * @param parser
3625      * @param source
3626      * @param strict
3627      * @throws IOException
3628      * @throws XmlPullParserException
3629      * @return Prerequisites
3630      */
3631     private Prerequisites parsePrerequisites( XmlPullParser parser, boolean strict, InputSource source )
3632         throws IOException, XmlPullParserException
3633     {
3634         String tagName = parser.getName();
3635         Prerequisites prerequisites = new Prerequisites();
3636         InputLocation _location;
3637         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3638         prerequisites.setLocation( "", _location );
3639         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3640         {
3641             String name = parser.getAttributeName( i );
3642             String value = parser.getAttributeValue( i );
3643 
3644             if ( name.indexOf( ':' ) >= 0 )
3645             {
3646                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3647             }
3648             else
3649             {
3650                 checkUnknownAttribute( parser, name, tagName, strict );
3651             }
3652         }
3653         java.util.Set parsed = new java.util.HashSet();
3654         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3655         {
3656             if ( checkFieldWithDuplicate( parser, "maven", null, parsed ) )
3657             {
3658                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3659                 prerequisites.setLocation( "maven", _location );
3660                 prerequisites.setMaven( getTrimmedValue( parser.nextText() ) );
3661             }
3662             else
3663             {
3664                 checkUnknownElement( parser, strict );
3665             }
3666         }
3667         return prerequisites;
3668     } //-- Prerequisites parsePrerequisites( XmlPullParser, boolean, InputSource )
3669 
3670     /**
3671      * Method parseProfile.
3672      * 
3673      * @param parser
3674      * @param source
3675      * @param strict
3676      * @throws IOException
3677      * @throws XmlPullParserException
3678      * @return Profile
3679      */
3680     private Profile parseProfile( XmlPullParser parser, boolean strict, InputSource source )
3681         throws IOException, XmlPullParserException
3682     {
3683         String tagName = parser.getName();
3684         Profile profile = new Profile();
3685         InputLocation _location;
3686         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3687         profile.setLocation( "", _location );
3688         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3689         {
3690             String name = parser.getAttributeName( i );
3691             String value = parser.getAttributeValue( i );
3692 
3693             if ( name.indexOf( ':' ) >= 0 )
3694             {
3695                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3696             }
3697             else
3698             {
3699                 checkUnknownAttribute( parser, name, tagName, strict );
3700             }
3701         }
3702         java.util.Set parsed = new java.util.HashSet();
3703         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3704         {
3705             if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
3706             {
3707                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3708                 profile.setLocation( "id", _location );
3709                 profile.setId( getTrimmedValue( parser.nextText() ) );
3710             }
3711             else if ( checkFieldWithDuplicate( parser, "activation", null, parsed ) )
3712             {
3713                 profile.setActivation( parseActivation( parser, strict, source ) );
3714             }
3715             else if ( checkFieldWithDuplicate( parser, "build", null, parsed ) )
3716             {
3717                 profile.setBuild( parseBuildBase( parser, strict, source ) );
3718             }
3719             else if ( checkFieldWithDuplicate( parser, "modules", null, parsed ) )
3720             {
3721                 java.util.List modules = new java.util.ArrayList/*<String>*/();
3722                 profile.setModules( modules );
3723                 InputLocation _locations;
3724                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3725                 profile.setLocation( "modules", _locations );
3726                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3727                 {
3728                     if ( "module".equals( parser.getName() ) )
3729                     {
3730                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3731                         _locations.setLocation( Integer.valueOf( modules.size() ), _location );
3732                         modules.add( getTrimmedValue( parser.nextText() ) );
3733                     }
3734                     else
3735                     {
3736                         checkUnknownElement( parser, strict );
3737                     }
3738                 }
3739             }
3740             else if ( checkFieldWithDuplicate( parser, "distributionManagement", null, parsed ) )
3741             {
3742                 profile.setDistributionManagement( parseDistributionManagement( parser, strict, source ) );
3743             }
3744             else if ( checkFieldWithDuplicate( parser, "properties", null, parsed ) )
3745             {
3746                 InputLocation _locations;
3747                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3748                 profile.setLocation( "properties", _locations );
3749                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3750                 {
3751                     String key = parser.getName();
3752                     _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3753                     _locations.setLocation( key, _location );
3754                     String value = parser.nextText().trim();
3755                     profile.addProperty( key, value );
3756                 }
3757             }
3758             else if ( checkFieldWithDuplicate( parser, "dependencyManagement", null, parsed ) )
3759             {
3760                 profile.setDependencyManagement( parseDependencyManagement( parser, strict, source ) );
3761             }
3762             else if ( checkFieldWithDuplicate( parser, "dependencies", null, parsed ) )
3763             {
3764                 java.util.List dependencies = new java.util.ArrayList/*<Dependency>*/();
3765                 profile.setDependencies( dependencies );
3766                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3767                 {
3768                     if ( "dependency".equals( parser.getName() ) )
3769                     {
3770                         dependencies.add( parseDependency( parser, strict, source ) );
3771                     }
3772                     else
3773                     {
3774                         checkUnknownElement( parser, strict );
3775                     }
3776                 }
3777             }
3778             else if ( checkFieldWithDuplicate( parser, "repositories", null, parsed ) )
3779             {
3780                 java.util.List repositories = new java.util.ArrayList/*<Repository>*/();
3781                 profile.setRepositories( repositories );
3782                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3783                 {
3784                     if ( "repository".equals( parser.getName() ) )
3785                     {
3786                         repositories.add( parseRepository( parser, strict, source ) );
3787                     }
3788                     else
3789                     {
3790                         checkUnknownElement( parser, strict );
3791                     }
3792                 }
3793             }
3794             else if ( checkFieldWithDuplicate( parser, "pluginRepositories", null, parsed ) )
3795             {
3796                 java.util.List pluginRepositories = new java.util.ArrayList/*<Repository>*/();
3797                 profile.setPluginRepositories( pluginRepositories );
3798                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3799                 {
3800                     if ( "pluginRepository".equals( parser.getName() ) )
3801                     {
3802                         pluginRepositories.add( parseRepository( parser, strict, source ) );
3803                     }
3804                     else
3805                     {
3806                         checkUnknownElement( parser, strict );
3807                     }
3808                 }
3809             }
3810             else if ( checkFieldWithDuplicate( parser, "reports", null, parsed ) )
3811             {
3812                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3813                 profile.setLocation( "reports", _location );
3814                 profile.setReports( Xpp3DomBuilder.build( parser ) );
3815             }
3816             else if ( checkFieldWithDuplicate( parser, "reporting", null, parsed ) )
3817             {
3818                 profile.setReporting( parseReporting( parser, strict, source ) );
3819             }
3820             else
3821             {
3822                 checkUnknownElement( parser, strict );
3823             }
3824         }
3825         return profile;
3826     } //-- Profile parseProfile( XmlPullParser, boolean, InputSource )
3827 
3828     /**
3829      * Method parseRelocation.
3830      * 
3831      * @param parser
3832      * @param source
3833      * @param strict
3834      * @throws IOException
3835      * @throws XmlPullParserException
3836      * @return Relocation
3837      */
3838     private Relocation parseRelocation( XmlPullParser parser, boolean strict, InputSource source )
3839         throws IOException, XmlPullParserException
3840     {
3841         String tagName = parser.getName();
3842         Relocation relocation = new Relocation();
3843         InputLocation _location;
3844         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3845         relocation.setLocation( "", _location );
3846         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3847         {
3848             String name = parser.getAttributeName( i );
3849             String value = parser.getAttributeValue( i );
3850 
3851             if ( name.indexOf( ':' ) >= 0 )
3852             {
3853                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3854             }
3855             else
3856             {
3857                 checkUnknownAttribute( parser, name, tagName, strict );
3858             }
3859         }
3860         java.util.Set parsed = new java.util.HashSet();
3861         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3862         {
3863             if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
3864             {
3865                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3866                 relocation.setLocation( "groupId", _location );
3867                 relocation.setGroupId( getTrimmedValue( parser.nextText() ) );
3868             }
3869             else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
3870             {
3871                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3872                 relocation.setLocation( "artifactId", _location );
3873                 relocation.setArtifactId( getTrimmedValue( parser.nextText() ) );
3874             }
3875             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
3876             {
3877                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3878                 relocation.setLocation( "version", _location );
3879                 relocation.setVersion( getTrimmedValue( parser.nextText() ) );
3880             }
3881             else if ( checkFieldWithDuplicate( parser, "message", null, parsed ) )
3882             {
3883                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3884                 relocation.setLocation( "message", _location );
3885                 relocation.setMessage( getTrimmedValue( parser.nextText() ) );
3886             }
3887             else
3888             {
3889                 checkUnknownElement( parser, strict );
3890             }
3891         }
3892         return relocation;
3893     } //-- Relocation parseRelocation( XmlPullParser, boolean, InputSource )
3894 
3895     /**
3896      * Method parseReportPlugin.
3897      * 
3898      * @param parser
3899      * @param source
3900      * @param strict
3901      * @throws IOException
3902      * @throws XmlPullParserException
3903      * @return ReportPlugin
3904      */
3905     private ReportPlugin parseReportPlugin( XmlPullParser parser, boolean strict, InputSource source )
3906         throws IOException, XmlPullParserException
3907     {
3908         String tagName = parser.getName();
3909         ReportPlugin reportPlugin = new ReportPlugin();
3910         InputLocation _location;
3911         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3912         reportPlugin.setLocation( "", _location );
3913         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
3914         {
3915             String name = parser.getAttributeName( i );
3916             String value = parser.getAttributeValue( i );
3917 
3918             if ( name.indexOf( ':' ) >= 0 )
3919             {
3920                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
3921             }
3922             else
3923             {
3924                 checkUnknownAttribute( parser, name, tagName, strict );
3925             }
3926         }
3927         java.util.Set parsed = new java.util.HashSet();
3928         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
3929         {
3930             if ( checkFieldWithDuplicate( parser, "groupId", null, parsed ) )
3931             {
3932                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3933                 reportPlugin.setLocation( "groupId", _location );
3934                 reportPlugin.setGroupId( getTrimmedValue( parser.nextText() ) );
3935             }
3936             else if ( checkFieldWithDuplicate( parser, "artifactId", null, parsed ) )
3937             {
3938                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3939                 reportPlugin.setLocation( "artifactId", _location );
3940                 reportPlugin.setArtifactId( getTrimmedValue( parser.nextText() ) );
3941             }
3942             else if ( checkFieldWithDuplicate( parser, "version", null, parsed ) )
3943             {
3944                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3945                 reportPlugin.setLocation( "version", _location );
3946                 reportPlugin.setVersion( getTrimmedValue( parser.nextText() ) );
3947             }
3948             else if ( checkFieldWithDuplicate( parser, "reportSets", null, parsed ) )
3949             {
3950                 java.util.List reportSets = new java.util.ArrayList/*<ReportSet>*/();
3951                 reportPlugin.setReportSets( reportSets );
3952                 while ( parser.nextTag() == XmlPullParser.START_TAG )
3953                 {
3954                     if ( "reportSet".equals( parser.getName() ) )
3955                     {
3956                         reportSets.add( parseReportSet( parser, strict, source ) );
3957                     }
3958                     else
3959                     {
3960                         checkUnknownElement( parser, strict );
3961                     }
3962                 }
3963             }
3964             else if ( checkFieldWithDuplicate( parser, "inherited", null, parsed ) )
3965             {
3966                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3967                 reportPlugin.setLocation( "inherited", _location );
3968                 reportPlugin.setInherited( getTrimmedValue( parser.nextText() ) );
3969             }
3970             else if ( checkFieldWithDuplicate( parser, "configuration", null, parsed ) )
3971             {
3972                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
3973                 reportPlugin.setLocation( "configuration", _location );
3974                 reportPlugin.setConfiguration( Xpp3DomBuilder.build( parser ) );
3975             }
3976             else
3977             {
3978                 checkUnknownElement( parser, strict );
3979             }
3980         }
3981         return reportPlugin;
3982     } //-- ReportPlugin parseReportPlugin( XmlPullParser, boolean, InputSource )
3983 
3984     /**
3985      * Method parseReportSet.
3986      * 
3987      * @param parser
3988      * @param source
3989      * @param strict
3990      * @throws IOException
3991      * @throws XmlPullParserException
3992      * @return ReportSet
3993      */
3994     private ReportSet parseReportSet( XmlPullParser parser, boolean strict, InputSource source )
3995         throws IOException, XmlPullParserException
3996     {
3997         String tagName = parser.getName();
3998         ReportSet reportSet = new ReportSet();
3999         InputLocation _location;
4000         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4001         reportSet.setLocation( "", _location );
4002         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4003         {
4004             String name = parser.getAttributeName( i );
4005             String value = parser.getAttributeValue( i );
4006 
4007             if ( name.indexOf( ':' ) >= 0 )
4008             {
4009                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4010             }
4011             else
4012             {
4013                 checkUnknownAttribute( parser, name, tagName, strict );
4014             }
4015         }
4016         java.util.Set parsed = new java.util.HashSet();
4017         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4018         {
4019             if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
4020             {
4021                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4022                 reportSet.setLocation( "id", _location );
4023                 reportSet.setId( getTrimmedValue( parser.nextText() ) );
4024             }
4025             else if ( checkFieldWithDuplicate( parser, "reports", null, parsed ) )
4026             {
4027                 java.util.List reports = new java.util.ArrayList/*<String>*/();
4028                 reportSet.setReports( reports );
4029                 InputLocation _locations;
4030                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4031                 reportSet.setLocation( "reports", _locations );
4032                 while ( parser.nextTag() == XmlPullParser.START_TAG )
4033                 {
4034                     if ( "report".equals( parser.getName() ) )
4035                     {
4036                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4037                         _locations.setLocation( Integer.valueOf( reports.size() ), _location );
4038                         reports.add( getTrimmedValue( parser.nextText() ) );
4039                     }
4040                     else
4041                     {
4042                         checkUnknownElement( parser, strict );
4043                     }
4044                 }
4045             }
4046             else if ( checkFieldWithDuplicate( parser, "inherited", null, parsed ) )
4047             {
4048                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4049                 reportSet.setLocation( "inherited", _location );
4050                 reportSet.setInherited( getTrimmedValue( parser.nextText() ) );
4051             }
4052             else if ( checkFieldWithDuplicate( parser, "configuration", null, parsed ) )
4053             {
4054                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4055                 reportSet.setLocation( "configuration", _location );
4056                 reportSet.setConfiguration( Xpp3DomBuilder.build( parser ) );
4057             }
4058             else
4059             {
4060                 checkUnknownElement( parser, strict );
4061             }
4062         }
4063         return reportSet;
4064     } //-- ReportSet parseReportSet( XmlPullParser, boolean, InputSource )
4065 
4066     /**
4067      * Method parseReporting.
4068      * 
4069      * @param parser
4070      * @param source
4071      * @param strict
4072      * @throws IOException
4073      * @throws XmlPullParserException
4074      * @return Reporting
4075      */
4076     private Reporting parseReporting( XmlPullParser parser, boolean strict, InputSource source )
4077         throws IOException, XmlPullParserException
4078     {
4079         String tagName = parser.getName();
4080         Reporting reporting = new Reporting();
4081         InputLocation _location;
4082         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4083         reporting.setLocation( "", _location );
4084         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4085         {
4086             String name = parser.getAttributeName( i );
4087             String value = parser.getAttributeValue( i );
4088 
4089             if ( name.indexOf( ':' ) >= 0 )
4090             {
4091                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4092             }
4093             else
4094             {
4095                 checkUnknownAttribute( parser, name, tagName, strict );
4096             }
4097         }
4098         java.util.Set parsed = new java.util.HashSet();
4099         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4100         {
4101             if ( checkFieldWithDuplicate( parser, "excludeDefaults", null, parsed ) )
4102             {
4103                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4104                 reporting.setLocation( "excludeDefaults", _location );
4105                 reporting.setExcludeDefaults( getTrimmedValue( parser.nextText() ) );
4106             }
4107             else if ( checkFieldWithDuplicate( parser, "outputDirectory", null, parsed ) )
4108             {
4109                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4110                 reporting.setLocation( "outputDirectory", _location );
4111                 reporting.setOutputDirectory( getTrimmedValue( parser.nextText() ) );
4112             }
4113             else if ( checkFieldWithDuplicate( parser, "plugins", null, parsed ) )
4114             {
4115                 java.util.List plugins = new java.util.ArrayList/*<ReportPlugin>*/();
4116                 reporting.setPlugins( plugins );
4117                 while ( parser.nextTag() == XmlPullParser.START_TAG )
4118                 {
4119                     if ( "plugin".equals( parser.getName() ) )
4120                     {
4121                         plugins.add( parseReportPlugin( parser, strict, source ) );
4122                     }
4123                     else
4124                     {
4125                         checkUnknownElement( parser, strict );
4126                     }
4127                 }
4128             }
4129             else
4130             {
4131                 checkUnknownElement( parser, strict );
4132             }
4133         }
4134         return reporting;
4135     } //-- Reporting parseReporting( XmlPullParser, boolean, InputSource )
4136 
4137     /**
4138      * Method parseRepository.
4139      * 
4140      * @param parser
4141      * @param source
4142      * @param strict
4143      * @throws IOException
4144      * @throws XmlPullParserException
4145      * @return Repository
4146      */
4147     private Repository parseRepository( XmlPullParser parser, boolean strict, InputSource source )
4148         throws IOException, XmlPullParserException
4149     {
4150         String tagName = parser.getName();
4151         Repository repository = new Repository();
4152         InputLocation _location;
4153         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4154         repository.setLocation( "", _location );
4155         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4156         {
4157             String name = parser.getAttributeName( i );
4158             String value = parser.getAttributeValue( i );
4159 
4160             if ( name.indexOf( ':' ) >= 0 )
4161             {
4162                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4163             }
4164             else
4165             {
4166                 checkUnknownAttribute( parser, name, tagName, strict );
4167             }
4168         }
4169         java.util.Set parsed = new java.util.HashSet();
4170         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4171         {
4172             if ( checkFieldWithDuplicate( parser, "releases", null, parsed ) )
4173             {
4174                 repository.setReleases( parseRepositoryPolicy( parser, strict, source ) );
4175             }
4176             else if ( checkFieldWithDuplicate( parser, "snapshots", null, parsed ) )
4177             {
4178                 repository.setSnapshots( parseRepositoryPolicy( parser, strict, source ) );
4179             }
4180             else if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
4181             {
4182                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4183                 repository.setLocation( "id", _location );
4184                 repository.setId( getTrimmedValue( parser.nextText() ) );
4185             }
4186             else if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
4187             {
4188                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4189                 repository.setLocation( "name", _location );
4190                 repository.setName( getTrimmedValue( parser.nextText() ) );
4191             }
4192             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
4193             {
4194                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4195                 repository.setLocation( "url", _location );
4196                 repository.setUrl( getTrimmedValue( parser.nextText() ) );
4197             }
4198             else if ( checkFieldWithDuplicate( parser, "layout", null, parsed ) )
4199             {
4200                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4201                 repository.setLocation( "layout", _location );
4202                 repository.setLayout( getTrimmedValue( parser.nextText() ) );
4203             }
4204             else
4205             {
4206                 checkUnknownElement( parser, strict );
4207             }
4208         }
4209         return repository;
4210     } //-- Repository parseRepository( XmlPullParser, boolean, InputSource )
4211 
4212     /**
4213      * Method parseRepositoryBase.
4214      * 
4215      * @param parser
4216      * @param source
4217      * @param strict
4218      * @throws IOException
4219      * @throws XmlPullParserException
4220      * @return RepositoryBase
4221      */
4222     private RepositoryBase parseRepositoryBase( XmlPullParser parser, boolean strict, InputSource source )
4223         throws IOException, XmlPullParserException
4224     {
4225         String tagName = parser.getName();
4226         RepositoryBase repositoryBase = new RepositoryBase();
4227         InputLocation _location;
4228         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4229         repositoryBase.setLocation( "", _location );
4230         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4231         {
4232             String name = parser.getAttributeName( i );
4233             String value = parser.getAttributeValue( i );
4234 
4235             if ( name.indexOf( ':' ) >= 0 )
4236             {
4237                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4238             }
4239             else
4240             {
4241                 checkUnknownAttribute( parser, name, tagName, strict );
4242             }
4243         }
4244         java.util.Set parsed = new java.util.HashSet();
4245         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4246         {
4247             if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
4248             {
4249                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4250                 repositoryBase.setLocation( "id", _location );
4251                 repositoryBase.setId( getTrimmedValue( parser.nextText() ) );
4252             }
4253             else if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
4254             {
4255                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4256                 repositoryBase.setLocation( "name", _location );
4257                 repositoryBase.setName( getTrimmedValue( parser.nextText() ) );
4258             }
4259             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
4260             {
4261                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4262                 repositoryBase.setLocation( "url", _location );
4263                 repositoryBase.setUrl( getTrimmedValue( parser.nextText() ) );
4264             }
4265             else if ( checkFieldWithDuplicate( parser, "layout", null, parsed ) )
4266             {
4267                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4268                 repositoryBase.setLocation( "layout", _location );
4269                 repositoryBase.setLayout( getTrimmedValue( parser.nextText() ) );
4270             }
4271             else
4272             {
4273                 checkUnknownElement( parser, strict );
4274             }
4275         }
4276         return repositoryBase;
4277     } //-- RepositoryBase parseRepositoryBase( XmlPullParser, boolean, InputSource )
4278 
4279     /**
4280      * Method parseRepositoryPolicy.
4281      * 
4282      * @param parser
4283      * @param source
4284      * @param strict
4285      * @throws IOException
4286      * @throws XmlPullParserException
4287      * @return RepositoryPolicy
4288      */
4289     private RepositoryPolicy parseRepositoryPolicy( XmlPullParser parser, boolean strict, InputSource source )
4290         throws IOException, XmlPullParserException
4291     {
4292         String tagName = parser.getName();
4293         RepositoryPolicy repositoryPolicy = new RepositoryPolicy();
4294         InputLocation _location;
4295         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4296         repositoryPolicy.setLocation( "", _location );
4297         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4298         {
4299             String name = parser.getAttributeName( i );
4300             String value = parser.getAttributeValue( i );
4301 
4302             if ( name.indexOf( ':' ) >= 0 )
4303             {
4304                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4305             }
4306             else
4307             {
4308                 checkUnknownAttribute( parser, name, tagName, strict );
4309             }
4310         }
4311         java.util.Set parsed = new java.util.HashSet();
4312         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4313         {
4314             if ( checkFieldWithDuplicate( parser, "enabled", null, parsed ) )
4315             {
4316                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4317                 repositoryPolicy.setLocation( "enabled", _location );
4318                 repositoryPolicy.setEnabled( getTrimmedValue( parser.nextText() ) );
4319             }
4320             else if ( checkFieldWithDuplicate( parser, "updatePolicy", null, parsed ) )
4321             {
4322                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4323                 repositoryPolicy.setLocation( "updatePolicy", _location );
4324                 repositoryPolicy.setUpdatePolicy( getTrimmedValue( parser.nextText() ) );
4325             }
4326             else if ( checkFieldWithDuplicate( parser, "checksumPolicy", null, parsed ) )
4327             {
4328                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4329                 repositoryPolicy.setLocation( "checksumPolicy", _location );
4330                 repositoryPolicy.setChecksumPolicy( getTrimmedValue( parser.nextText() ) );
4331             }
4332             else
4333             {
4334                 checkUnknownElement( parser, strict );
4335             }
4336         }
4337         return repositoryPolicy;
4338     } //-- RepositoryPolicy parseRepositoryPolicy( XmlPullParser, boolean, InputSource )
4339 
4340     /**
4341      * Method parseResource.
4342      * 
4343      * @param parser
4344      * @param source
4345      * @param strict
4346      * @throws IOException
4347      * @throws XmlPullParserException
4348      * @return Resource
4349      */
4350     private Resource parseResource( XmlPullParser parser, boolean strict, InputSource source )
4351         throws IOException, XmlPullParserException
4352     {
4353         String tagName = parser.getName();
4354         Resource resource = new Resource();
4355         InputLocation _location;
4356         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4357         resource.setLocation( "", _location );
4358         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4359         {
4360             String name = parser.getAttributeName( i );
4361             String value = parser.getAttributeValue( i );
4362 
4363             if ( name.indexOf( ':' ) >= 0 )
4364             {
4365                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4366             }
4367             else
4368             {
4369                 checkUnknownAttribute( parser, name, tagName, strict );
4370             }
4371         }
4372         java.util.Set parsed = new java.util.HashSet();
4373         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4374         {
4375             if ( checkFieldWithDuplicate( parser, "targetPath", null, parsed ) )
4376             {
4377                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4378                 resource.setLocation( "targetPath", _location );
4379                 resource.setTargetPath( getTrimmedValue( parser.nextText() ) );
4380             }
4381             else if ( checkFieldWithDuplicate( parser, "filtering", null, parsed ) )
4382             {
4383                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4384                 resource.setLocation( "filtering", _location );
4385                 resource.setFiltering( getTrimmedValue( parser.nextText() ) );
4386             }
4387             else if ( checkFieldWithDuplicate( parser, "directory", null, parsed ) )
4388             {
4389                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4390                 resource.setLocation( "directory", _location );
4391                 resource.setDirectory( getTrimmedValue( parser.nextText() ) );
4392             }
4393             else if ( checkFieldWithDuplicate( parser, "includes", null, parsed ) )
4394             {
4395                 java.util.List includes = new java.util.ArrayList/*<String>*/();
4396                 resource.setIncludes( includes );
4397                 InputLocation _locations;
4398                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4399                 resource.setLocation( "includes", _locations );
4400                 while ( parser.nextTag() == XmlPullParser.START_TAG )
4401                 {
4402                     if ( "include".equals( parser.getName() ) )
4403                     {
4404                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4405                         _locations.setLocation( Integer.valueOf( includes.size() ), _location );
4406                         includes.add( getTrimmedValue( parser.nextText() ) );
4407                     }
4408                     else
4409                     {
4410                         checkUnknownElement( parser, strict );
4411                     }
4412                 }
4413             }
4414             else if ( checkFieldWithDuplicate( parser, "excludes", null, parsed ) )
4415             {
4416                 java.util.List excludes = new java.util.ArrayList/*<String>*/();
4417                 resource.setExcludes( excludes );
4418                 InputLocation _locations;
4419                 _locations = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4420                 resource.setLocation( "excludes", _locations );
4421                 while ( parser.nextTag() == XmlPullParser.START_TAG )
4422                 {
4423                     if ( "exclude".equals( parser.getName() ) )
4424                     {
4425                         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4426                         _locations.setLocation( Integer.valueOf( excludes.size() ), _location );
4427                         excludes.add( getTrimmedValue( parser.nextText() ) );
4428                     }
4429                     else
4430                     {
4431                         checkUnknownElement( parser, strict );
4432                     }
4433                 }
4434             }
4435             else
4436             {
4437                 checkUnknownElement( parser, strict );
4438             }
4439         }
4440         return resource;
4441     } //-- Resource parseResource( XmlPullParser, boolean, InputSource )
4442 
4443     /**
4444      * Method parseScm.
4445      * 
4446      * @param parser
4447      * @param source
4448      * @param strict
4449      * @throws IOException
4450      * @throws XmlPullParserException
4451      * @return Scm
4452      */
4453     private Scm parseScm( XmlPullParser parser, boolean strict, InputSource source )
4454         throws IOException, XmlPullParserException
4455     {
4456         String tagName = parser.getName();
4457         Scm scm = new Scm();
4458         InputLocation _location;
4459         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4460         scm.setLocation( "", _location );
4461         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4462         {
4463             String name = parser.getAttributeName( i );
4464             String value = parser.getAttributeValue( i );
4465 
4466             if ( name.indexOf( ':' ) >= 0 )
4467             {
4468                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4469             }
4470             else
4471             {
4472                 checkUnknownAttribute( parser, name, tagName, strict );
4473             }
4474         }
4475         java.util.Set parsed = new java.util.HashSet();
4476         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4477         {
4478             if ( checkFieldWithDuplicate( parser, "connection", null, parsed ) )
4479             {
4480                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4481                 scm.setLocation( "connection", _location );
4482                 scm.setConnection( getTrimmedValue( parser.nextText() ) );
4483             }
4484             else if ( checkFieldWithDuplicate( parser, "developerConnection", null, parsed ) )
4485             {
4486                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4487                 scm.setLocation( "developerConnection", _location );
4488                 scm.setDeveloperConnection( getTrimmedValue( parser.nextText() ) );
4489             }
4490             else if ( checkFieldWithDuplicate( parser, "tag", null, parsed ) )
4491             {
4492                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4493                 scm.setLocation( "tag", _location );
4494                 scm.setTag( getTrimmedValue( parser.nextText() ) );
4495             }
4496             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
4497             {
4498                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4499                 scm.setLocation( "url", _location );
4500                 scm.setUrl( getTrimmedValue( parser.nextText() ) );
4501             }
4502             else
4503             {
4504                 checkUnknownElement( parser, strict );
4505             }
4506         }
4507         return scm;
4508     } //-- Scm parseScm( XmlPullParser, boolean, InputSource )
4509 
4510     /**
4511      * Method parseSite.
4512      * 
4513      * @param parser
4514      * @param source
4515      * @param strict
4516      * @throws IOException
4517      * @throws XmlPullParserException
4518      * @return Site
4519      */
4520     private Site parseSite( XmlPullParser parser, boolean strict, InputSource source )
4521         throws IOException, XmlPullParserException
4522     {
4523         String tagName = parser.getName();
4524         Site site = new Site();
4525         InputLocation _location;
4526         _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4527         site.setLocation( "", _location );
4528         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
4529         {
4530             String name = parser.getAttributeName( i );
4531             String value = parser.getAttributeValue( i );
4532 
4533             if ( name.indexOf( ':' ) >= 0 )
4534             {
4535                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
4536             }
4537             else
4538             {
4539                 checkUnknownAttribute( parser, name, tagName, strict );
4540             }
4541         }
4542         java.util.Set parsed = new java.util.HashSet();
4543         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
4544         {
4545             if ( checkFieldWithDuplicate( parser, "id", null, parsed ) )
4546             {
4547                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4548                 site.setLocation( "id", _location );
4549                 site.setId( getTrimmedValue( parser.nextText() ) );
4550             }
4551             else if ( checkFieldWithDuplicate( parser, "name", null, parsed ) )
4552             {
4553                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4554                 site.setLocation( "name", _location );
4555                 site.setName( getTrimmedValue( parser.nextText() ) );
4556             }
4557             else if ( checkFieldWithDuplicate( parser, "url", null, parsed ) )
4558             {
4559                 _location = new InputLocation( parser.getLineNumber(), parser.getColumnNumber(), source );
4560                 site.setLocation( "url", _location );
4561                 site.setUrl( getTrimmedValue( parser.nextText() ) );
4562             }
4563             else
4564             {
4565                 checkUnknownElement( parser, strict );
4566             }
4567         }
4568         return site;
4569     } //-- Site parseSite( XmlPullParser, boolean, InputSource )
4570 
4571     /**
4572      * @see ReaderFactory#newXmlReader
4573      * 
4574      * @param reader
4575      * @param source
4576      * @param strict
4577      * @throws IOException
4578      * @throws XmlPullParserException
4579      * @return Model
4580      */
4581     public Model read( Reader reader, boolean strict, InputSource source )
4582         throws IOException, XmlPullParserException
4583     {
4584         XmlPullParser parser = new MXParser();
4585 
4586         parser.setInput( reader );
4587 
4588         initParser( parser );
4589 
4590         return read( parser, strict, source );
4591     } //-- Model read( Reader, boolean, InputSource )
4592 
4593     /**
4594      * Method read.
4595      * 
4596      * @param in
4597      * @param source
4598      * @param strict
4599      * @throws IOException
4600      * @throws XmlPullParserException
4601      * @return Model
4602      */
4603     public Model read( InputStream in, boolean strict, InputSource source )
4604         throws IOException, XmlPullParserException
4605     {
4606         return read( ReaderFactory.newXmlReader( in ), strict, source );
4607     } //-- Model read( InputStream, boolean, InputSource )
4608 
4609     /**
4610      * Method read.
4611      * 
4612      * @param parser
4613      * @param source
4614      * @param strict
4615      * @throws IOException
4616      * @throws XmlPullParserException
4617      * @return Model
4618      */
4619     private Model read( XmlPullParser parser, boolean strict, InputSource source )
4620         throws IOException, XmlPullParserException
4621     {
4622         int eventType = parser.getEventType();
4623         while ( eventType != XmlPullParser.END_DOCUMENT )
4624         {
4625             if ( eventType == XmlPullParser.START_TAG )
4626             {
4627                 if ( strict && ! "project".equals( parser.getName() ) )
4628                 {
4629                     throw new XmlPullParserException( "Expected root element 'project' but found '" + parser.getName() + "'", parser, null );
4630                 }
4631                 Model model = parseModel( parser, strict, source );
4632                 model.setModelEncoding( parser.getInputEncoding() );
4633                 return model;
4634             }
4635             eventType = parser.next();
4636         }
4637         throw new XmlPullParserException( "Expected root element 'project' but found no element at all: invalid XML document", parser, null );
4638     } //-- Model read( XmlPullParser, boolean, InputSource )
4639 
4640     /**
4641      * Sets the state of the "add default entities" flag.
4642      * 
4643      * @param addDefaultEntities
4644      */
4645     public void setAddDefaultEntities( boolean addDefaultEntities )
4646     {
4647         this.addDefaultEntities = addDefaultEntities;
4648     } //-- void setAddDefaultEntities( boolean )
4649 
4650 }