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.Serializer.*;
016
017import java.lang.reflect.*;
018import java.util.*;
019
020import org.apache.juneau.*;
021import org.apache.juneau.http.*;
022import org.apache.juneau.reflect.*;
023import org.apache.juneau.svl.*;
024
025/**
026 * Builder class for building instances of serializers.
027 */
028public class SerializerBuilder extends BeanTraverseBuilder {
029
030   /**
031    * Constructor, default settings.
032    */
033   public SerializerBuilder() {
034      super();
035   }
036
037   /**
038    * Constructor.
039    *
040    * @param ps The initial configuration settings for this builder.
041    */
042   public SerializerBuilder(PropertyStore ps) {
043      super(ps);
044   }
045
046   //-----------------------------------------------------------------------------------------------------------------
047   // Properties
048   //-----------------------------------------------------------------------------------------------------------------
049
050   /**
051    * Configuration property:  Add <js>"_type"</js> properties when needed.
052    *
053    * <p>
054    * If <jk>true</jk>, then <js>"_type"</js> properties will be added to beans if their type cannot be inferred
055    * through reflection.
056    *
057    * <ul class='seealso'>
058    *    <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes}
059    * </ul>
060    *
061    * @param value
062    *    The new value for this property.
063    *    <br>The default is <jk>false</jk>.
064    * @return This object (for method chaining).
065    */
066   public SerializerBuilder addBeanTypes(boolean value) {
067      return set(SERIALIZER_addBeanTypes, value);
068   }
069
070   /**
071    * Configuration property:  Add <js>"_type"</js> properties when needed.
072    *
073    * <p>
074    * Shortcut for calling <code>addBeanTypes(<jk>true</jk>)</code>.
075    *
076    * <ul class='seealso'>
077    *    <li class='jf'>{@link Serializer#SERIALIZER_addBeanTypes}
078    * </ul>
079    *
080    * @return This object (for method chaining).
081    */
082   public SerializerBuilder addBeanTypes() {
083      return set(SERIALIZER_addBeanTypes, true);
084   }
085
086   /**
087    * Configuration property:  Add type attribute to root nodes.
088    *
089    * <p>
090    * When disabled, it is assumed that the parser knows the exact Java POJO type being parsed, and therefore top-level
091    * type information that might normally be included to determine the data type will not be serialized.
092    *
093    * <ul class='seealso'>
094    *    <li class='jf'>{@link Serializer#SERIALIZER_addRootType}
095    * </ul>
096    *
097    * @param value
098    *    The new value for this property.
099    *    <br>The default is <jk>false</jk>.
100    * @return This object (for method chaining).
101    */
102   public SerializerBuilder addRootType(boolean value) {
103      return set(SERIALIZER_addRootType, value);
104   }
105
106   /**
107    * Configuration property:  Add type attribute to root nodes.
108    *
109    * <p>
110    * Shortcut for calling <code>addRootType(<jk>true</jk>)</code>.
111    *
112    * <ul class='seealso'>
113    *    <li class='jf'>{@link Serializer#SERIALIZER_addRootType}
114    * </ul>
115    *
116    * @return This object (for method chaining).
117    */
118   public SerializerBuilder addRootType() {
119      return set(SERIALIZER_addRootType, true);
120   }
121
122   /**
123    * Configuration property:  Serializer listener.
124    *
125    * <p>
126    * Class used to listen for errors and warnings that occur during serialization.
127    *
128    * <ul class='seealso'>
129    *    <li class='jf'>{@link Serializer#SERIALIZER_listener}
130    * </ul>
131    *
132    * @param value
133    *    The new value for this property.
134    * @return This object (for method chaining).
135    */
136   public SerializerBuilder listener(Class<? extends SerializerListener> value) {
137      return set(SERIALIZER_listener, value);
138   }
139
140   /**
141    * Configuration property:  Sort arrays and collections alphabetically.
142    *
143    * <p>
144    * Copies and sorts the contents of arrays and collections before serializing them.
145    *
146    * <ul class='seealso'>
147    *    <li class='jf'>{@link Serializer#SERIALIZER_sortCollections}
148    * </ul>
149    *
150    * @param value
151    *    The new value for this property.
152    *    <br>The default is <jk>false</jk>.
153    * @return This object (for method chaining).
154    */
155   public SerializerBuilder sortCollections(boolean value) {
156      return set(SERIALIZER_sortCollections, value);
157   }
158
159   /**
160    * Configuration property:  Sort arrays and collections alphabetically.
161    *
162    * <p>
163    * Shortcut for calling <code>sortCollections(<jk>true</jk>)</code>.
164    *
165    * <ul class='seealso'>
166    *    <li class='jf'>{@link Serializer#SERIALIZER_sortCollections}
167    * </ul>
168    *
169    * @return This object (for method chaining).
170    */
171   public SerializerBuilder sortCollections() {
172      return set(SERIALIZER_sortCollections, true);
173   }
174
175   /**
176    * Configuration property:  Sort maps alphabetically.
177    *
178    * <p>
179    * Copies and sorts the contents of maps before serializing them.
180    *
181    * <ul class='seealso'>
182    *    <li class='jf'>{@link Serializer#SERIALIZER_sortMaps}
183    * </ul>
184    *
185    * @param value
186    *    The new value for this property.
187    *    <br>The default is <jk>false</jk>.
188    * @return This object (for method chaining).
189    */
190   public SerializerBuilder sortMaps(boolean value) {
191      return set(SERIALIZER_sortMaps, value);
192   }
193
194   /**
195    * Configuration property:  Sort maps alphabetically.
196    *
197    * <p>
198    * Shortcut for calling <code>sortMaps(<jk>true</jk>)</code>.
199    *
200    * <ul class='seealso'>
201    *    <li class='jf'>{@link Serializer#SERIALIZER_sortMaps}
202    * </ul>
203    *
204    * @return This object (for method chaining).
205    */
206   public SerializerBuilder sortMaps() {
207      return set(SERIALIZER_sortMaps, true);
208   }
209
210   /**
211    * Configuration property:  Trim empty lists and arrays.
212    *
213    * <p>
214    * If <jk>true</jk>, empty list values will not be serialized to the output.
215    *
216    * <ul class='seealso'>
217    *    <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyCollections}
218    * </ul>
219    *
220    * @param value
221    *    The new value for this property.
222    *    <br>The default is <jk>false</jk>.
223    * @return This object (for method chaining).
224    */
225   public SerializerBuilder trimEmptyCollections(boolean value) {
226      return set(SERIALIZER_trimEmptyCollections, value);
227   }
228
229   /**
230    * Configuration property:  Trim empty lists and arrays.
231    *
232    * <p>
233    * Shortcut for calling <code>trimEmptyCollections(<jk>true</jk>)</code>.
234    *
235    * <ul class='seealso'>
236    *    <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyCollections}
237    * </ul>
238    *
239    * @return This object (for method chaining).
240    */
241   public SerializerBuilder trimEmptyCollections() {
242      return set(SERIALIZER_trimEmptyCollections, true);
243   }
244
245   /**
246    * Configuration property:  Trim empty maps.
247    *
248    * <p>
249    * If <jk>true</jk>, empty map values will not be serialized to the output.
250    *
251    * <ul class='seealso'>
252    *    <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps}
253    * </ul>
254    *
255    * @param value
256    *    The new value for this property.
257    *    <br>The default is <jk>false</jk>.
258    * @return This object (for method chaining).
259    */
260   public SerializerBuilder trimEmptyMaps(boolean value) {
261      return set(SERIALIZER_trimEmptyMaps, value);
262   }
263
264   /**
265    * Configuration property:  Trim empty maps.
266    *
267    * <p>
268    * Shortcut for calling <code>trimEmptyMaps(<jk>true</jk>)</code>.
269    *
270    * <ul class='seealso'>
271    *    <li class='jf'>{@link Serializer#SERIALIZER_trimEmptyMaps}
272    * </ul>
273    *
274    * @return This object (for method chaining).
275    */
276   public SerializerBuilder trimEmptyMaps() {
277      return set(SERIALIZER_trimEmptyMaps, true);
278   }
279
280   /**
281    * Configuration property:  Trim null bean property values.
282    *
283    * <p>
284    * If <jk>true</jk>, null bean values will not be serialized to the output.
285    *
286    * <ul class='seealso'>
287    *    <li class='jf'>{@link Serializer#SERIALIZER_trimNullProperties}
288    * </ul>
289    *
290    * @param value
291    *    The new value for this property.
292    *    <br>The default is <jk>true</jk>.
293    * @return This object (for method chaining).
294    */
295   public SerializerBuilder trimNullProperties(boolean value) {
296      return set(SERIALIZER_trimNullProperties, value);
297   }
298
299   /**
300    * Configuration property:  Trim strings.
301    *
302    * <p>
303    * If <jk>true</jk>, string values will be trimmed of whitespace using {@link String#trim()} before being serialized.
304    *
305    * <ul class='seealso'>
306    *    <li class='jf'>{@link Serializer#SERIALIZER_trimStrings}
307    * </ul>
308    *
309    * @param value
310    *    The new value for this property.
311    *    <br>The default is <jk>false</jk>.
312    * @return This object (for method chaining).
313    */
314   public SerializerBuilder trimStrings(boolean value) {
315      return set(SERIALIZER_trimStrings, value);
316   }
317
318   /**
319    * Configuration property:  Trim strings.
320    *
321    * <p>
322    * Shortcut for calling <code>trimStrings(<jk>true</jk>)</code>.
323    *
324    * <ul class='seealso'>
325    *    <li class='jf'>{@link Serializer#SERIALIZER_trimStrings}
326    * </ul>
327    *
328    * @return This object (for method chaining).
329    */
330   public SerializerBuilder trimStrings() {
331      return set(SERIALIZER_trimStrings, true);
332   }
333
334   /**
335    * Configuration property:  URI context bean.
336    *
337    * <p>
338    * Bean used for resolution of URIs to absolute or root-relative form.
339    *
340    * <ul class='seealso'>
341    *    <li class='jf'>{@link Serializer#SERIALIZER_uriContext}
342    * </ul>
343    *
344    * @param value The new value for this property.
345    * @return This object (for method chaining).
346    */
347   public SerializerBuilder uriContext(UriContext value) {
348      return set(SERIALIZER_uriContext, value);
349   }
350
351   /**
352    * Configuration property:  URI context bean.
353    *
354    * <p>
355    * Same as {@link #uriContext(UriContext)} but allows you to pass in a JSON string.
356    *
357    * <h5 class='section'>Example:</h5>
358    * <p class='bcode w800'>
359    *    WriterSerializer s = JsonSerializer
360    *       .<jsm>create</jsm>()
361    *       .uriContext(<js>"{authority:'http://localhost:10000',contextRoot:'/myContext',servletPath:'/myServlet',pathInfo:'/foo'}"</js>)
362    *       .build();
363    * </p>
364    *
365    * <ul class='seealso'>
366    *    <li class='jf'>{@link Serializer#SERIALIZER_uriContext}
367    * </ul>
368    *
369    * @param value The new value for this property.
370    * @return This object (for method chaining).
371    */
372   public SerializerBuilder uriContext(String value) {
373      return set(SERIALIZER_uriContext, value);
374   }
375
376   /**
377    * Configuration property:  URI relativity.
378    *
379    * <p>
380    * Defines what relative URIs are relative to when serializing URI/URL objects.
381    *
382    * <ul class='seealso'>
383    *    <li class='jf'>{@link Serializer#SERIALIZER_uriRelativity}
384    * </ul>
385    *
386    * @param value
387    *    The new value for this property.
388    *    <br>The default is {@link UriRelativity#RESOURCE}
389    * @return This object (for method chaining).
390    */
391   public SerializerBuilder uriRelativity(UriRelativity value) {
392      return set(SERIALIZER_uriRelativity, value);
393   }
394
395   /**
396    * Configuration property:  URI relativity.
397    *
398    * <p>
399    * Same as {@link #uriRelativity(UriRelativity)} but allows you to pass in a string.
400    *
401    * <h5 class='section'>Example:</h5>
402    * <p class='bcode w800'>
403    *    WriterSerializer s = JsonSerializer
404    *       .<jsm>create</jsm>()
405    *       .uriRelativity(<js>"PATH_INFO"</js>)
406    *       .build();
407    * </p>
408    *
409    * <ul class='seealso'>
410    *    <li class='jf'>{@link Serializer#SERIALIZER_uriRelativity}
411    * </ul>
412    *
413    * @param value
414    *    The new value for this property.
415    *    <br>The default is {@link UriRelativity#RESOURCE}
416    * @return This object (for method chaining).
417    */
418   public SerializerBuilder uriRelativity(String value) {
419      return set(SERIALIZER_uriRelativity, value);
420   }
421
422   /**
423    * Configuration property:  URI resolution.
424    *
425    * <p>
426    * Defines the resolution level for URIs when serializing URI/URL objects.
427    *
428    * <ul class='seealso'>
429    *    <li class='jf'>{@link Serializer#SERIALIZER_uriResolution}
430    * </ul>
431    *
432    * @param value
433    *    The new value for this property.
434    *    <br>The default is {@link UriResolution#NONE}
435    * @return This object (for method chaining).
436    */
437   public SerializerBuilder uriResolution(UriResolution value) {
438      return set(SERIALIZER_uriResolution, value);
439   }
440
441   /**
442    * Configuration property:  URI resolution.
443    *
444    * <p>
445    * Same as {@link #uriResolution(UriResolution)} but allows you to pass in a string.
446    *
447    * <h5 class='section'>Example:</h5>
448    * <p class='bcode w800'>
449    *    WriterSerializer s = JsonSerializer
450    *       .<jsm>create</jsm>()
451    *       .uriResolution(<js>"ROOT_RELATIVE"</js>)
452    *       .build();
453    * </p>
454    *
455    * <ul class='seealso'>
456    *    <li class='jf'>{@link Serializer#SERIALIZER_uriResolution}
457    * </ul>
458    *
459    * @param value
460    *    The new value for this property.
461    *    <br>The default is {@link UriResolution#NONE}
462    * @return This object (for method chaining).
463    */
464   public SerializerBuilder uriResolution(String value) {
465      return set(SERIALIZER_uriResolution, value);
466   }
467
468   @Override /* BeanTraverseBuilder */
469   public SerializerBuilder detectRecursions(boolean value) {
470      super.detectRecursions(value);
471      return this;
472   }
473
474   @Override /* BeanTraverseBuilder */
475   public SerializerBuilder detectRecursions() {
476      super.detectRecursions();
477      return this;
478   }
479
480   @Override /* BeanTraverseBuilder */
481   public SerializerBuilder ignoreRecursions(boolean value) {
482      super.ignoreRecursions(value);
483      return this;
484   }
485
486   @Override /* BeanTraverseBuilder */
487   public SerializerBuilder ignoreRecursions() {
488      super.ignoreRecursions();
489      return this;
490   }
491
492   @Override /* BeanTraverseBuilder */
493   public SerializerBuilder initialDepth(int value) {
494      super.initialDepth(value);
495      return this;
496   }
497
498   @Override /* BeanTraverseBuilder */
499   public SerializerBuilder maxDepth(int value) {
500      super.maxDepth(value);
501      return this;
502   }
503
504   @Override /* BeanContextBuilder */
505   public SerializerBuilder beanClassVisibility(Visibility value) {
506      super.beanClassVisibility(value);
507      return this;
508   }
509
510   @Override /* BeanContextBuilder */
511   public SerializerBuilder beanConstructorVisibility(Visibility value) {
512      super.beanConstructorVisibility(value);
513      return this;
514   }
515
516   @Override /* BeanContextBuilder */
517   public SerializerBuilder beanDictionary(Class<?>...values) {
518      super.beanDictionary(values);
519      return this;
520   }
521
522   @Override /* BeanContextBuilder */
523   public SerializerBuilder beanDictionary(Object...values) {
524      super.beanDictionary(values);
525      return this;
526   }
527
528   @Override /* BeanContextBuilder */
529   public SerializerBuilder beanDictionaryReplace(Class<?>...values) {
530      super.beanDictionaryReplace(values);
531      return this;
532   }
533
534   @Override /* BeanContextBuilder */
535   public SerializerBuilder beanDictionaryReplace(Object...values) {
536      super.beanDictionaryReplace(values);
537      return this;
538   }
539
540   @Override /* BeanContextBuilder */
541   public SerializerBuilder beanDictionaryRemove(Class<?>...values) {
542      super.beanDictionaryRemove(values);
543      return this;
544   }
545
546   @Override /* BeanContextBuilder */
547   public SerializerBuilder beanDictionaryRemove(Object...values) {
548      super.beanDictionaryRemove(values);
549      return this;
550   }
551
552   @Override /* BeanContextBuilder */
553   public SerializerBuilder beanFieldVisibility(Visibility value) {
554      super.beanFieldVisibility(value);
555      return this;
556   }
557
558   @Override /* BeanContextBuilder */
559   public SerializerBuilder beanFilters(Class<?>...values) {
560      super.beanFilters(values);
561      return this;
562   }
563
564   @Override /* BeanContextBuilder */
565   public SerializerBuilder beanFilters(Object...values) {
566      super.beanFilters(values);
567      return this;
568   }
569
570   @Override /* BeanContextBuilder */
571   public SerializerBuilder beanFiltersReplace(Class<?>...values) {
572      super.beanFiltersReplace(values);
573      return this;
574   }
575
576   @Override /* BeanContextBuilder */
577   public SerializerBuilder beanFiltersReplace(Object...values) {
578      super.beanFiltersReplace(values);
579      return this;
580   }
581
582   @Override /* BeanContextBuilder */
583   public SerializerBuilder beanFiltersRemove(Class<?>...values) {
584      super.beanFiltersRemove(values);
585      return this;
586   }
587
588   @Override /* BeanContextBuilder */
589   public SerializerBuilder beanFiltersRemove(Object...values) {
590      super.beanFiltersRemove(values);
591      return this;
592   }
593
594   @Override /* BeanContextBuilder */
595   public SerializerBuilder beanMapPutReturnsOldValue(boolean value) {
596      super.beanMapPutReturnsOldValue(value);
597      return this;
598   }
599
600   @Override /* BeanContextBuilder */
601   public SerializerBuilder beanMapPutReturnsOldValue() {
602      super.beanMapPutReturnsOldValue();
603      return this;
604   }
605
606   @Override /* BeanContextBuilder */
607   public SerializerBuilder beanMethodVisibility(Visibility value) {
608      super.beanMethodVisibility(value);
609      return this;
610   }
611
612   @Override /* BeanContextBuilder */
613   public SerializerBuilder beansRequireDefaultConstructor(boolean value) {
614      super.beansRequireDefaultConstructor(value);
615      return this;
616   }
617
618   @Override /* BeanContextBuilder */
619   public SerializerBuilder beansRequireDefaultConstructor() {
620      super.beansRequireDefaultConstructor();
621      return this;
622   }
623
624   @Override /* BeanContextBuilder */
625   public SerializerBuilder beansRequireSerializable(boolean value) {
626      super.beansRequireSerializable(value);
627      return this;
628   }
629
630   @Override /* BeanContextBuilder */
631   public SerializerBuilder beansRequireSerializable() {
632      super.beansRequireSerializable();
633      return this;
634   }
635
636   @Override /* BeanContextBuilder */
637   public SerializerBuilder beansRequireSettersForGetters(boolean value) {
638      super.beansRequireSettersForGetters(value);
639      return this;
640   }
641
642   @Override /* BeanContextBuilder */
643   public SerializerBuilder beansRequireSettersForGetters() {
644      super.beansRequireSettersForGetters();
645      return this;
646   }
647
648   @Override /* BeanContextBuilder */
649   public SerializerBuilder beansRequireSomeProperties(boolean value) {
650      super.beansRequireSomeProperties(value);
651      return this;
652   }
653
654   @Override /* BeanContextBuilder */
655   public SerializerBuilder beanTypePropertyName(String value) {
656      super.beanTypePropertyName(value);
657      return this;
658   }
659
660   @Override /* BeanContextBuilder */
661   public SerializerBuilder debug() {
662      super.debug();
663      return this;
664   }
665
666   @Override /* BeanContextBuilder */
667   public <T> SerializerBuilder example(Class<T> c, T o) {
668      super.example(c, o);
669      return this;
670   }
671
672   @Override /* BeanContextBuilder */
673   public <T> SerializerBuilder exampleJson(Class<T> c, String value) {
674      super.exampleJson(c, value);
675      return this;
676   }
677
678   @Override /* BeanContextBuilder */
679   public SerializerBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
680      super.ignoreInvocationExceptionsOnGetters(value);
681      return this;
682   }
683
684   @Override /* BeanContextBuilder */
685   public SerializerBuilder ignoreInvocationExceptionsOnGetters() {
686      super.ignoreInvocationExceptionsOnGetters();
687      return this;
688   }
689
690   @Override /* BeanContextBuilder */
691   public SerializerBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
692      super.ignoreInvocationExceptionsOnSetters(value);
693      return this;
694   }
695
696   @Override /* BeanContextBuilder */
697   public SerializerBuilder ignoreInvocationExceptionsOnSetters() {
698      super.ignoreInvocationExceptionsOnSetters();
699      return this;
700   }
701
702   @Override /* BeanContextBuilder */
703   public SerializerBuilder ignorePropertiesWithoutSetters(boolean value) {
704      super.ignorePropertiesWithoutSetters(value);
705      return this;
706   }
707
708   @Override /* BeanContextBuilder */
709   public SerializerBuilder ignoreUnknownBeanProperties(boolean value) {
710      super.ignoreUnknownBeanProperties(value);
711      return this;
712   }
713
714   @Override /* BeanContextBuilder */
715   public SerializerBuilder ignoreUnknownBeanProperties() {
716      super.ignoreUnknownBeanProperties();
717      return this;
718   }
719
720   @Override /* BeanContextBuilder */
721   public SerializerBuilder ignoreUnknownNullBeanProperties(boolean value) {
722      super.ignoreUnknownNullBeanProperties(value);
723      return this;
724   }
725
726   @Override /* BeanContextBuilder */
727   public SerializerBuilder implClass(Class<?> interfaceClass, Class<?> implClass) {
728      super.implClass(interfaceClass, implClass);
729      return this;
730   }
731
732   @Override /* BeanContextBuilder */
733   public SerializerBuilder implClasses(Map<String,Class<?>> values) {
734      super.implClasses(values);
735      return this;
736   }
737
738   @Override /* BeanContextBuilder */
739   public SerializerBuilder locale(Locale value) {
740      super.locale(value);
741      return this;
742   }
743
744   @Override /* BeanContextBuilder */
745   public SerializerBuilder mediaType(MediaType value) {
746      super.mediaType(value);
747      return this;
748   }
749
750   @Override /* BeanContextBuilder */
751   public SerializerBuilder notBeanClasses(Class<?>...values) {
752      super.notBeanClasses(values);
753      return this;
754   }
755
756   @Override /* BeanContextBuilder */
757   public SerializerBuilder notBeanClasses(Object...values) {
758      super.notBeanClasses(values);
759      return this;
760   }
761
762   @Override /* BeanContextBuilder */
763   public SerializerBuilder notBeanClassesReplace(Class<?>...values) {
764      super.notBeanClassesReplace(values);
765      return this;
766   }
767
768   @Override /* BeanContextBuilder */
769   public SerializerBuilder notBeanClassesReplace(Object...values) {
770      super.notBeanClassesReplace(values);
771      return this;
772   }
773
774   @Override /* BeanContextBuilder */
775   public SerializerBuilder notBeanClassesRemove(Class<?>...values) {
776      super.notBeanClassesRemove(values);
777      return this;
778   }
779
780   @Override /* BeanContextBuilder */
781   public SerializerBuilder notBeanClassesRemove(Object...values) {
782      super.notBeanClassesRemove(values);
783      return this;
784   }
785
786   @Override /* BeanContextBuilder */
787   public SerializerBuilder notBeanPackages(Object...values) {
788      super.notBeanPackages(values);
789      return this;
790   }
791
792   @Override /* BeanContextBuilder */
793   public SerializerBuilder notBeanPackages(String...values) {
794      super.notBeanPackages(values);
795      return this;
796   }
797
798   @Override /* BeanContextBuilder */
799   public SerializerBuilder notBeanPackagesReplace(String...values) {
800      super.notBeanPackagesReplace(values);
801      return this;
802   }
803
804   @Override /* BeanContextBuilder */
805   public SerializerBuilder notBeanPackagesReplace(Object...values) {
806      super.notBeanPackagesReplace(values);
807      return this;
808   }
809
810   @Override /* BeanContextBuilder */
811   public SerializerBuilder notBeanPackagesRemove(String...values) {
812      super.notBeanPackagesRemove(values);
813      return this;
814   }
815
816   @Override /* BeanContextBuilder */
817   public SerializerBuilder notBeanPackagesRemove(Object...values) {
818      super.notBeanPackagesRemove(values);
819      return this;
820   }
821
822   @Override /* BeanContextBuilder */
823   public SerializerBuilder pojoSwaps(Class<?>...values) {
824      super.pojoSwaps(values);
825      return this;
826   }
827
828   @Override /* BeanContextBuilder */
829   public SerializerBuilder pojoSwaps(Object...values) {
830      super.pojoSwaps(values);
831      return this;
832   }
833
834   @Override /* BeanContextBuilder */
835   public SerializerBuilder pojoSwapsReplace(Class<?>...values) {
836      super.pojoSwapsReplace(values);
837      return this;
838   }
839
840   @Override /* BeanContextBuilder */
841   public SerializerBuilder pojoSwapsReplace(Object...values) {
842      super.pojoSwapsReplace(values);
843      return this;
844   }
845
846   @Override /* BeanContextBuilder */
847   public SerializerBuilder pojoSwapsRemove(Class<?>...values) {
848      super.pojoSwapsRemove(values);
849      return this;
850   }
851
852   @Override /* BeanContextBuilder */
853   public SerializerBuilder pojoSwapsRemove(Object...values) {
854      super.pojoSwapsRemove(values);
855      return this;
856   }
857
858   @Override /* BeanContextBuilder */
859   public SerializerBuilder sortProperties(boolean value) {
860      super.sortProperties(value);
861      return this;
862   }
863
864   @Override /* BeanContextBuilder */
865   public SerializerBuilder sortProperties() {
866      super.sortProperties();
867      return this;
868   }
869
870   @Override /* BeanContextBuilder */
871   public SerializerBuilder timeZone(TimeZone value) {
872      super.timeZone(value);
873      return this;
874   }
875
876   @Override /* BeanContextBuilder */
877   public SerializerBuilder useEnumNames(boolean value) {
878      super.useEnumNames(value);
879      return this;
880   }
881
882   @Override /* BeanContextBuilder */
883   public SerializerBuilder useEnumNames() {
884      super.useEnumNames();
885      return this;
886   }
887
888   @Override /* BeanContextBuilder */
889   public SerializerBuilder useInterfaceProxies(boolean value) {
890      super.useInterfaceProxies(value);
891      return this;
892   }
893
894   @Override /* BeanContextBuilder */
895   public SerializerBuilder useJavaBeanIntrospector(boolean value) {
896      super.useJavaBeanIntrospector(value);
897      return this;
898   }
899
900   @Override /* BeanContextBuilder */
901   public SerializerBuilder useJavaBeanIntrospector() {
902      super.useJavaBeanIntrospector();
903      return this;
904   }
905
906   @Override /* ContextBuilder */
907   public SerializerBuilder set(String name, Object value) {
908      super.set(name, value);
909      return this;
910   }
911
912   @Override /* ContextBuilder */
913   public SerializerBuilder set(Map<String,Object> properties) {
914      super.set(properties);
915      return this;
916   }
917
918   @Override /* ContextBuilder */
919   public SerializerBuilder add(Map<String,Object> properties) {
920      super.add(properties);
921      return this;
922   }
923
924   @Override /* ContextBuilder */
925   public SerializerBuilder addTo(String name, Object value) {
926      super.addTo(name, value);
927      return this;
928   }
929
930   @Override /* ContextBuilder */
931   public SerializerBuilder addTo(String name, String key, Object value) {
932      super.addTo(name, key, value);
933      return this;
934   }
935
936   @Override /* ContextBuilder */
937   public SerializerBuilder removeFrom(String name, Object value) {
938      super.removeFrom(name, value);
939      return this;
940   }
941
942   @Override /* ContextBuilder */
943   public SerializerBuilder apply(PropertyStore copyFrom) {
944      super.apply(copyFrom);
945      return this;
946   }
947
948   @Override /* ContextBuilder */
949   public SerializerBuilder applyAnnotations(AnnotationList al, VarResolverSession vrs) {
950      super.applyAnnotations(al, vrs);
951      return this;
952   }
953
954   @Override /* ContextBuilder */
955   public SerializerBuilder applyAnnotations(Class<?> fromClass) {
956      super.applyAnnotations(fromClass);
957      return this;
958   }
959
960   @Override /* ContextBuilder */
961   public SerializerBuilder applyAnnotations(Method fromMethod) {
962      super.applyAnnotations(fromMethod);
963      return this;
964   }
965
966   @Override /* Context */
967   public Serializer build() {
968      return null;
969   }
970}