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.serializer;
014
015import static org.apache.juneau.serializer.OutputStreamSerializer.*;
016import static org.apache.juneau.serializer.WriterSerializer.*;
017
018import java.lang.annotation.*;
019import java.lang.reflect.*;
020import java.nio.charset.*;
021import java.util.*;
022
023import org.apache.juneau.*;
024import org.apache.juneau.collections.*;
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 SerializerGroup}.
032 */
033public class SerializerGroupBuilder extends BeanTraverseBuilder {
034
035   private final AList<Object> serializers;
036
037   /**
038    * Create an empty serializer group builder.
039    */
040   public SerializerGroupBuilder() {
041      this.serializers = AList.of();
042   }
043
044   /**
045    * Clone an existing serializer group builder.
046    *
047    * @param copyFrom The serializer group that we're copying settings and serializers from.
048    */
049   public SerializerGroupBuilder(SerializerGroup copyFrom) {
050      super(copyFrom.getPropertyStore());
051      this.serializers = AList.of().arev(copyFrom.getSerializers());
052   }
053
054   /**
055    * Registers the specified serializers with this group.
056    *
057    * @param s The serializers to append to this group.
058    * @return This object (for method chaining).
059    */
060   public SerializerGroupBuilder append(Class<?>...s) {
061      serializers.arev(s);
062      return this;
063   }
064
065   /**
066    * Registers the specified serializers with this group.
067    *
068    * <p>
069    * When passing in pre-instantiated serializers to this group, applying properties and transforms to the group
070    * do not affect them.
071    *
072    * @param s The serializers to append to this group.
073    * @return This object (for method chaining).
074    */
075   public SerializerGroupBuilder append(Serializer...s) {
076      serializers.arev(s);
077      return this;
078   }
079
080   /**
081    * Registers the specified serializers with this group.
082    *
083    * <p>
084    * Objects can either be instances of serializers or serializer classes.
085    *
086    * @param s The serializers to append to this group.
087    * @return This object (for method chaining).
088    */
089   public SerializerGroupBuilder append(List<Object> s) {
090      serializers.arev(s);
091      return this;
092   }
093
094   /**
095    * Registers the specified serializers with this group.
096    *
097    * <p>
098    * Objects can either be instances of serializers or serializer classes.
099    *
100    * @param s The serializers to append to this group.
101    * @return This object (for method chaining).
102    */
103   public SerializerGroupBuilder append(Object...s) {
104      serializers.arev(s);
105      return this;
106   }
107
108   /**
109    * Creates a new {@link SerializerGroup} object using a snapshot of the settings defined in this builder.
110    *
111    * <p>
112    * This method can be called multiple times to produce multiple serializer groups.
113    *
114    * @return A new {@link SerializerGroup} object.
115    */
116   @Override /* ContextBuilder */
117   @SuppressWarnings("unchecked")
118   public SerializerGroup build() {
119      List<Serializer> l = new ArrayList<>();
120      for (Object s : serializers) {
121         Class<? extends Serializer> c = null;
122         PropertyStore ps = getPropertyStore();
123         if (s instanceof Class) {
124            c = (Class<? extends Serializer>)s;
125            l.add(ContextCache.INSTANCE.create(c, ps));
126         } else {
127            l.add((Serializer)s);
128         }
129      }
130      return new SerializerGroup(getPropertyStore(), ArrayUtils.toReverseArray(Serializer.class, l));
131   }
132
133   //-----------------------------------------------------------------------------------------------------------------
134   // Properties
135   //-----------------------------------------------------------------------------------------------------------------
136
137   /**
138    * Configuration property:  Add <js>"_type"</js> properties when needed.
139    *
140    * <div class='warn'>
141    *    <b>Deprecated</b> - Use {@link #addBeanTypes()}
142    * </div>
143    */
144   @SuppressWarnings("javadoc")
145   @FluentSetter
146   @Deprecated
147   public SerializerGroupBuilder addBeanTypes(boolean value) {
148      return set(SERIALIZER_addBeanTypes, value);
149   }
150
151   /**
152    * Configuration property:  Add <js>"_type"</js> properties when needed.
153    *
154    * <p>
155    * Shortcut for calling <code>addBeanTypes(<jk>true</jk>)</code>.
156    *
157    * <ul class='seealso'>
158    *    <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes}
159    * </ul>
160    *
161    * @return This object (for method chaining).
162    */
163   @FluentSetter
164   public SerializerGroupBuilder addBeanTypes() {
165      return set(SERIALIZER_addBeanTypes, true);
166   }
167
168   /**
169    * Configuration property:  Add type attribute to root nodes.
170    *
171    * <div class='warn'>
172    *    <b>Deprecated</b> - Use {@link #addRootType()}
173    * </div>
174    */
175   @SuppressWarnings("javadoc")
176   @FluentSetter
177   @Deprecated
178   public SerializerGroupBuilder addRootType(boolean value) {
179      return set(SERIALIZER_addRootType, value);
180   }
181
182   /**
183    * Configuration property:  Add type attribute to root nodes.
184    *
185    * <p>
186    * Shortcut for calling <code>addRootType(<jk>true</jk>)</code>.
187    *
188    * <ul class='seealso'>
189    *    <li class='jf'>{@link Serializer#SERIALIZER_addRootType}
190    * </ul>
191    *
192    * @return This object (for method chaining).
193    */
194   @FluentSetter
195   public SerializerGroupBuilder addRootType() {
196      return set(SERIALIZER_addRootType, true);
197   }
198
199   /**
200    * Configuration property:  Don't trim null bean property values.
201    *
202    * <div class='warn'>
203    *    <b>Deprecated</b> - Use {@link #keepNullProperties()}
204    * </div>
205    */
206   @SuppressWarnings("javadoc")
207   @FluentSetter
208   @Deprecated
209   public SerializerGroupBuilder keepNullProperties(boolean value) {
210      return set(SERIALIZER_keepNullProperties, value);
211   }
212
213   /**
214    * Configuration property:  Don't trim null bean property values.
215    *
216    * <p>
217    * When enabled, null bean values will be serialized to the output.
218    *
219    * <ul class='seealso'>
220    *    <li class='jf'>{@link Serializer#SERIALIZER_keepNullProperties}
221    * </ul>
222    *
223    * @return This object (for method chaining).
224    */
225   @FluentSetter
226   public SerializerGroupBuilder keepNullProperties() {
227      return set(SERIALIZER_keepNullProperties, true);
228   }
229
230   /**
231    * Configuration property:  Serializer listener.
232    *
233    * <p>
234    * Class used to listen for errors and warnings that occur during serialization.
235    *
236    * <ul class='seealso'>
237    *    <li class='jf'>{@link Serializer#SERIALIZER_listener}
238    * </ul>
239    *
240    * @param value
241    *    The new value for this property.
242    * @return This object (for method chaining).
243    */
244   @FluentSetter
245   public SerializerGroupBuilder listener(Class<? extends SerializerListener> value) {
246      return set(SERIALIZER_listener, value);
247   }
248
249   /**
250    * Configuration property:  Sort arrays and collections alphabetically.
251    *
252    * <div class='warn'>
253    *    <b>Deprecated</b> - Use {@link #sortCollections()}
254    * </div>
255    */
256   @SuppressWarnings("javadoc")
257   @FluentSetter
258   @Deprecated
259   public SerializerGroupBuilder sortCollections(boolean value) {
260      return set(SERIALIZER_sortCollections, value);
261   }
262
263   /**
264    * Configuration property:  Sort arrays and collections alphabetically.
265    *
266    * <p>
267    * Shortcut for calling <code>sortCollections(<jk>true</jk>)</code>.
268    *
269    * <ul class='seealso'>
270    *    <li class='jf'>{@link Serializer#SERIALIZER_sortCollections}
271    * </ul>
272    *
273    * @return This object (for method chaining).
274    */
275   @FluentSetter
276   public SerializerGroupBuilder sortCollections() {
277      return set(SERIALIZER_sortCollections, true);
278   }
279
280   /**
281    * Configuration property:  Sort maps alphabetically.
282    *
283    * <div class='warn'>
284    *    <b>Deprecated</b> - Use {@link #sortMaps()}
285    * </div>
286    */
287   @SuppressWarnings("javadoc")
288   @FluentSetter
289   @Deprecated
290   public SerializerGroupBuilder sortMaps(boolean value) {
291      return set(SERIALIZER_sortMaps, value);
292   }
293
294   /**
295    * Configuration property:  Sort maps alphabetically.
296    *
297    * <p>
298    * Shortcut for calling <code>sortMaps(<jk>true</jk>)</code>.
299    *
300    * <ul class='seealso'>
301    *    <li class='jf'>{@link Serializer#SERIALIZER_sortMaps}
302    * </ul>
303    *
304    * @return This object (for method chaining).
305    */
306   @FluentSetter
307   public SerializerGroupBuilder sortMaps() {
308      return set(SERIALIZER_sortMaps, true);
309   }
310
311   /**
312    * Configuration property:  Trim empty lists and arrays.
313    *
314    * <div class='warn'>
315    *    <b>Deprecated</b> - Use {@link #trimEmptyCollections()}
316    * </div>
317    */
318   @SuppressWarnings("javadoc")
319   @FluentSetter
320   @Deprecated
321   public SerializerGroupBuilder trimEmptyCollections(boolean value) {
322      return set(SERIALIZER_trimEmptyCollections, value);
323   }
324
325   /**
326    * Configuration property:  Trim empty lists and arrays.
327    *
328    * <p>
329    * Shortcut for calling <code>trimEmptyCollections(<jk>true</jk>)</code>.
330    *
331    * <ul class='seealso'>
332    *    <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyCollections}
333    * </ul>
334    *
335    * @return This object (for method chaining).
336    */
337   @FluentSetter
338   public SerializerGroupBuilder trimEmptyCollections() {
339      return set(SERIALIZER_trimEmptyCollections, true);
340   }
341
342   /**
343    * Configuration property:  Trim empty maps.
344    *
345    * <div class='warn'>
346    *    <b>Deprecated</b> - Use {@link #trimEmptyMaps()}
347    * </div>
348    */
349   @SuppressWarnings("javadoc")
350   @FluentSetter
351   @Deprecated
352   public SerializerGroupBuilder trimEmptyMaps(boolean value) {
353      return set(SERIALIZER_trimEmptyMaps, value);
354   }
355
356   /**
357    * Configuration property:  Trim empty maps.
358    *
359    * <p>
360    * Shortcut for calling <code>trimEmptyMaps(<jk>true</jk>)</code>.
361    *
362    * <ul class='seealso'>
363    *    <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps}
364    * </ul>
365    *
366    * @return This object (for method chaining).
367    */
368   @FluentSetter
369   public SerializerGroupBuilder trimEmptyMaps() {
370      return set(SERIALIZER_trimEmptyMaps, true);
371   }
372
373   /**
374    * Configuration property:  Trim null bean property values.
375    *
376    * <div class='warn'>
377    *    <b>Deprecated</b> - Use {@link #keepNullProperties()}
378    * </div>
379    */
380   @SuppressWarnings("javadoc")
381   @FluentSetter
382   @Deprecated
383   public SerializerGroupBuilder trimNullProperties(boolean value) {
384      return set(SERIALIZER_trimNullProperties, value);
385   }
386
387   /**
388    * Configuration property:  Trim strings.
389    *
390    * <div class='warn'>
391    *    <b>Deprecated</b> - Use {@link #trimStrings()}
392    * </div>
393    */
394   @SuppressWarnings("javadoc")
395   @FluentSetter
396   @Deprecated
397   public SerializerGroupBuilder trimStrings(boolean value) {
398      return set(SERIALIZER_trimStrings, value);
399   }
400
401   /**
402    * Configuration property:  Trim strings.
403    *
404    * <p>
405    * Shortcut for calling <code>trimStrings(<jk>true</jk>)</code>.
406    *
407    * <ul class='seealso'>
408    *    <li class='jf'>{@link Serializer#SERIALIZER_trimStrings}
409    * </ul>
410    *
411    * @return This object (for method chaining).
412    */
413   @FluentSetter
414   public SerializerGroupBuilder trimStrings() {
415      return set(SERIALIZER_trimStrings, true);
416   }
417
418   /**
419    * Configuration property:  URI context bean.
420    *
421    * <p>
422    * Bean used for resolution of URIs to absolute or root-relative form.
423    *
424    * <ul class='seealso'>
425    *    <li class='jf'>{@link Serializer#SERIALIZER_uriContext}
426    * </ul>
427    *
428    * @param value The new value for this property.
429    * @return This object (for method chaining).
430    */
431   @FluentSetter
432   public SerializerGroupBuilder uriContext(UriContext value) {
433      return set(SERIALIZER_uriContext, value);
434   }
435
436   /**
437    * Configuration property:  URI relativity.
438    *
439    * <p>
440    * Defines what relative URIs are relative to when serializing URI/URL objects.
441    *
442    * <ul class='seealso'>
443    *    <li class='jf'>{@link Serializer#SERIALIZER_uriRelativity}
444    * </ul>
445    *
446    * @param value
447    *    The new value for this property.
448    *    <br>The default is {@link UriRelativity#RESOURCE}
449    * @return This object (for method chaining).
450    */
451   @FluentSetter
452   public SerializerGroupBuilder uriRelativity(UriRelativity value) {
453      return set(SERIALIZER_uriRelativity, value);
454   }
455
456   /**
457    * Configuration property:  URI resolution.
458    *
459    * <p>
460    * Defines the resolution level for URIs when serializing URI/URL objects.
461    *
462    * <ul class='seealso'>
463    *    <li class='jf'>{@link Serializer#SERIALIZER_uriResolution}
464    * </ul>
465    *
466    * @param value
467    *    The new value for this property.
468    *    <br>The default is {@link UriResolution#NONE}
469    * @return This object (for method chaining).
470    */
471   @FluentSetter
472   public SerializerGroupBuilder uriResolution(UriResolution value) {
473      return set(SERIALIZER_uriResolution, value);
474   }
475
476   //--- OutputStreamSerializer ---
477
478   /**
479    * Configuration property:  Binary string format.
480    *
481    * <p>
482    * When using the {@link Serializer#serializeToString(Object)} method on stream-based serializers, this defines the format to use
483    * when converting the resulting byte array to a string.
484    *
485    * <ul class='javatree'>
486    *    <li class='jf'>{@link OutputStreamSerializer#OSSERIALIZER_binaryFormat}
487    * </ul>
488    *
489    * @param value
490    *    The new value for this property.
491    *    <br>The default is {@link BinaryFormat#HEX}.
492    * @return This object (for method chaining).
493    */
494   @FluentSetter
495   public SerializerGroupBuilder binaryOutputFormat(BinaryFormat value) {
496      return set(OSSERIALIZER_binaryFormat, value);
497   }
498
499   //--- WriterSerializer ---
500
501   /**
502    * Configuration property: File charset.
503    *
504    * <p>
505    * The character set to use for writing Files to the file system.
506    *
507    * <p>
508    * Used when passing in files to {@link Serializer#serialize(Object, Object)}.
509    *
510    * <ul class='seealso'>
511    *    <li class='jf'>{@link WriterSerializer#WSERIALIZER_fileCharset}
512    * </ul>
513    *
514    * @param value
515    *    The new value for this property.
516    *    <br>The default is the system JVM setting.
517    * @return This object (for method chaining).
518    */
519   @FluentSetter
520   public SerializerGroupBuilder fileCharset(Charset value) {
521      return set(WSERIALIZER_fileCharset, value);
522   }
523
524   /**
525    * Configuration property:  Maximum indentation.
526    *
527    * <p>
528    * Specifies the maximum indentation level in the serialized document.
529    *
530    * <ul class='seealso'>
531    *    <li class='jf'>{@link WriterSerializer#WSERIALIZER_maxIndent}
532    * </ul>
533    *
534    * @param value
535    *    The new value for this property.
536    *    <br>The default is <c>100</c>.
537    * @return This object (for method chaining).
538    */
539   @FluentSetter
540   public SerializerGroupBuilder maxIndent(int value) {
541      return set(WSERIALIZER_maxIndent, value);
542   }
543
544   /**
545    * Configuration property:  Quote character.
546    *
547    * <p>
548    * This is the character used for quoting attributes and values.
549    *
550    * <ul class='seealso'>
551    *    <li class='jf'>{@link WriterSerializer#WSERIALIZER_quoteChar}
552    * </ul>
553    *
554    * @param value
555    *    The new value for this property.
556    *    <br>The default is <js>'"'</js>.
557    * @return This object (for method chaining).
558    */
559   @FluentSetter
560   public SerializerGroupBuilder quoteChar(char value) {
561      return set(WSERIALIZER_quoteChar, value);
562   }
563
564   /**
565    * Configuration property:  Quote character.
566    *
567    * <p>
568    * Shortcut for calling <code>quoteChar(<js>'\''</js>)</code>.
569    *
570    * <ul class='seealso'>
571    *    <li class='jf'>{@link WriterSerializer#WSERIALIZER_quoteChar}
572    * </ul>
573    *
574    * @return This object (for method chaining).
575    */
576   @FluentSetter
577   public SerializerGroupBuilder sq() {
578      return quoteChar('\'');
579   }
580
581   /**
582    * Configuration property: Output stream charset.
583    *
584    * <p>
585    * The character set to use when writing to OutputStreams.
586    *
587    * <p>
588    * Used when passing in output streams and byte arrays to {@link WriterSerializer#serialize(Object, Object)}.
589    *
590    * <ul class='seealso'>
591    *    <li class='jf'>{@link WriterSerializer#WSERIALIZER_streamCharset}
592    * </ul>
593    *
594    * @param value
595    *    The new value for this property.
596    *    <br>The default is the system JVM setting.
597    * @return This object (for method chaining).
598    */
599   @FluentSetter
600   public SerializerGroupBuilder streamCharset(Charset value) {
601      return set(WSERIALIZER_streamCharset, value);
602   }
603
604   /**
605    * Configuration property:  Use whitespace.
606    *
607    * <div class='warn'>
608    *    <b>Deprecated</b> - Use {@link #useWhitespace()}
609    * </div>
610    */
611   @SuppressWarnings("javadoc")
612   @FluentSetter
613   @Deprecated
614   public SerializerGroupBuilder useWhitespace(boolean value) {
615      return set(WSERIALIZER_useWhitespace, value);
616   }
617
618   /**
619    * Configuration property:  Use whitespace.
620    *
621    * <p>
622    * Shortcut for calling <code>useWhitespace(<jk>true</jk>)</code>.
623    *
624    * <ul class='seealso'>
625    *    <li class='jf'>{@link WriterSerializer#WSERIALIZER_useWhitespace}
626    * </ul>
627    * @return This object (for method chaining).
628    */
629   @FluentSetter
630   public SerializerGroupBuilder useWhitespace() {
631      return set(WSERIALIZER_useWhitespace, true);
632   }
633
634   /**
635    * Configuration property:  Use whitespace.
636    *
637    * <p>
638    * Shortcut for calling <code>useWhitespace(<jk>true</jk>)</code>.
639    *
640    * <ul class='seealso'>
641    *    <li class='jf'>{@link WriterSerializer#WSERIALIZER_useWhitespace}
642    * </ul>
643    *
644    * @return This object (for method chaining).
645    */
646   @FluentSetter
647   public SerializerGroupBuilder ws() {
648      return useWhitespace();
649   }
650
651   // <FluentSetters>
652
653   @Override /* GENERATED - ContextBuilder */
654   public SerializerGroupBuilder add(Map<String,Object> properties) {
655      super.add(properties);
656      return this;
657   }
658
659   @Override /* GENERATED - ContextBuilder */
660   public SerializerGroupBuilder addTo(String name, Object value) {
661      super.addTo(name, value);
662      return this;
663   }
664
665   @Override /* GENERATED - ContextBuilder */
666   public SerializerGroupBuilder appendTo(String name, Object value) {
667      super.appendTo(name, value);
668      return this;
669   }
670
671   @Override /* GENERATED - ContextBuilder */
672   public SerializerGroupBuilder apply(PropertyStore copyFrom) {
673      super.apply(copyFrom);
674      return this;
675   }
676
677   @Override /* GENERATED - ContextBuilder */
678   public SerializerGroupBuilder applyAnnotations(java.lang.Class<?>...fromClasses) {
679      super.applyAnnotations(fromClasses);
680      return this;
681   }
682
683   @Override /* GENERATED - ContextBuilder */
684   public SerializerGroupBuilder applyAnnotations(Method...fromMethods) {
685      super.applyAnnotations(fromMethods);
686      return this;
687   }
688
689   @Override /* GENERATED - ContextBuilder */
690   public SerializerGroupBuilder applyAnnotations(AnnotationList al, VarResolverSession r) {
691      super.applyAnnotations(al, r);
692      return this;
693   }
694
695   @Override /* GENERATED - ContextBuilder */
696   public SerializerGroupBuilder debug() {
697      super.debug();
698      return this;
699   }
700
701   @Override /* GENERATED - ContextBuilder */
702   public SerializerGroupBuilder locale(Locale value) {
703      super.locale(value);
704      return this;
705   }
706
707   @Override /* GENERATED - ContextBuilder */
708   public SerializerGroupBuilder mediaType(MediaType value) {
709      super.mediaType(value);
710      return this;
711   }
712
713   @Override /* GENERATED - ContextBuilder */
714   public SerializerGroupBuilder prependTo(String name, Object value) {
715      super.prependTo(name, value);
716      return this;
717   }
718
719   @Override /* GENERATED - ContextBuilder */
720   public SerializerGroupBuilder putAllTo(String name, Object value) {
721      super.putAllTo(name, value);
722      return this;
723   }
724
725   @Override /* GENERATED - ContextBuilder */
726   public SerializerGroupBuilder putTo(String name, String key, Object value) {
727      super.putTo(name, key, value);
728      return this;
729   }
730
731   @Override /* GENERATED - ContextBuilder */
732   public SerializerGroupBuilder removeFrom(String name, Object value) {
733      super.removeFrom(name, value);
734      return this;
735   }
736
737   @Override /* GENERATED - ContextBuilder */
738   public SerializerGroupBuilder set(Map<String,Object> properties) {
739      super.set(properties);
740      return this;
741   }
742
743   @Override /* GENERATED - ContextBuilder */
744   public SerializerGroupBuilder set(String name, Object value) {
745      super.set(name, value);
746      return this;
747   }
748
749   @Override /* GENERATED - ContextBuilder */
750   public SerializerGroupBuilder timeZone(TimeZone value) {
751      super.timeZone(value);
752      return this;
753   }
754
755   @Override /* GENERATED - BeanContextBuilder */
756   public SerializerGroupBuilder annotations(Annotation...values) {
757      super.annotations(values);
758      return this;
759   }
760
761   @Override /* GENERATED - BeanContextBuilder */
762   public SerializerGroupBuilder beanClassVisibility(Visibility value) {
763      super.beanClassVisibility(value);
764      return this;
765   }
766
767   @Override /* GENERATED - BeanContextBuilder */
768   public SerializerGroupBuilder beanConstructorVisibility(Visibility value) {
769      super.beanConstructorVisibility(value);
770      return this;
771   }
772
773   @Override /* GENERATED - BeanContextBuilder */
774   public SerializerGroupBuilder beanFieldVisibility(Visibility value) {
775      super.beanFieldVisibility(value);
776      return this;
777   }
778
779   @Override /* GENERATED - BeanContextBuilder */
780   public SerializerGroupBuilder beanInterceptor(Class<?> on, Class<? extends org.apache.juneau.transform.BeanInterceptor<?>> value) {
781      super.beanInterceptor(on, value);
782      return this;
783   }
784
785   @Override /* GENERATED - BeanContextBuilder */
786   public SerializerGroupBuilder beanMapPutReturnsOldValue() {
787      super.beanMapPutReturnsOldValue();
788      return this;
789   }
790
791   @Override /* GENERATED - BeanContextBuilder */
792   public SerializerGroupBuilder beanMethodVisibility(Visibility value) {
793      super.beanMethodVisibility(value);
794      return this;
795   }
796
797   @Override /* GENERATED - BeanContextBuilder */
798   public SerializerGroupBuilder beansDontRequireSomeProperties() {
799      super.beansDontRequireSomeProperties();
800      return this;
801   }
802
803   @Override /* GENERATED - BeanContextBuilder */
804   public SerializerGroupBuilder beansRequireDefaultConstructor() {
805      super.beansRequireDefaultConstructor();
806      return this;
807   }
808
809   @Override /* GENERATED - BeanContextBuilder */
810   public SerializerGroupBuilder beansRequireSerializable() {
811      super.beansRequireSerializable();
812      return this;
813   }
814
815   @Override /* GENERATED - BeanContextBuilder */
816   public SerializerGroupBuilder beansRequireSettersForGetters() {
817      super.beansRequireSettersForGetters();
818      return this;
819   }
820
821   @Override /* GENERATED - BeanContextBuilder */
822   public SerializerGroupBuilder bpi(Map<String,Object> values) {
823      super.bpi(values);
824      return this;
825   }
826
827   @Override /* GENERATED - BeanContextBuilder */
828   public SerializerGroupBuilder bpi(Class<?> beanClass, String properties) {
829      super.bpi(beanClass, properties);
830      return this;
831   }
832
833   @Override /* GENERATED - BeanContextBuilder */
834   public SerializerGroupBuilder bpi(String beanClassName, String properties) {
835      super.bpi(beanClassName, properties);
836      return this;
837   }
838
839   @Override /* GENERATED - BeanContextBuilder */
840   public SerializerGroupBuilder bpro(Map<String,Object> values) {
841      super.bpro(values);
842      return this;
843   }
844
845   @Override /* GENERATED - BeanContextBuilder */
846   public SerializerGroupBuilder bpro(Class<?> beanClass, String properties) {
847      super.bpro(beanClass, properties);
848      return this;
849   }
850
851   @Override /* GENERATED - BeanContextBuilder */
852   public SerializerGroupBuilder bpro(String beanClassName, String properties) {
853      super.bpro(beanClassName, properties);
854      return this;
855   }
856
857   @Override /* GENERATED - BeanContextBuilder */
858   public SerializerGroupBuilder bpwo(Map<String,Object> values) {
859      super.bpwo(values);
860      return this;
861   }
862
863   @Override /* GENERATED - BeanContextBuilder */
864   public SerializerGroupBuilder bpwo(Class<?> beanClass, String properties) {
865      super.bpwo(beanClass, properties);
866      return this;
867   }
868
869   @Override /* GENERATED - BeanContextBuilder */
870   public SerializerGroupBuilder bpwo(String beanClassName, String properties) {
871      super.bpwo(beanClassName, properties);
872      return this;
873   }
874
875   @Override /* GENERATED - BeanContextBuilder */
876   public SerializerGroupBuilder bpx(Map<String,Object> values) {
877      super.bpx(values);
878      return this;
879   }
880
881   @Override /* GENERATED - BeanContextBuilder */
882   public SerializerGroupBuilder bpx(Class<?> beanClass, String properties) {
883      super.bpx(beanClass, properties);
884      return this;
885   }
886
887   @Override /* GENERATED - BeanContextBuilder */
888   public SerializerGroupBuilder bpx(String beanClassName, String properties) {
889      super.bpx(beanClassName, properties);
890      return this;
891   }
892
893   @Override /* GENERATED - BeanContextBuilder */
894   public SerializerGroupBuilder dictionary(Object...values) {
895      super.dictionary(values);
896      return this;
897   }
898
899   @Override /* GENERATED - BeanContextBuilder */
900   public SerializerGroupBuilder dictionaryOn(Class<?> on, java.lang.Class<?>...values) {
901      super.dictionaryOn(on, values);
902      return this;
903   }
904
905   @Override /* GENERATED - BeanContextBuilder */
906   public SerializerGroupBuilder dontIgnorePropertiesWithoutSetters() {
907      super.dontIgnorePropertiesWithoutSetters();
908      return this;
909   }
910
911   @Override /* GENERATED - BeanContextBuilder */
912   public SerializerGroupBuilder dontIgnoreTransientFields() {
913      super.dontIgnoreTransientFields();
914      return this;
915   }
916
917   @Override /* GENERATED - BeanContextBuilder */
918   public SerializerGroupBuilder dontIgnoreUnknownNullBeanProperties() {
919      super.dontIgnoreUnknownNullBeanProperties();
920      return this;
921   }
922
923   @Override /* GENERATED - BeanContextBuilder */
924   public SerializerGroupBuilder dontUseInterfaceProxies() {
925      super.dontUseInterfaceProxies();
926      return this;
927   }
928
929   @Override /* GENERATED - BeanContextBuilder */
930   public <T> SerializerGroupBuilder example(Class<T> pojoClass, T o) {
931      super.example(pojoClass, o);
932      return this;
933   }
934
935   @Override /* GENERATED - BeanContextBuilder */
936   public <T> SerializerGroupBuilder exampleJson(Class<T> pojoClass, String json) {
937      super.exampleJson(pojoClass, json);
938      return this;
939   }
940
941   @Override /* GENERATED - BeanContextBuilder */
942   public SerializerGroupBuilder fluentSetters() {
943      super.fluentSetters();
944      return this;
945   }
946
947   @Override /* GENERATED - BeanContextBuilder */
948   public SerializerGroupBuilder fluentSetters(Class<?> on) {
949      super.fluentSetters(on);
950      return this;
951   }
952
953   @Override /* GENERATED - BeanContextBuilder */
954   public SerializerGroupBuilder ignoreInvocationExceptionsOnGetters() {
955      super.ignoreInvocationExceptionsOnGetters();
956      return this;
957   }
958
959   @Override /* GENERATED - BeanContextBuilder */
960   public SerializerGroupBuilder ignoreInvocationExceptionsOnSetters() {
961      super.ignoreInvocationExceptionsOnSetters();
962      return this;
963   }
964
965   @Override /* GENERATED - BeanContextBuilder */
966   public SerializerGroupBuilder ignoreUnknownBeanProperties() {
967      super.ignoreUnknownBeanProperties();
968      return this;
969   }
970
971   @Override /* GENERATED - BeanContextBuilder */
972   public SerializerGroupBuilder implClass(Class<?> interfaceClass, Class<?> implClass) {
973      super.implClass(interfaceClass, implClass);
974      return this;
975   }
976
977   @Override /* GENERATED - BeanContextBuilder */
978   public SerializerGroupBuilder implClasses(Map<Class<?>,Class<?>> values) {
979      super.implClasses(values);
980      return this;
981   }
982
983   @Override /* GENERATED - BeanContextBuilder */
984   public SerializerGroupBuilder interfaceClass(Class<?> on, Class<?> value) {
985      super.interfaceClass(on, value);
986      return this;
987   }
988
989   @Override /* GENERATED - BeanContextBuilder */
990   public SerializerGroupBuilder interfaces(java.lang.Class<?>...value) {
991      super.interfaces(value);
992      return this;
993   }
994
995   @Override /* GENERATED - BeanContextBuilder */
996   public SerializerGroupBuilder notBeanClasses(Object...values) {
997      super.notBeanClasses(values);
998      return this;
999   }
1000
1001   @Override /* GENERATED - BeanContextBuilder */
1002   public SerializerGroupBuilder notBeanPackages(Object...values) {
1003      super.notBeanPackages(values);
1004      return this;
1005   }
1006
1007   @Override /* GENERATED - BeanContextBuilder */
1008   public SerializerGroupBuilder propertyNamer(Class<? extends org.apache.juneau.PropertyNamer> value) {
1009      super.propertyNamer(value);
1010      return this;
1011   }
1012
1013   @Override /* GENERATED - BeanContextBuilder */
1014   public SerializerGroupBuilder propertyNamer(Class<?> on, Class<? extends org.apache.juneau.PropertyNamer> value) {
1015      super.propertyNamer(on, value);
1016      return this;
1017   }
1018
1019   @Override /* GENERATED - BeanContextBuilder */
1020   public SerializerGroupBuilder sortProperties() {
1021      super.sortProperties();
1022      return this;
1023   }
1024
1025   @Override /* GENERATED - BeanContextBuilder */
1026   public SerializerGroupBuilder sortProperties(java.lang.Class<?>...on) {
1027      super.sortProperties(on);
1028      return this;
1029   }
1030
1031   @Override /* GENERATED - BeanContextBuilder */
1032   public SerializerGroupBuilder stopClass(Class<?> on, Class<?> value) {
1033      super.stopClass(on, value);
1034      return this;
1035   }
1036
1037   @Override /* GENERATED - BeanContextBuilder */
1038   public SerializerGroupBuilder swaps(Object...values) {
1039      super.swaps(values);
1040      return this;
1041   }
1042
1043   @Override /* GENERATED - BeanContextBuilder */
1044   public SerializerGroupBuilder typeName(Class<?> on, String value) {
1045      super.typeName(on, value);
1046      return this;
1047   }
1048
1049   @Override /* GENERATED - BeanContextBuilder */
1050   public SerializerGroupBuilder typePropertyName(String value) {
1051      super.typePropertyName(value);
1052      return this;
1053   }
1054
1055   @Override /* GENERATED - BeanContextBuilder */
1056   public SerializerGroupBuilder typePropertyName(Class<?> on, String value) {
1057      super.typePropertyName(on, value);
1058      return this;
1059   }
1060
1061   @Override /* GENERATED - BeanContextBuilder */
1062   public SerializerGroupBuilder useEnumNames() {
1063      super.useEnumNames();
1064      return this;
1065   }
1066
1067   @Override /* GENERATED - BeanContextBuilder */
1068   public SerializerGroupBuilder useJavaBeanIntrospector() {
1069      super.useJavaBeanIntrospector();
1070      return this;
1071   }
1072
1073   @Override /* GENERATED - BeanTraverseBuilder */
1074   public SerializerGroupBuilder detectRecursions() {
1075      super.detectRecursions();
1076      return this;
1077   }
1078
1079   @Override /* GENERATED - BeanTraverseBuilder */
1080   public SerializerGroupBuilder ignoreRecursions() {
1081      super.ignoreRecursions();
1082      return this;
1083   }
1084
1085   @Override /* GENERATED - BeanTraverseBuilder */
1086   public SerializerGroupBuilder initialDepth(int value) {
1087      super.initialDepth(value);
1088      return this;
1089   }
1090
1091   @Override /* GENERATED - BeanTraverseBuilder */
1092   public SerializerGroupBuilder maxDepth(int value) {
1093      super.maxDepth(value);
1094      return this;
1095   }
1096
1097   // </FluentSetters>
1098}