001// ***************************************************************************************************************************
002// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
003// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
004// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
005// * with the License.  You may obtain a copy of the License at                                                              *
006// *                                                                                                                         *
007// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
008// *                                                                                                                         *
009// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
010// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
011// * specific language governing permissions and limitations under the License.                                              *
012// ***************************************************************************************************************************
013package org.apache.juneau.parser;
014
015import static org.apache.juneau.internal.CollectionUtils.*;
016import static org.apache.juneau.parser.InputStreamParser.*;
017import static org.apache.juneau.parser.ReaderParser.*;
018
019import java.lang.annotation.*;
020import java.lang.reflect.*;
021import java.nio.charset.*;
022import java.util.*;
023
024import org.apache.juneau.*;
025import org.apache.juneau.http.*;
026import org.apache.juneau.internal.*;
027import org.apache.juneau.reflect.*;
028import org.apache.juneau.svl.*;
029
030/**
031 * Builder class for creating instances of {@link ParserGroup}.
032 */
033public class ParserGroupBuilder extends BeanContextBuilder {
034
035   private final List<Object> parsers;
036
037   /**
038    * Create an empty parser group builder.
039    */
040   public ParserGroupBuilder() {
041      this.parsers = new ArrayList<>();
042   }
043
044   /**
045    * Clone an existing parser group builder.
046    *
047    * @param copyFrom The parser group that we're copying settings and parsers from.
048    */
049   public ParserGroupBuilder(ParserGroup copyFrom) {
050      super(copyFrom.getPropertyStore());
051      this.parsers = new ArrayList<>();
052      addReverse(parsers, copyFrom.getParsers());
053   }
054
055   /**
056    * Registers the specified parsers with this group.
057    *
058    * @param p The parsers to append to this group.
059    * @return This object (for method chaining).
060    */
061   public ParserGroupBuilder append(Class<?>...p) {
062      addReverse(parsers, p);
063      return this;
064   }
065
066   /**
067    * Registers the specified parsers with this group.
068    *
069    * <p>
070    * When passing in pre-instantiated parsers to this group, applying properties and transforms to the group
071    * do not affect them.
072    *
073    * @param p The parsers to append to this group.
074    * @return This object (for method chaining).
075    */
076   public ParserGroupBuilder append(Parser...p) {
077      addReverse(parsers, p);
078      return this;
079   }
080
081   /**
082    * Registers the specified parsers with this group.
083    *
084    * <p>
085    * Objects can either be instances of parsers or parser classes.
086    *
087    * @param p The parsers to append to this group.
088    * @return This object (for method chaining).
089    */
090   public ParserGroupBuilder append(List<Object> p) {
091      addReverse(parsers, p);
092      return this;
093   }
094
095   /**
096    * Registers the specified parsers with this group.
097    *
098    * <p>
099    * Objects can either be instances of parsers or parser classes.
100    *
101    * @param p The parsers to append to this group.
102    * @return This object (for method chaining).
103    */
104   public ParserGroupBuilder append(Object...p) {
105      addReverse(parsers, p);
106      return this;
107   }
108
109   /**
110    * Creates a new {@link ParserGroup} object using a snapshot of the settings defined in this builder.
111    *
112    * <p>
113    * This method can be called multiple times to produce multiple parser groups.
114    *
115    * @return A new {@link ParserGroup} object.
116    */
117   @Override /* Context */
118   @SuppressWarnings("unchecked")
119   public ParserGroup build() {
120      List<Parser> l = new ArrayList<>();
121      for (Object p : parsers) {
122         Class<? extends Parser> c = null;
123         PropertyStore ps = getPropertyStore();
124         if (p instanceof Class) {
125            c = (Class<? extends Parser>)p;
126            l.add(ContextCache.INSTANCE.create(c, ps));
127         } else {
128            l.add((Parser)p);
129         }
130      }
131      return new ParserGroup(getPropertyStore(), ArrayUtils.toReverseArray(Parser.class, l));
132   }
133
134   //-----------------------------------------------------------------------------------------------------------------
135   // Properties
136   //-----------------------------------------------------------------------------------------------------------------
137
138   /**
139    * Configuration property:  Auto-close streams.
140    *
141    * <p>
142    * If <jk>true</jk>, <l>InputStreams</l> and <l>Readers</l> passed into parsers will be closed
143    * after parsing is complete.
144    *
145    * <ul class='seealso'>
146    *    <li class='jf'>{@link Parser#PARSER_autoCloseStreams}
147    * </ul>
148    *
149    * @param value
150    *    The new value for this property.
151    *    <br>The default value is <jk>false</jk>.
152    * @return This object (for method chaining).
153    */
154   public ParserGroupBuilder autoCloseStreams(boolean value) {
155      return set(PARSER_autoCloseStreams, value);
156   }
157
158   /**
159    * Configuration property:  Auto-close streams.
160    * <p>
161    * Shortcut for calling <code>autoCloseStreams(<jk>true</jk>)</code>.
162    *
163    * <ul class='seealso'>
164    *    <li class='jf'>{@link Parser#PARSER_autoCloseStreams}
165    * </ul>
166    *
167    * @return This object (for method chaining).
168    */
169   public ParserGroupBuilder autoCloseStreams() {
170      return set(PARSER_autoCloseStreams, true);
171   }
172
173   /**
174    * Configuration property:  Debug output lines.
175    *
176    * When parse errors occur, this specifies the number of lines of input before and after the
177    * error location to be printed as part of the exception message.
178    *
179    * <ul class='seealso'>
180    *    <li class='jf'>{@link Parser#PARSER_debugOutputLines}
181    * </ul>
182    *
183    * @param value
184    *    The new value for this property.
185    *    <br>The default value is <c>5</c>.
186    * @return This object (for method chaining).
187    */
188   public ParserGroupBuilder debugOutputLines(int value) {
189      set(PARSER_debugOutputLines, value);
190      return this;
191   }
192
193   /**
194    * Configuration property:  Parser listener.
195    *
196    * <p>
197    * Class used to listen for errors and warnings that occur during parsing.
198    *
199    * <ul class='seealso'>
200    *    <li class='jf'>{@link Parser#PARSER_listener}
201    * </ul>
202    *
203    * @param value The new value for this property.
204    * @return This object (for method chaining).
205    */
206   public ParserGroupBuilder listener(Class<? extends ParserListener> value) {
207      return set(PARSER_listener, value);
208   }
209
210   /**
211    * Configuration property:  Strict mode.
212    *
213    * <p>
214    * If <jk>true</jk>, strict mode for the parsers are enabled.
215    *
216    * <ul class='seealso'>
217    *    <li class='jf'>{@link Parser#PARSER_strict}
218    * </ul>
219    *
220    * @param value
221    *    The new value for this property.
222    *    <br>The default value is <jk>false</jk>.
223    * @return This object (for method chaining).
224    */
225   public ParserGroupBuilder strict(boolean value) {
226      return set(PARSER_strict, value);
227   }
228
229   /**
230    * Configuration property:  Strict mode.
231    *
232    * <p>
233    * Shortcut for calling <code>strict(<jk>true</jk>)</code>.
234    *
235    * <ul class='seealso'>
236    *    <li class='jf'>{@link Parser#PARSER_strict}
237    * </ul>
238    *
239    * @return This object (for method chaining).
240    */
241   public ParserGroupBuilder strict() {
242      return set(PARSER_strict, true);
243   }
244
245   /**
246    * Configuration property:  Trim parsed strings.
247    *
248    * <p>
249    * If <jk>true</jk>, string values will be trimmed of whitespace using {@link String#trim()} before being added to
250    * the POJO.
251    *
252    * <ul class='seealso'>
253    *    <li class='jf'>{@link Parser#PARSER_trimStrings}
254    * </ul>
255    *
256    * @param value
257    *    The new value for this property.
258    *    <br>The default value is <jk>false</jk>.
259    * @return This object (for method chaining).
260    */
261   public ParserGroupBuilder trimStrings(boolean value) {
262      return set(PARSER_trimStrings, value);
263   }
264
265   /**
266    * Configuration property:  Trim parsed strings.
267    *
268    * <p>
269    * Shortcut for calling <code>trimStrings(<jk>true</jk>)</code>.
270    *
271    * <ul class='seealso'>
272    *    <li class='jf'>{@link Parser#PARSER_trimStrings}
273    * </ul>
274    *
275    * @return This object (for method chaining).
276    */
277   public ParserGroupBuilder trimStrings() {
278      return set(PARSER_trimStrings, true);
279   }
280
281   /**
282    * Configuration property:  Unbuffered.
283    *
284    * <p>
285    * If <jk>true</jk>, don't use internal buffering during parsing.
286    *
287    * <ul class='seealso'>
288    *    <li class='jf'>{@link Parser#PARSER_unbuffered}
289    * </ul>
290    *
291    * @param value
292    *    The new value for this property.
293    *    <br>The default value is <jk>false</jk>.
294    * @return This object (for method chaining).
295    */
296   public ParserGroupBuilder unbuffered(boolean value) {
297      return set(PARSER_unbuffered, value);
298   }
299
300   /**
301    * Configuration property:  Unbuffered.
302    *
303    * <p>
304    * Shortcut for calling <code>unbuffered(<jk>true</jk>)</code>.
305    *
306    * <ul class='seealso'>
307    *    <li class='jf'>{@link Parser#PARSER_unbuffered}
308    * </ul>
309    *
310    * @return This object (for method chaining).
311    */
312   public ParserGroupBuilder unbuffered() {
313      return set(PARSER_unbuffered, true);
314   }
315
316   /**
317    * Configuration property:  File charset.
318    *
319    * <p>
320    * The character set to use for reading <c>Files</c> from the file system.
321    *
322    * <ul class='seealso'>
323    *    <li class='jf'>{@link ReaderParser#RPARSER_fileCharset}
324    * </ul>
325    *
326    * @param value
327    *    The new value for this property.
328    *    <br>The default value is <js>"DEFAULT"</js> which causes the system default to be used.
329    * @return This object (for method chaining).
330    */
331   public ParserGroupBuilder fileCharset(Charset value) {
332      return set(RPARSER_fileCharset, value);
333   }
334
335   /**
336    * Configuration property:  Input stream charset.
337    *
338    * <p>
339    * The character set to use for converting <c>InputStreams</c> and byte arrays to readers.
340    *
341    * <ul class='seealso'>
342    *    <li class='jf'>{@link ReaderParser#RPARSER_streamCharset}
343    * </ul>
344    *
345    * @param value
346    *    The new value for this property.
347    *    <br>The default value is <js>"UTF-8"</js>.
348    * @return This object (for method chaining).
349    */
350   public ParserGroupBuilder streamCharset(Charset value) {
351      return set(RPARSER_streamCharset, value);
352   }
353
354   /**
355    * Configuration property:  Binary input format.
356    *
357    * <p>
358    * When using the {@link Parser#parse(Object,Class)} method on stream-based parsers and the input is a string, this defines the format to use
359    * when converting the string into a byte array.
360    *
361    * <ul class='seealso'>
362    *    <li class='jf'>{@link InputStreamParser#ISPARSER_binaryFormat}
363    * </ul>
364    *
365    * @param value
366    *    The new value for this property.
367    *    <br>The default value is {@link BinaryFormat#HEX}.
368    * @return This object (for method chaining).
369    */
370   public ParserGroupBuilder binaryFormat(BinaryFormat value) {
371      return set(ISPARSER_binaryFormat, value);
372   }
373
374   @Override /* BeanContextBuilder */
375   public ParserGroupBuilder annotations(Annotation...values) {
376      super.annotations(values);
377      return this;
378   }
379
380   @Override /* BeanContextBuilder */
381   public ParserGroupBuilder beanClassVisibility(Visibility value) {
382      super.beanClassVisibility(value);
383      return this;
384   }
385
386   @Override /* BeanContextBuilder */
387   public ParserGroupBuilder beanConstructorVisibility(Visibility value) {
388      super.beanConstructorVisibility(value);
389      return this;
390   }
391
392   @Override /* BeanContextBuilder */
393   @Deprecated
394   public ParserGroupBuilder beanDictionary(Class<?>...values) {
395      super.beanDictionary(values);
396      return this;
397   }
398
399   @Override /* BeanContextBuilder */
400   @Deprecated
401   public ParserGroupBuilder beanDictionary(Object...values) {
402      super.beanDictionary(values);
403      return this;
404   }
405
406   @Override /* BeanContextBuilder */
407   @Deprecated
408   public ParserGroupBuilder beanDictionaryReplace(Class<?>...values) {
409      super.beanDictionaryReplace(values);
410      return this;
411   }
412
413   @Override /* BeanContextBuilder */
414   @Deprecated
415   public ParserGroupBuilder beanDictionaryReplace(Object...values) {
416      super.beanDictionaryReplace(values);
417      return this;
418   }
419
420   @Override /* BeanContextBuilder */
421   @Deprecated
422   public ParserGroupBuilder beanDictionaryRemove(Class<?>...values) {
423      super.beanDictionaryRemove(values);
424      return this;
425   }
426
427   @Override /* BeanContextBuilder */
428   @Deprecated
429   public ParserGroupBuilder beanDictionaryRemove(Object...values) {
430      super.beanDictionaryRemove(values);
431      return this;
432   }
433
434   @Override /* BeanContextBuilder */
435   public ParserGroupBuilder beanFieldVisibility(Visibility value) {
436      super.beanFieldVisibility(value);
437      return this;
438   }
439
440   @Override /* BeanContextBuilder */
441   public ParserGroupBuilder beanFilters(Class<?>...values) {
442      super.beanFilters(values);
443      return this;
444   }
445
446   @Override /* BeanContextBuilder */
447   public ParserGroupBuilder beanFilters(Object...values) {
448      super.beanFilters(values);
449      return this;
450   }
451
452   @Override /* BeanContextBuilder */
453   public ParserGroupBuilder beanFiltersReplace(Class<?>...values) {
454      super.beanFiltersReplace(values);
455      return this;
456   }
457
458   @Override /* BeanContextBuilder */
459   public ParserGroupBuilder beanFiltersReplace(Object...values) {
460      super.beanFiltersReplace(values);
461      return this;
462   }
463
464   @Override /* BeanContextBuilder */
465   public ParserGroupBuilder beanFiltersRemove(Class<?>...values) {
466      super.beanFiltersRemove(values);
467      return this;
468   }
469
470   @Override /* BeanContextBuilder */
471   public ParserGroupBuilder beanFiltersRemove(Object...values) {
472      super.beanFiltersRemove(values);
473      return this;
474   }
475
476   @Override /* BeanContextBuilder */
477   public ParserGroupBuilder beanMapPutReturnsOldValue(boolean value) {
478      super.beanMapPutReturnsOldValue(value);
479      return this;
480   }
481
482   @Override /* BeanContextBuilder */
483   public ParserGroupBuilder beanMapPutReturnsOldValue() {
484      super.beanMapPutReturnsOldValue();
485      return this;
486   }
487
488   @Override /* BeanContextBuilder */
489   public ParserGroupBuilder beanMethodVisibility(Visibility value) {
490      super.beanMethodVisibility(value);
491      return this;
492   }
493
494   @Override /* BeanContextBuilder */
495   public ParserGroupBuilder beansRequireDefaultConstructor(boolean value) {
496      super.beansRequireDefaultConstructor(value);
497      return this;
498   }
499
500   @Override /* BeanContextBuilder */
501   public ParserGroupBuilder beansRequireDefaultConstructor() {
502      super.beansRequireDefaultConstructor();
503      return this;
504   }
505
506   @Override /* BeanContextBuilder */
507   public ParserGroupBuilder beansRequireSerializable(boolean value) {
508      super.beansRequireSerializable(value);
509      return this;
510   }
511
512   @Override /* BeanContextBuilder */
513   public ParserGroupBuilder beansRequireSerializable() {
514      super.beansRequireSerializable();
515      return this;
516   }
517
518   @Override /* BeanContextBuilder */
519   public ParserGroupBuilder beansRequireSettersForGetters(boolean value) {
520      super.beansRequireSettersForGetters(value);
521      return this;
522   }
523
524   @Override /* BeanContextBuilder */
525   public ParserGroupBuilder beansRequireSettersForGetters() {
526      super.beansRequireSettersForGetters();
527      return this;
528   }
529
530   @Override /* BeanContextBuilder */
531   public ParserGroupBuilder beansRequireSomeProperties(boolean value) {
532      super.beansRequireSomeProperties(value);
533      return this;
534   }
535
536   @Override /* BeanContextBuilder */
537   public ParserGroupBuilder beanTypePropertyName(String value) {
538      super.beanTypePropertyName(value);
539      return this;
540   }
541
542   @Override /* BeanContextBuilder */
543   public ParserGroupBuilder bpi(Class<?> beanClass, String value) {
544      super.bpi(beanClass, value);
545      return this;
546   }
547
548   @Override /* BeanContextBuilder */
549   public ParserGroupBuilder bpi(Map<String,String> values) {
550      super.bpi(values);
551      return this;
552   }
553
554   @Override /* BeanContextBuilder */
555   public ParserGroupBuilder bpi(String beanClassName, String value) {
556      super.bpi(beanClassName, value);
557      return this;
558   }
559
560   @Override /* BeanContextBuilder */
561   public ParserGroupBuilder bpx(Class<?> beanClass, String properties) {
562      super.bpx(beanClass, properties);
563      return this;
564   }
565
566   @Override /* BeanContextBuilder */
567   public ParserGroupBuilder bpx(Map<String,String> values) {
568      super.bpx(values);
569      return this;
570   }
571
572   @Override /* BeanContextBuilder */
573   public ParserGroupBuilder bpx(String beanClassName, String value) {
574      super.bpx(beanClassName, value);
575      return this;
576   }
577
578   @Override /* BeanContextBuilder */
579   public ParserGroupBuilder bpro(Class<?> beanClass, String value) {
580      super.bpro(beanClass, value);
581      return this;
582   }
583
584   @Override /* BeanContextBuilder */
585   public ParserGroupBuilder bpro(Map<String,String> values) {
586      super.bpro(values);
587      return this;
588   }
589
590   @Override /* BeanContextBuilder */
591   public ParserGroupBuilder bpro(String beanClassName, String value) {
592      super.bpro(beanClassName, value);
593      return this;
594   }
595
596   @Override /* BeanContextBuilder */
597   public ParserGroupBuilder bpwo(Class<?> beanClass, String properties) {
598      super.bpwo(beanClass, properties);
599      return this;
600   }
601
602   @Override /* BeanContextBuilder */
603   public ParserGroupBuilder bpwo(Map<String,String> values) {
604      super.bpwo(values);
605      return this;
606   }
607
608   @Override /* BeanContextBuilder */
609   public ParserGroupBuilder bpwo(String beanClassName, String value) {
610      super.bpwo(beanClassName, value);
611      return this;
612   }
613
614   @Override /* BeanContextBuilder */
615   public ParserGroupBuilder debug() {
616      super.debug();
617      return this;
618   }
619
620   @Override /* BeanContextBuilder */
621   public ParserGroupBuilder dictionary(Class<?>...values) {
622      super.dictionary(values);
623      return this;
624   }
625
626   @Override /* BeanContextBuilder */
627   public ParserGroupBuilder dictionary(Object...values) {
628      super.dictionary(values);
629      return this;
630   }
631
632   @Override /* BeanContextBuilder */
633   public ParserGroupBuilder dictionaryReplace(Class<?>...values) {
634      super.dictionaryReplace(values);
635      return this;
636   }
637
638   @Override /* BeanContextBuilder */
639   public ParserGroupBuilder dictionaryReplace(Object...values) {
640      super.dictionaryReplace(values);
641      return this;
642   }
643
644   @Override /* BeanContextBuilder */
645   public ParserGroupBuilder dictionaryRemove(Class<?>...values) {
646      super.dictionaryRemove(values);
647      return this;
648   }
649
650   @Override /* BeanContextBuilder */
651   public ParserGroupBuilder dictionaryRemove(Object...values) {
652      super.dictionaryRemove(values);
653      return this;
654   }
655
656   @Override /* BeanContextBuilder */
657   public <T> ParserGroupBuilder example(Class<T> c, T o) {
658      super.example(c, o);
659      return this;
660   }
661
662   @Override /* BeanContextBuilder */
663   public <T> ParserGroupBuilder exampleJson(Class<T> c, String value) {
664      super.exampleJson(c, value);
665      return this;
666   }
667
668   @Override /* BeanContextBuilder */
669   public ParserGroupBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
670      super.ignoreInvocationExceptionsOnGetters(value);
671      return this;
672   }
673
674   @Override /* BeanContextBuilder */
675   public ParserGroupBuilder ignoreInvocationExceptionsOnGetters() {
676      super.ignoreInvocationExceptionsOnGetters();
677      return this;
678   }
679
680   @Override /* BeanContextBuilder */
681   public ParserGroupBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
682      super.ignoreInvocationExceptionsOnSetters(value);
683      return this;
684   }
685
686   @Override /* BeanContextBuilder */
687   public ParserGroupBuilder ignoreInvocationExceptionsOnSetters() {
688      super.ignoreInvocationExceptionsOnSetters();
689      return this;
690   }
691
692   @Override /* BeanContextBuilder */
693   public ParserGroupBuilder ignorePropertiesWithoutSetters(boolean value) {
694      super.ignorePropertiesWithoutSetters(value);
695      return this;
696   }
697
698   @Override /* BeanContextBuilder */
699   public ParserGroupBuilder ignoreUnknownBeanProperties(boolean value) {
700      super.ignoreUnknownBeanProperties(value);
701      return this;
702   }
703
704   @Override /* BeanContextBuilder */
705   public ParserGroupBuilder ignoreUnknownBeanProperties() {
706      super.ignoreUnknownBeanProperties();
707      return this;
708   }
709
710   @Override /* BeanContextBuilder */
711   public ParserGroupBuilder ignoreUnknownNullBeanProperties(boolean value) {
712      super.ignoreUnknownNullBeanProperties(value);
713      return this;
714   }
715
716   @Override /* BeanContextBuilder */
717   public ParserGroupBuilder implClass(Class<?> interfaceClass, Class<?> implClass) {
718      super.implClass(interfaceClass, implClass);
719      return this;
720   }
721
722   @Override /* BeanContextBuilder */
723   public ParserGroupBuilder implClasses(Map<String,Class<?>> values) {
724      super.implClasses(values);
725      return this;
726   }
727
728   @Override /* BeanContextBuilder */
729   public ParserGroupBuilder locale(Locale value) {
730      super.locale(value);
731      return this;
732   }
733
734   @Override /* BeanContextBuilder */
735   public ParserGroupBuilder mediaType(MediaType value) {
736      super.mediaType(value);
737      return this;
738   }
739
740   @Override /* BeanContextBuilder */
741   public ParserGroupBuilder notBeanClasses(Class<?>...values) {
742      super.notBeanClasses(values);
743      return this;
744   }
745
746   @Override /* BeanContextBuilder */
747   public ParserGroupBuilder notBeanClasses(Object...values) {
748      super.notBeanClasses(values);
749      return this;
750   }
751
752   @Override /* BeanContextBuilder */
753   public ParserGroupBuilder notBeanClassesReplace(Class<?>...values) {
754      super.notBeanClassesReplace(values);
755      return this;
756   }
757
758   @Override /* BeanContextBuilder */
759   public ParserGroupBuilder notBeanClassesReplace(Object...values) {
760      super.notBeanClassesReplace(values);
761      return this;
762   }
763
764   @Override /* BeanContextBuilder */
765   public ParserGroupBuilder notBeanClassesRemove(Class<?>...values) {
766      super.notBeanClassesRemove(values);
767      return this;
768   }
769
770   @Override /* BeanContextBuilder */
771   public ParserGroupBuilder notBeanClassesRemove(Object...values) {
772      super.notBeanClassesRemove(values);
773      return this;
774   }
775
776   @Override /* BeanContextBuilder */
777   public ParserGroupBuilder notBeanPackages(Object...values) {
778      super.notBeanPackages(values);
779      return this;
780   }
781
782   @Override /* BeanContextBuilder */
783   public ParserGroupBuilder notBeanPackages(String...values) {
784      super.notBeanPackages(values);
785      return this;
786   }
787
788   @Override /* BeanContextBuilder */
789   public ParserGroupBuilder notBeanPackagesReplace(String...values) {
790      super.notBeanPackagesReplace(values);
791      return this;
792   }
793
794   @Override /* BeanContextBuilder */
795   public ParserGroupBuilder notBeanPackagesReplace(Object...values) {
796      super.notBeanPackagesReplace(values);
797      return this;
798   }
799
800   @Override /* BeanContextBuilder */
801   public ParserGroupBuilder notBeanPackagesRemove(String...values) {
802      super.notBeanPackagesRemove(values);
803      return this;
804   }
805
806   @Override /* BeanContextBuilder */
807   public ParserGroupBuilder notBeanPackagesRemove(Object...values) {
808      super.notBeanPackagesRemove(values);
809      return this;
810   }
811
812   @Override /* BeanContextBuilder */
813   public ParserGroupBuilder pojoSwaps(Class<?>...values) {
814      super.pojoSwaps(values);
815      return this;
816   }
817
818   @Override /* BeanContextBuilder */
819   public ParserGroupBuilder pojoSwaps(Object...values) {
820      super.pojoSwaps(values);
821      return this;
822   }
823
824   @Override /* BeanContextBuilder */
825   public ParserGroupBuilder pojoSwapsReplace(Class<?>...values) {
826      super.pojoSwapsReplace(values);
827      return this;
828   }
829
830   @Override /* BeanContextBuilder */
831   public ParserGroupBuilder pojoSwapsReplace(Object...values) {
832      super.pojoSwapsReplace(values);
833      return this;
834   }
835
836   @Override /* BeanContextBuilder */
837   public ParserGroupBuilder pojoSwapsRemove(Class<?>...values) {
838      super.pojoSwapsRemove(values);
839      return this;
840   }
841
842   @Override /* BeanContextBuilder */
843   public ParserGroupBuilder pojoSwapsRemove(Object...values) {
844      super.pojoSwapsRemove(values);
845      return this;
846   }
847
848   @Override /* BeanContextBuilder */
849   public ParserGroupBuilder sortProperties(boolean value) {
850      super.sortProperties(value);
851      return this;
852   }
853
854   @Override /* BeanContextBuilder */
855   public ParserGroupBuilder sortProperties() {
856      super.sortProperties();
857      return this;
858   }
859
860   @Override /* BeanContextBuilder */
861   public ParserGroupBuilder timeZone(TimeZone value) {
862      super.timeZone(value);
863      return this;
864   }
865
866   @Override /* BeanContextBuilder */
867   public ParserGroupBuilder useEnumNames(boolean value) {
868      super.useEnumNames(value);
869      return this;
870   }
871
872   @Override /* BeanContextBuilder */
873   public ParserGroupBuilder useEnumNames() {
874      super.useEnumNames();
875      return this;
876   }
877
878   @Override /* BeanContextBuilder */
879   public ParserGroupBuilder useInterfaceProxies(boolean value) {
880      super.useInterfaceProxies(value);
881      return this;
882   }
883
884   @Override /* BeanContextBuilder */
885   public ParserGroupBuilder useJavaBeanIntrospector(boolean value) {
886      super.useJavaBeanIntrospector(value);
887      return this;
888   }
889
890   @Override /* BeanContextBuilder */
891   public ParserGroupBuilder useJavaBeanIntrospector() {
892      super.useJavaBeanIntrospector();
893      return this;
894   }
895
896   @Override /* ContextBuilder */
897   public ParserGroupBuilder set(String name, Object value) {
898      super.set(name, value);
899      return this;
900   }
901
902   @Override /* ContextBuilder */
903   public ParserGroupBuilder set(Map<String,Object> properties) {
904      super.set(properties);
905      return this;
906   }
907
908   @Override /* ContextBuilder */
909   public ParserGroupBuilder add(Map<String,Object> properties) {
910      super.add(properties);
911      return this;
912   }
913
914   @Override /* ContextBuilder */
915   public ParserGroupBuilder addTo(String name, Object value) {
916      super.addTo(name, value);
917      return this;
918   }
919
920   @Override /* ContextBuilder */
921   public ParserGroupBuilder addTo(String name, String key, Object value) {
922      super.addTo(name, key, value);
923      return this;
924   }
925
926   @Override /* ContextBuilder */
927   public ParserGroupBuilder removeFrom(String name, Object value) {
928      super.removeFrom(name, value);
929      return this;
930   }
931
932   @Override /* ContextBuilder */
933   public ParserGroupBuilder apply(PropertyStore copyFrom) {
934      super.apply(copyFrom);
935      return this;
936   }
937
938   @Override /* ContextBuilder */
939   public ParserGroupBuilder applyAnnotations(AnnotationList al, VarResolverSession vrs) {
940      super.applyAnnotations(al, vrs);
941      return this;
942   }
943
944   @Override /* ContextBuilder */
945   public ParserGroupBuilder applyAnnotations(Class<?>...fromClasses) {
946      super.applyAnnotations(fromClasses);
947      return this;
948   }
949
950   @Override /* ContextBuilder */
951   public ParserGroupBuilder applyAnnotations(Method...fromMethods) {
952      super.applyAnnotations(fromMethods);
953      return this;
954   }
955}