View Javadoc
1   // =================== DO NOT EDIT THIS FILE ====================
2   //   Generated by Maven, any modifications will be overwritten.
3   // ==============================================================
4   package org.apache.maven.toolchain.v4;
5   
6   import java.io.IOException;
7   import java.io.InputStream;
8   import java.io.Reader;
9   import java.text.DateFormat;
10  import java.util.ArrayList;
11  import java.util.Date;
12  import java.util.HashMap;
13  import java.util.HashSet;
14  import java.util.LinkedHashMap;
15  import java.util.List;
16  import java.util.Map;
17  import java.util.Properties;
18  import java.util.Set;
19  import org.apache.maven.api.annotations.Generated;
20  import org.apache.maven.internal.xml.DomBuilder;
21  import org.apache.maven.api.toolchain.TrackableBase;
22  import org.apache.maven.api.toolchain.PersistedToolchains;
23  import org.apache.maven.api.toolchain.ToolchainModel;
24  import org.codehaus.plexus.util.ReaderFactory;
25  import org.codehaus.plexus.util.xml.pull.EntityReplacementMap;
26  import org.codehaus.plexus.util.xml.pull.MXParser;
27  import org.codehaus.plexus.util.xml.pull.XmlPullParser;
28  import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
29  
30  @Generated
31  public class MavenToolchainsXpp3Reader
32  {
33      private boolean addDefaultEntities = true;
34  
35      private final ContentTransformer contentTransformer;
36  
37      public MavenToolchainsXpp3Reader()
38      {
39          this( ( s, f ) -> s );
40      }
41  
42      public MavenToolchainsXpp3Reader( ContentTransformer contentTransformer )
43      {
44          this.contentTransformer = contentTransformer;
45      }
46  
47      /**
48       * Method checkFieldWithDuplicate.
49       *
50       * @param parser a parser object.
51       * @param parsed a parsed object.
52       * @param alias a alias object.
53       * @param tagName a tagName object.
54       * @throws XmlPullParserException XmlPullParserException if
55       * any.
56       * @return boolean
57       */
58      private boolean checkFieldWithDuplicate( XmlPullParser parser, String tagName, String alias, Set<String> parsed )
59          throws XmlPullParserException
60      {
61          if ( !( parser.getName().equals( tagName ) || parser.getName().equals( alias ) ) )
62          {
63              return false;
64          }
65          if ( !parsed.add( tagName ) )
66          {
67              throw new XmlPullParserException( "Duplicated tag: '" + tagName + "'", parser, null );
68          }
69          return true;
70      } //-- boolean checkFieldWithDuplicate( XmlPullParser, String, String, Set<String> )
71  
72      /**
73       * Method checkUnknownAttribute.
74       *
75       * @param parser a parser object.
76       * @param strict a strict object.
77       * @param tagName a tagName object.
78       * @param attribute a attribute object.
79       * @throws XmlPullParserException XmlPullParserException if
80       * any.
81       * @throws IOException IOException if any.
82       */
83      private void checkUnknownAttribute( XmlPullParser parser, String attribute, String tagName, boolean strict )
84          throws XmlPullParserException, IOException
85      {
86          // strictXmlAttributes = true for model: if strict == true, not only elements are checked but attributes too
87          if ( strict )
88          {
89              throw new XmlPullParserException( "Unknown attribute '" + attribute + "' for tag '" + tagName + "'", parser, null );
90          }
91      } //-- void checkUnknownAttribute( XmlPullParser, String, String, boolean )
92  
93      /**
94       * Method checkUnknownElement.
95       *
96       * @param parser a parser object.
97       * @param strict a strict object.
98       * @throws XmlPullParserException XmlPullParserException if
99       * any.
100      * @throws IOException IOException if any.
101      */
102     private void checkUnknownElement( XmlPullParser parser, boolean strict )
103         throws XmlPullParserException, IOException
104     {
105         if ( strict )
106         {
107             throw new XmlPullParserException( "Unrecognised tag: '" + parser.getName() + "'", parser, null );
108         }
109 
110         for ( int unrecognizedTagCount = 1; unrecognizedTagCount > 0; )
111         {
112             int eventType = parser.next();
113             if ( eventType == XmlPullParser.START_TAG )
114             {
115                 unrecognizedTagCount++;
116             }
117             else if ( eventType == XmlPullParser.END_TAG )
118             {
119                 unrecognizedTagCount--;
120             }
121         }
122     } //-- void checkUnknownElement( XmlPullParser, boolean )
123 
124     /**
125      * Returns the state of the "add default entities" flag.
126      *
127      * @return boolean
128      */
129     public boolean getAddDefaultEntities()
130     {
131         return addDefaultEntities;
132     } //-- boolean getAddDefaultEntities()
133 
134     /**
135      * Method getBooleanValue.
136      *
137      * @param s a s object.
138      * @param parser a parser object.
139      * @param attribute a attribute object.
140      * @throws XmlPullParserException XmlPullParserException if
141      * any.
142      * @return boolean
143      */
144     private boolean getBooleanValue( String s, String attribute, XmlPullParser parser )
145         throws XmlPullParserException
146     {
147         return getBooleanValue( s, attribute, parser, null );
148     } //-- boolean getBooleanValue( String, String, XmlPullParser )
149 
150     /**
151      * Method getBooleanValue.
152      *
153      * @param s a s object.
154      * @param defaultValue a defaultValue object.
155      * @param parser a parser object.
156      * @param attribute a attribute object.
157      * @throws XmlPullParserException XmlPullParserException if
158      * any.
159      * @return boolean
160      */
161     private boolean getBooleanValue( String s, String attribute, XmlPullParser parser, String defaultValue )
162         throws XmlPullParserException
163     {
164         if ( s != null && s.length() != 0 )
165         {
166             return Boolean.valueOf( s ).booleanValue();
167         }
168         if ( defaultValue != null )
169         {
170             return Boolean.valueOf( defaultValue ).booleanValue();
171         }
172         return false;
173     } //-- boolean getBooleanValue( String, String, XmlPullParser, String )
174 
175     /**
176      * Method getByteValue.
177      *
178      * @param s a s object.
179      * @param strict a strict object.
180      * @param parser a parser object.
181      * @param attribute a attribute object.
182      * @throws XmlPullParserException XmlPullParserException if
183      * any.
184      * @return byte
185      */
186     private byte getByteValue( String s, String attribute, XmlPullParser parser, boolean strict )
187         throws XmlPullParserException
188     {
189         if ( s != null )
190         {
191             try
192             {
193                 return Byte.valueOf( s ).byteValue();
194             }
195             catch ( NumberFormatException nfe )
196             {
197                 if ( strict )
198                 {
199                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a byte", parser, nfe );
200                 }
201             }
202         }
203         return 0;
204     } //-- byte getByteValue( String, String, XmlPullParser, boolean )
205 
206     /**
207      * Method getCharacterValue.
208      *
209      * @param s a s object.
210      * @param parser a parser object.
211      * @param attribute a attribute object.
212      * @throws XmlPullParserException XmlPullParserException if
213      * any.
214      * @return char
215      */
216     private char getCharacterValue( String s, String attribute, XmlPullParser parser )
217         throws XmlPullParserException
218     {
219         if ( s != null )
220         {
221             return s.charAt( 0 );
222         }
223         return 0;
224     } //-- char getCharacterValue( String, String, XmlPullParser )
225 
226     /**
227      * Method getDateValue.
228      *
229      * @param s a s object.
230      * @param parser a parser object.
231      * @param attribute a attribute object.
232      * @throws XmlPullParserException XmlPullParserException if
233      * any.
234      * @return Date
235      */
236     private Date getDateValue( String s, String attribute, XmlPullParser parser )
237         throws XmlPullParserException
238     {
239         return getDateValue( s, attribute, null, parser );
240     } //-- Date getDateValue( String, String, XmlPullParser )
241 
242     /**
243      * Method getDateValue.
244      *
245      * @param s a s object.
246      * @param parser a parser object.
247      * @param dateFormat a dateFormat object.
248      * @param attribute a attribute object.
249      * @throws XmlPullParserException XmlPullParserException if
250      * any.
251      * @return Date
252      */
253     private Date getDateValue( String s, String attribute, String dateFormat, XmlPullParser parser )
254         throws XmlPullParserException
255     {
256         if ( s != null )
257         {
258             String effectiveDateFormat = dateFormat;
259             if ( dateFormat == null )
260             {
261                 effectiveDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS";
262             }
263             if ( "long".equals( effectiveDateFormat ) )
264             {
265                 try
266                 {
267                     return new java.util.Date( Long.parseLong( s ) );
268                 }
269                 catch ( NumberFormatException e )
270                 {
271                     throw new XmlPullParserException( e.getMessage(), parser, e );
272                 }
273             }
274             else
275             {
276                 try
277                 {
278                     DateFormat dateParser = new java.text.SimpleDateFormat( effectiveDateFormat, java.util.Locale.US );
279                     return dateParser.parse( s );
280                 }
281                 catch ( java.text.ParseException e )
282                 {
283                     throw new XmlPullParserException( e.getMessage(), parser, e );
284                 }
285             }
286         }
287         return null;
288     } //-- Date getDateValue( String, String, String, XmlPullParser )
289 
290     /**
291      * Method getDoubleValue.
292      *
293      * @param s a s object.
294      * @param strict a strict object.
295      * @param parser a parser object.
296      * @param attribute a attribute object.
297      * @throws XmlPullParserException XmlPullParserException if
298      * any.
299      * @return double
300      */
301     private double getDoubleValue( String s, String attribute, XmlPullParser parser, boolean strict )
302         throws XmlPullParserException
303     {
304         if ( s != null )
305         {
306             try
307             {
308                 return Double.valueOf( s ).doubleValue();
309             }
310             catch ( NumberFormatException nfe )
311             {
312                 if ( strict )
313                 {
314                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, nfe );
315                 }
316             }
317         }
318         return 0;
319     } //-- double getDoubleValue( String, String, XmlPullParser, boolean )
320 
321     /**
322      * Method getFloatValue.
323      *
324      * @param s a s object.
325      * @param strict a strict object.
326      * @param parser a parser object.
327      * @param attribute a attribute object.
328      * @throws XmlPullParserException XmlPullParserException if
329      * any.
330      * @return float
331      */
332     private float getFloatValue( String s, String attribute, XmlPullParser parser, boolean strict )
333         throws XmlPullParserException
334     {
335         if ( s != null )
336         {
337             try
338             {
339                 return Float.valueOf( s ).floatValue();
340             }
341             catch ( NumberFormatException nfe )
342             {
343                 if ( strict )
344                 {
345                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a floating point number", parser, nfe );
346                 }
347             }
348         }
349         return 0;
350     } //-- float getFloatValue( String, String, XmlPullParser, boolean )
351 
352     /**
353      * Method getIntegerValue.
354      *
355      * @param s a s object.
356      * @param parser a parser object.
357      * @param attribute a attribute object.
358      * @throws XmlPullParserException XmlPullParserException if
359      * any.
360      * @return int
361      */
362     private int getIntegerValue( String s, String attribute, XmlPullParser parser, boolean strict )
363         throws XmlPullParserException
364     {
365         return getIntegerValue( s, attribute, parser, strict, 0 );
366     } //-- int getBooleanValue( String, String, XmlPullParser )
367 
368     /**
369      * Method getIntegerValue.
370      *
371      * @param s a s object.
372      * @param strict a strict object.
373      * @param parser a parser object.
374      * @param attribute a attribute object.
375      * @throws XmlPullParserException XmlPullParserException if
376      * any.
377      * @return int
378      */
379     private int getIntegerValue( String s, String attribute, XmlPullParser parser, boolean strict, int defaultValue )
380         throws XmlPullParserException
381     {
382         if ( s != null )
383         {
384             try
385             {
386                 return Integer.valueOf( s ).intValue();
387             }
388             catch ( NumberFormatException nfe )
389             {
390                 if ( strict )
391                 {
392                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be an integer", parser, nfe );
393                 }
394             }
395         }
396         return defaultValue;
397     } //-- int getIntegerValue( String, String, XmlPullParser, boolean, int )
398 
399     /**
400      * Method getLongValue.
401      *
402      * @param s a s object.
403      * @param strict a strict object.
404      * @param parser a parser object.
405      * @param attribute a attribute object.
406      * @throws XmlPullParserException XmlPullParserException if
407      * any.
408      * @return long
409      */
410     private long getLongValue( String s, String attribute, XmlPullParser parser, boolean strict )
411         throws XmlPullParserException
412     {
413         if ( s != null )
414         {
415             try
416             {
417                 return Long.valueOf( s ).longValue();
418             }
419             catch ( NumberFormatException nfe )
420             {
421                 if ( strict )
422                 {
423                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a long integer", parser, nfe );
424                 }
425             }
426         }
427         return 0;
428     } //-- long getLongValue( String, String, XmlPullParser, boolean )
429 
430     /**
431      * Method getRequiredAttributeValue.
432      *
433      * @param s a s object.
434      * @param strict a strict object.
435      * @param parser a parser object.
436      * @param attribute a attribute object.
437      * @throws XmlPullParserException XmlPullParserException if
438      * any.
439      * @return String
440      */
441     private String getRequiredAttributeValue( String s, String attribute, XmlPullParser parser, boolean strict )
442         throws XmlPullParserException
443     {
444         if ( s == null )
445         {
446             if ( strict )
447             {
448                 throw new XmlPullParserException( "Missing required value for attribute '" + attribute + "'", parser, null );
449             }
450         }
451         return s;
452     } //-- String getRequiredAttributeValue( String, String, XmlPullParser, boolean )
453 
454     /**
455      * Method getShortValue.
456      *
457      * @param s a s object.
458      * @param strict a strict object.
459      * @param parser a parser object.
460      * @param attribute a attribute object.
461      * @throws XmlPullParserException XmlPullParserException if
462      * any.
463      * @return short
464      */
465     private short getShortValue( String s, String attribute, XmlPullParser parser, boolean strict )
466         throws XmlPullParserException
467     {
468         if ( s != null )
469         {
470             try
471             {
472                 return Short.valueOf( s ).shortValue();
473             }
474             catch ( NumberFormatException nfe )
475             {
476                 if ( strict )
477                 {
478                     throw new XmlPullParserException( "Unable to parse element '" + attribute + "', must be a short integer", parser, nfe );
479                 }
480             }
481         }
482         return 0;
483     } //-- short getShortValue( String, String, XmlPullParser, boolean )
484 
485     /**
486      * Method getTrimmedValue.
487      *
488      * @param s a s object.
489      * @return String
490      */
491     private String getTrimmedValue( String s )
492     {
493         if ( s != null )
494         {
495             s = s.trim();
496         }
497         return s;
498     } //-- String getTrimmedValue( String )
499 
500     /**
501      * Method interpolatedTrimmed.
502      *
503      * @param value a value object.
504      * @param context a context object.
505      * @return String
506      */
507     private String interpolatedTrimmed( String value, String context )
508     {
509         return getTrimmedValue( contentTransformer.transform( value, context ) );
510     } //-- String interpolatedTrimmed( String, String )
511 
512     /**
513      * Method nextTag.
514      *
515      * @param parser a parser object.
516      * @throws IOException IOException if any.
517      * @throws XmlPullParserException XmlPullParserException if
518      * any.
519      * @return int
520      */
521     private int nextTag( XmlPullParser parser )
522         throws IOException, XmlPullParserException
523     {
524         int eventType = parser.next();
525         if ( eventType == XmlPullParser.TEXT )
526         {
527             eventType = parser.next();
528         }
529         if ( eventType != XmlPullParser.START_TAG && eventType != XmlPullParser.END_TAG )
530         {
531             throw new XmlPullParserException( "expected START_TAG or END_TAG not " + XmlPullParser.TYPES[eventType], parser, null );
532         }
533         return eventType;
534     } //-- int nextTag( XmlPullParser )
535 
536     /**
537      * @see ReaderFactory#newXmlReader
538      *
539      * @param reader a reader object.
540      * @param strict a strict object.
541      * @throws IOException IOException if any.
542      * @throws XmlPullParserException XmlPullParserException if
543      * any.
544      * @return PersistedToolchains
545      */
546     public PersistedToolchains read( Reader reader, boolean strict )
547         throws IOException, XmlPullParserException
548     {
549         XmlPullParser parser = addDefaultEntities ? new MXParser(EntityReplacementMap.defaultEntityReplacementMap) : new MXParser( );
550 
551         parser.setInput( reader );
552 
553 
554         return read( parser, strict );
555     } //-- PersistedToolchains read( Reader, boolean )
556 
557     /**
558      * @see ReaderFactory#newXmlReader
559      *
560      * @param reader a reader object.
561      * @throws IOException IOException if any.
562      * @throws XmlPullParserException XmlPullParserException if
563      * any.
564      * @return PersistedToolchains
565      */
566     public PersistedToolchains read( Reader reader )
567         throws IOException, XmlPullParserException
568     {
569         return read( reader, true );
570     } //-- PersistedToolchains read( Reader )
571 
572     /**
573      * Method read.
574      *
575      * @param in a in object.
576      * @param strict a strict object.
577      * @throws IOException IOException if any.
578      * @throws XmlPullParserException XmlPullParserException if
579      * any.
580      * @return PersistedToolchains
581      */
582     public PersistedToolchains read( InputStream in, boolean strict )
583         throws IOException, XmlPullParserException
584     {
585         return read( ReaderFactory.newXmlReader( in ), strict );
586     } //-- PersistedToolchains read( InputStream, boolean )
587 
588     /**
589      * Method read.
590      *
591      * @param in a in object.
592      * @throws IOException IOException if any.
593      * @throws XmlPullParserException XmlPullParserException if
594      * any.
595      * @return PersistedToolchains
596      */
597     public PersistedToolchains read( InputStream in )
598         throws IOException, XmlPullParserException
599     {
600         return read( ReaderFactory.newXmlReader( in ) );
601     } //-- PersistedToolchains read( InputStream )
602 
603     /**
604      * Method read.
605      *
606      * @param parser a parser object.
607      * @param strict a strict object.
608      * @throws IOException IOException if any.
609      * @throws XmlPullParserException XmlPullParserException if
610      * any.
611      * @return PersistedToolchains
612      */
613     public PersistedToolchains read( XmlPullParser parser, boolean strict )
614         throws IOException, XmlPullParserException
615     {
616         PersistedToolchains persistedToolchains = null;
617         int eventType = parser.getEventType();
618         boolean parsed = false;
619         while ( eventType != XmlPullParser.END_DOCUMENT )
620         {
621             if ( eventType == XmlPullParser.START_TAG )
622             {
623                 if ( strict && ! "toolchains".equals( parser.getName() ) )
624                 {
625                     throw new XmlPullParserException( "Expected root element 'toolchains' but found '" + parser.getName() + "'", parser, null );
626                 }
627                 else if ( parsed )
628                 {
629                     // fallback, already expected a XmlPullParserException due to invalid XML
630                     throw new XmlPullParserException( "Duplicated tag: 'toolchains'", parser, null );
631                 }
632                 persistedToolchains = parsePersistedToolchains( parser, strict );
633                 parsed = true;
634             }
635             eventType = parser.next();
636         }
637         if ( parsed )
638         {
639             return persistedToolchains;
640         }
641         throw new XmlPullParserException( "Expected root element 'toolchains' but found no element at all: invalid XML document", parser, null );
642     } //-- PersistedToolchains read( XmlPullParser, boolean )
643 
644     private TrackableBase parseTrackableBase( XmlPullParser parser, boolean strict )
645         throws IOException, XmlPullParserException
646     {
647         String tagName = parser.getName();
648         TrackableBase.Builder trackableBase = TrackableBase.newBuilder( true );
649         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
650         {
651             String name = parser.getAttributeName( i );
652             String value = parser.getAttributeValue( i );
653             if ( name.indexOf( ':' ) >= 0 )
654             {
655                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
656             }
657             else
658             {
659                 checkUnknownAttribute( parser, name, tagName, strict );
660             }
661         }
662         Set<String> parsed = new HashSet<>();
663         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
664         {
665             String childName = checkDuplicate( parser.getName(), parser, parsed );
666             switch ( childName )
667             {
668                 default:
669                 {
670                     checkUnknownElement( parser, strict );
671                     break;
672                 }
673             }
674         }
675         return trackableBase.build();
676     }
677 
678     private PersistedToolchains parsePersistedToolchains( XmlPullParser parser, boolean strict )
679         throws IOException, XmlPullParserException
680     {
681         String tagName = parser.getName();
682         PersistedToolchains.Builder persistedToolchains = PersistedToolchains.newBuilder( true );
683         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
684         {
685             String name = parser.getAttributeName( i );
686             String value = parser.getAttributeValue( i );
687             if ( name.indexOf( ':' ) >= 0 )
688             {
689                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
690             }
691             else if ( "xmlns".equals( name ) )
692             {
693                 // ignore xmlns attribute in root class, which is a reserved attribute name
694             }
695             else
696             {
697                 checkUnknownAttribute( parser, name, tagName, strict );
698             }
699         }
700         Set<String> parsed = new HashSet<>();
701         List<ToolchainModel> toolchains = new ArrayList<>();
702         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
703         {
704             String childName = checkDuplicate( parser.getName(), parser, parsed );
705             switch ( childName )
706             {
707                 case "toolchain":
708                 {
709                     toolchains.add( parseToolchainModel( parser, strict ) );
710                     break;
711                 }
712                 default:
713                 {
714                     checkUnknownElement( parser, strict );
715                     break;
716                 }
717             }
718         }
719         persistedToolchains.toolchains( toolchains );
720         persistedToolchains.modelEncoding( parser.getInputEncoding() );
721         return persistedToolchains.build();
722     }
723 
724     private ToolchainModel parseToolchainModel( XmlPullParser parser, boolean strict )
725         throws IOException, XmlPullParserException
726     {
727         String tagName = parser.getName();
728         ToolchainModel.Builder toolchainModel = ToolchainModel.newBuilder( true );
729         for ( int i = parser.getAttributeCount() - 1; i >= 0; i-- )
730         {
731             String name = parser.getAttributeName( i );
732             String value = parser.getAttributeValue( i );
733             if ( name.indexOf( ':' ) >= 0 )
734             {
735                 // just ignore attributes with non-default namespace (for example: xmlns:xsi)
736             }
737             else
738             {
739                 checkUnknownAttribute( parser, name, tagName, strict );
740             }
741         }
742         Set<String> parsed = new HashSet<>();
743         while ( ( strict ? parser.nextTag() : nextTag( parser ) ) == XmlPullParser.START_TAG )
744         {
745             String childName = checkDuplicate( parser.getName(), parser, parsed );
746             switch ( childName )
747             {
748                 case "type":
749                 {
750                     toolchainModel.type( interpolatedTrimmed( parser.nextText(), "type" ) );
751                     break;
752                 }
753                 case "provides":
754                 {
755                     Map<String, String> provides = new LinkedHashMap<>();
756                     while ( parser.nextTag() == XmlPullParser.START_TAG )
757                     {
758                         String key = parser.getName();
759                         String value = parser.nextText().trim();
760                         provides.put( key, value );
761                     }
762                     toolchainModel.provides( provides );
763                     break;
764                 }
765                 case "configuration":
766                 {
767                     toolchainModel.configuration( DomBuilder.build( parser, true ) );
768                     break;
769                 }
770                 default:
771                 {
772                     checkUnknownElement( parser, strict );
773                     break;
774                 }
775             }
776         }
777         return toolchainModel.build();
778     }
779 
780 
781     private String checkDuplicate( String tagName, XmlPullParser parser, Set<String> parsed )
782         throws XmlPullParserException
783     {
784         switch ( tagName )
785         {
786             case "toolchain":
787                 break;
788             default:
789                 if ( !parsed.add( tagName ) )
790                 {
791                     throw new XmlPullParserException( "Duplicated tag: '" + tagName + "'", parser, null );
792                 }
793         }
794         return tagName;
795     }
796 
797     /**
798      * Sets the state of the "add default entities" flag.
799      *
800      * @param addDefaultEntities a addDefaultEntities object.
801      */
802     public void setAddDefaultEntities( boolean addDefaultEntities )
803     {
804         this.addDefaultEntities = addDefaultEntities;
805     } //-- void setAddDefaultEntities( boolean )
806 
807     public static interface ContentTransformer
808     {
809         /**
810          * Interpolate the value read from the xpp3 document
811          * @param source The source value
812          * @param fieldName A description of the field being interpolated. The implementation may use this to
813          *                           log stuff.
814          * @return The interpolated value.
815          */
816         String transform( String source, String fieldName );
817     }
818 
819 }