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.json;
014
015import static org.apache.juneau.json.JsonSerializer.*;
016
017import java.lang.annotation.*;
018import java.lang.reflect.*;
019import java.nio.charset.*;
020import java.util.*;
021
022import org.apache.juneau.*;
023import org.apache.juneau.http.*;
024import org.apache.juneau.internal.*;
025import org.apache.juneau.reflect.*;
026import org.apache.juneau.serializer.*;
027import org.apache.juneau.svl.*;
028
029/**
030 * Builder class for building instances of JSON serializers.
031 */
032public class JsonSerializerBuilder extends WriterSerializerBuilder {
033
034   /**
035    * Constructor, default settings.
036    */
037   public JsonSerializerBuilder() {
038      super();
039   }
040
041   /**
042    * Constructor.
043    *
044    * @param ps The initial configuration settings for this builder.
045    */
046   public JsonSerializerBuilder(PropertyStore ps) {
047      super(ps);
048   }
049
050   @Override /* ContextBuilder */
051   public JsonSerializer build() {
052      return build(JsonSerializer.class);
053   }
054
055   //-----------------------------------------------------------------------------------------------------------------
056   // Properties
057   //-----------------------------------------------------------------------------------------------------------------
058
059   /**
060    * <i><l>JsonSerializer</l> configuration property:&emsp;</i>  Prefix solidus <js>'/'</js> characters with escapes.
061    *
062    * <div class='warn'>
063    *    <b>Deprecated</b> - Use {@link #escapeSolidus()}
064    * </div>
065    */
066   @SuppressWarnings("javadoc")
067   @FluentSetter
068   @Deprecated
069   public JsonSerializerBuilder escapeSolidus(boolean value) {
070      return set(JSON_escapeSolidus, value);
071   }
072
073   /**
074    * <i><l>JsonSerializer</l> configuration property:&emsp;</i>  Prefix solidus <js>'/'</js> characters with escapes.
075    *
076    * <p>
077    * Shortcut for calling <code>escapeSolidus(<jk>true</jk>)</code>.
078    *
079    * <ul class='seealso'>
080    *    <li class='jf'>{@link JsonSerializer#JSON_escapeSolidus}
081    * </ul>
082    *
083    * @return This object (for method chaining).
084    */
085   @FluentSetter
086   public JsonSerializerBuilder escapeSolidus() {
087      return set(JSON_escapeSolidus, true);
088   }
089
090   /**
091    * <i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode.
092    *
093    * <div class='warn'>
094    *    <b>Deprecated</b> - Use {@link #simple()}
095    * </div>
096    */
097   @SuppressWarnings("javadoc")
098   @FluentSetter
099   @Deprecated
100   public JsonSerializerBuilder simple(boolean value) {
101      return set(JSON_simpleMode, value);
102   }
103
104   /**
105    * <i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode.
106    *
107    * <p>
108    * Shortcut for calling <code>simple(<jk>true</jk>)</code>.
109    *
110    * <ul class='seealso'>
111    *    <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
112    * </ul>
113    *
114    * @return This object (for method chaining).
115    */
116   @FluentSetter
117   public JsonSerializerBuilder simple() {
118      return simple(true);
119   }
120
121   /**
122    * <i><l>JsonSerializer</l> configuration property:&emsp;</i>  Simple JSON mode and single quote.
123    *
124    * <p>
125    * Shortcut for calling <c>simple().sq()</c>.
126    *
127    * <ul class='seealso'>
128    *    <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
129    *    <li class='jf'>{@link JsonSerializer#WSERIALIZER_quoteChar}
130    * </ul>
131    *
132    * @return This object (for method chaining).
133    */
134   @FluentSetter
135   public JsonSerializerBuilder ssq() {
136      return simple().sq();
137   }
138
139   // <FluentSetters>
140
141   @Override /* GENERATED - ContextBuilder */
142   public JsonSerializerBuilder add(Map<String,Object> properties) {
143      super.add(properties);
144      return this;
145   }
146
147   @Override /* GENERATED - ContextBuilder */
148   public JsonSerializerBuilder addTo(String name, Object value) {
149      super.addTo(name, value);
150      return this;
151   }
152
153   @Override /* GENERATED - ContextBuilder */
154   public JsonSerializerBuilder appendTo(String name, Object value) {
155      super.appendTo(name, value);
156      return this;
157   }
158
159   @Override /* GENERATED - ContextBuilder */
160   public JsonSerializerBuilder apply(PropertyStore copyFrom) {
161      super.apply(copyFrom);
162      return this;
163   }
164
165   @Override /* GENERATED - ContextBuilder */
166   public JsonSerializerBuilder applyAnnotations(java.lang.Class<?>...fromClasses) {
167      super.applyAnnotations(fromClasses);
168      return this;
169   }
170
171   @Override /* GENERATED - ContextBuilder */
172   public JsonSerializerBuilder applyAnnotations(Method...fromMethods) {
173      super.applyAnnotations(fromMethods);
174      return this;
175   }
176
177   @Override /* GENERATED - ContextBuilder */
178   public JsonSerializerBuilder applyAnnotations(AnnotationList al, VarResolverSession r) {
179      super.applyAnnotations(al, r);
180      return this;
181   }
182
183   @Override /* GENERATED - ContextBuilder */
184   public JsonSerializerBuilder debug() {
185      super.debug();
186      return this;
187   }
188
189   @Override /* GENERATED - ContextBuilder */
190   public JsonSerializerBuilder locale(Locale value) {
191      super.locale(value);
192      return this;
193   }
194
195   @Override /* GENERATED - ContextBuilder */
196   public JsonSerializerBuilder mediaType(MediaType value) {
197      super.mediaType(value);
198      return this;
199   }
200
201   @Override /* GENERATED - ContextBuilder */
202   public JsonSerializerBuilder prependTo(String name, Object value) {
203      super.prependTo(name, value);
204      return this;
205   }
206
207   @Override /* GENERATED - ContextBuilder */
208   public JsonSerializerBuilder putAllTo(String name, Object value) {
209      super.putAllTo(name, value);
210      return this;
211   }
212
213   @Override /* GENERATED - ContextBuilder */
214   public JsonSerializerBuilder putTo(String name, String key, Object value) {
215      super.putTo(name, key, value);
216      return this;
217   }
218
219   @Override /* GENERATED - ContextBuilder */
220   public JsonSerializerBuilder removeFrom(String name, Object value) {
221      super.removeFrom(name, value);
222      return this;
223   }
224
225   @Override /* GENERATED - ContextBuilder */
226   public JsonSerializerBuilder set(Map<String,Object> properties) {
227      super.set(properties);
228      return this;
229   }
230
231   @Override /* GENERATED - ContextBuilder */
232   public JsonSerializerBuilder set(String name, Object value) {
233      super.set(name, value);
234      return this;
235   }
236
237   @Override /* GENERATED - ContextBuilder */
238   public JsonSerializerBuilder timeZone(TimeZone value) {
239      super.timeZone(value);
240      return this;
241   }
242
243   @Override /* GENERATED - BeanContextBuilder */
244   public JsonSerializerBuilder annotations(Annotation...values) {
245      super.annotations(values);
246      return this;
247   }
248
249   @Override /* GENERATED - BeanContextBuilder */
250   public JsonSerializerBuilder beanClassVisibility(Visibility value) {
251      super.beanClassVisibility(value);
252      return this;
253   }
254
255   @Override /* GENERATED - BeanContextBuilder */
256   public JsonSerializerBuilder beanConstructorVisibility(Visibility value) {
257      super.beanConstructorVisibility(value);
258      return this;
259   }
260
261   @Override /* GENERATED - BeanContextBuilder */
262   public JsonSerializerBuilder beanFieldVisibility(Visibility value) {
263      super.beanFieldVisibility(value);
264      return this;
265   }
266
267   @Override /* GENERATED - BeanContextBuilder */
268   public JsonSerializerBuilder beanInterceptor(Class<?> on, Class<? extends org.apache.juneau.transform.BeanInterceptor<?>> value) {
269      super.beanInterceptor(on, value);
270      return this;
271   }
272
273   @Override /* GENERATED - BeanContextBuilder */
274   public JsonSerializerBuilder beanMapPutReturnsOldValue() {
275      super.beanMapPutReturnsOldValue();
276      return this;
277   }
278
279   @Override /* GENERATED - BeanContextBuilder */
280   public JsonSerializerBuilder beanMethodVisibility(Visibility value) {
281      super.beanMethodVisibility(value);
282      return this;
283   }
284
285   @Override /* GENERATED - BeanContextBuilder */
286   public JsonSerializerBuilder beansDontRequireSomeProperties() {
287      super.beansDontRequireSomeProperties();
288      return this;
289   }
290
291   @Override /* GENERATED - BeanContextBuilder */
292   public JsonSerializerBuilder beansRequireDefaultConstructor() {
293      super.beansRequireDefaultConstructor();
294      return this;
295   }
296
297   @Override /* GENERATED - BeanContextBuilder */
298   public JsonSerializerBuilder beansRequireSerializable() {
299      super.beansRequireSerializable();
300      return this;
301   }
302
303   @Override /* GENERATED - BeanContextBuilder */
304   public JsonSerializerBuilder beansRequireSettersForGetters() {
305      super.beansRequireSettersForGetters();
306      return this;
307   }
308
309   @Override /* GENERATED - BeanContextBuilder */
310   public JsonSerializerBuilder bpi(Map<String,Object> values) {
311      super.bpi(values);
312      return this;
313   }
314
315   @Override /* GENERATED - BeanContextBuilder */
316   public JsonSerializerBuilder bpi(Class<?> beanClass, String properties) {
317      super.bpi(beanClass, properties);
318      return this;
319   }
320
321   @Override /* GENERATED - BeanContextBuilder */
322   public JsonSerializerBuilder bpi(String beanClassName, String properties) {
323      super.bpi(beanClassName, properties);
324      return this;
325   }
326
327   @Override /* GENERATED - BeanContextBuilder */
328   public JsonSerializerBuilder bpro(Map<String,Object> values) {
329      super.bpro(values);
330      return this;
331   }
332
333   @Override /* GENERATED - BeanContextBuilder */
334   public JsonSerializerBuilder bpro(Class<?> beanClass, String properties) {
335      super.bpro(beanClass, properties);
336      return this;
337   }
338
339   @Override /* GENERATED - BeanContextBuilder */
340   public JsonSerializerBuilder bpro(String beanClassName, String properties) {
341      super.bpro(beanClassName, properties);
342      return this;
343   }
344
345   @Override /* GENERATED - BeanContextBuilder */
346   public JsonSerializerBuilder bpwo(Map<String,Object> values) {
347      super.bpwo(values);
348      return this;
349   }
350
351   @Override /* GENERATED - BeanContextBuilder */
352   public JsonSerializerBuilder bpwo(Class<?> beanClass, String properties) {
353      super.bpwo(beanClass, properties);
354      return this;
355   }
356
357   @Override /* GENERATED - BeanContextBuilder */
358   public JsonSerializerBuilder bpwo(String beanClassName, String properties) {
359      super.bpwo(beanClassName, properties);
360      return this;
361   }
362
363   @Override /* GENERATED - BeanContextBuilder */
364   public JsonSerializerBuilder bpx(Map<String,Object> values) {
365      super.bpx(values);
366      return this;
367   }
368
369   @Override /* GENERATED - BeanContextBuilder */
370   public JsonSerializerBuilder bpx(Class<?> beanClass, String properties) {
371      super.bpx(beanClass, properties);
372      return this;
373   }
374
375   @Override /* GENERATED - BeanContextBuilder */
376   public JsonSerializerBuilder bpx(String beanClassName, String properties) {
377      super.bpx(beanClassName, properties);
378      return this;
379   }
380
381   @Override /* GENERATED - BeanContextBuilder */
382   public JsonSerializerBuilder dictionary(Object...values) {
383      super.dictionary(values);
384      return this;
385   }
386
387   @Override /* GENERATED - BeanContextBuilder */
388   public JsonSerializerBuilder dictionaryOn(Class<?> on, java.lang.Class<?>...values) {
389      super.dictionaryOn(on, values);
390      return this;
391   }
392
393   @Override /* GENERATED - BeanContextBuilder */
394   public JsonSerializerBuilder dontIgnorePropertiesWithoutSetters() {
395      super.dontIgnorePropertiesWithoutSetters();
396      return this;
397   }
398
399   @Override /* GENERATED - BeanContextBuilder */
400   public JsonSerializerBuilder dontIgnoreTransientFields() {
401      super.dontIgnoreTransientFields();
402      return this;
403   }
404
405   @Override /* GENERATED - BeanContextBuilder */
406   public JsonSerializerBuilder dontIgnoreUnknownNullBeanProperties() {
407      super.dontIgnoreUnknownNullBeanProperties();
408      return this;
409   }
410
411   @Override /* GENERATED - BeanContextBuilder */
412   public JsonSerializerBuilder dontUseInterfaceProxies() {
413      super.dontUseInterfaceProxies();
414      return this;
415   }
416
417   @Override /* GENERATED - BeanContextBuilder */
418   public <T> JsonSerializerBuilder example(Class<T> pojoClass, T o) {
419      super.example(pojoClass, o);
420      return this;
421   }
422
423   @Override /* GENERATED - BeanContextBuilder */
424   public <T> JsonSerializerBuilder exampleJson(Class<T> pojoClass, String json) {
425      super.exampleJson(pojoClass, json);
426      return this;
427   }
428
429   @Override /* GENERATED - BeanContextBuilder */
430   public JsonSerializerBuilder fluentSetters() {
431      super.fluentSetters();
432      return this;
433   }
434
435   @Override /* GENERATED - BeanContextBuilder */
436   public JsonSerializerBuilder fluentSetters(Class<?> on) {
437      super.fluentSetters(on);
438      return this;
439   }
440
441   @Override /* GENERATED - BeanContextBuilder */
442   public JsonSerializerBuilder ignoreInvocationExceptionsOnGetters() {
443      super.ignoreInvocationExceptionsOnGetters();
444      return this;
445   }
446
447   @Override /* GENERATED - BeanContextBuilder */
448   public JsonSerializerBuilder ignoreInvocationExceptionsOnSetters() {
449      super.ignoreInvocationExceptionsOnSetters();
450      return this;
451   }
452
453   @Override /* GENERATED - BeanContextBuilder */
454   public JsonSerializerBuilder ignoreUnknownBeanProperties() {
455      super.ignoreUnknownBeanProperties();
456      return this;
457   }
458
459   @Override /* GENERATED - BeanContextBuilder */
460   public JsonSerializerBuilder implClass(Class<?> interfaceClass, Class<?> implClass) {
461      super.implClass(interfaceClass, implClass);
462      return this;
463   }
464
465   @Override /* GENERATED - BeanContextBuilder */
466   public JsonSerializerBuilder implClasses(Map<Class<?>,Class<?>> values) {
467      super.implClasses(values);
468      return this;
469   }
470
471   @Override /* GENERATED - BeanContextBuilder */
472   public JsonSerializerBuilder interfaceClass(Class<?> on, Class<?> value) {
473      super.interfaceClass(on, value);
474      return this;
475   }
476
477   @Override /* GENERATED - BeanContextBuilder */
478   public JsonSerializerBuilder interfaces(java.lang.Class<?>...value) {
479      super.interfaces(value);
480      return this;
481   }
482
483   @Override /* GENERATED - BeanContextBuilder */
484   public JsonSerializerBuilder notBeanClasses(Object...values) {
485      super.notBeanClasses(values);
486      return this;
487   }
488
489   @Override /* GENERATED - BeanContextBuilder */
490   public JsonSerializerBuilder notBeanPackages(Object...values) {
491      super.notBeanPackages(values);
492      return this;
493   }
494
495   @Override /* GENERATED - BeanContextBuilder */
496   public JsonSerializerBuilder propertyNamer(Class<? extends org.apache.juneau.PropertyNamer> value) {
497      super.propertyNamer(value);
498      return this;
499   }
500
501   @Override /* GENERATED - BeanContextBuilder */
502   public JsonSerializerBuilder propertyNamer(Class<?> on, Class<? extends org.apache.juneau.PropertyNamer> value) {
503      super.propertyNamer(on, value);
504      return this;
505   }
506
507   @Override /* GENERATED - BeanContextBuilder */
508   public JsonSerializerBuilder sortProperties() {
509      super.sortProperties();
510      return this;
511   }
512
513   @Override /* GENERATED - BeanContextBuilder */
514   public JsonSerializerBuilder sortProperties(java.lang.Class<?>...on) {
515      super.sortProperties(on);
516      return this;
517   }
518
519   @Override /* GENERATED - BeanContextBuilder */
520   public JsonSerializerBuilder stopClass(Class<?> on, Class<?> value) {
521      super.stopClass(on, value);
522      return this;
523   }
524
525   @Override /* GENERATED - BeanContextBuilder */
526   public JsonSerializerBuilder swaps(Object...values) {
527      super.swaps(values);
528      return this;
529   }
530
531   @Override /* GENERATED - BeanContextBuilder */
532   public JsonSerializerBuilder typeName(Class<?> on, String value) {
533      super.typeName(on, value);
534      return this;
535   }
536
537   @Override /* GENERATED - BeanContextBuilder */
538   public JsonSerializerBuilder typePropertyName(String value) {
539      super.typePropertyName(value);
540      return this;
541   }
542
543   @Override /* GENERATED - BeanContextBuilder */
544   public JsonSerializerBuilder typePropertyName(Class<?> on, String value) {
545      super.typePropertyName(on, value);
546      return this;
547   }
548
549   @Override /* GENERATED - BeanContextBuilder */
550   public JsonSerializerBuilder useEnumNames() {
551      super.useEnumNames();
552      return this;
553   }
554
555   @Override /* GENERATED - BeanContextBuilder */
556   public JsonSerializerBuilder useJavaBeanIntrospector() {
557      super.useJavaBeanIntrospector();
558      return this;
559   }
560
561   @Override /* GENERATED - BeanTraverseBuilder */
562   public JsonSerializerBuilder detectRecursions() {
563      super.detectRecursions();
564      return this;
565   }
566
567   @Override /* GENERATED - BeanTraverseBuilder */
568   public JsonSerializerBuilder ignoreRecursions() {
569      super.ignoreRecursions();
570      return this;
571   }
572
573   @Override /* GENERATED - BeanTraverseBuilder */
574   public JsonSerializerBuilder initialDepth(int value) {
575      super.initialDepth(value);
576      return this;
577   }
578
579   @Override /* GENERATED - BeanTraverseBuilder */
580   public JsonSerializerBuilder maxDepth(int value) {
581      super.maxDepth(value);
582      return this;
583   }
584
585   @Override /* GENERATED - SerializerBuilder */
586   public JsonSerializerBuilder addBeanTypes() {
587      super.addBeanTypes();
588      return this;
589   }
590
591   @Override /* GENERATED - SerializerBuilder */
592   public JsonSerializerBuilder addRootType() {
593      super.addRootType();
594      return this;
595   }
596
597   @Override /* GENERATED - SerializerBuilder */
598   public JsonSerializerBuilder keepNullProperties() {
599      super.keepNullProperties();
600      return this;
601   }
602
603   @Override /* GENERATED - SerializerBuilder */
604   public JsonSerializerBuilder listener(Class<? extends org.apache.juneau.serializer.SerializerListener> value) {
605      super.listener(value);
606      return this;
607   }
608
609   @Override /* GENERATED - SerializerBuilder */
610   public JsonSerializerBuilder sortCollections() {
611      super.sortCollections();
612      return this;
613   }
614
615   @Override /* GENERATED - SerializerBuilder */
616   public JsonSerializerBuilder sortMaps() {
617      super.sortMaps();
618      return this;
619   }
620
621   @Override /* GENERATED - SerializerBuilder */
622   public JsonSerializerBuilder trimEmptyCollections() {
623      super.trimEmptyCollections();
624      return this;
625   }
626
627   @Override /* GENERATED - SerializerBuilder */
628   public JsonSerializerBuilder trimEmptyMaps() {
629      super.trimEmptyMaps();
630      return this;
631   }
632
633   @Override /* GENERATED - SerializerBuilder */
634   public JsonSerializerBuilder trimStrings() {
635      super.trimStrings();
636      return this;
637   }
638
639   @Override /* GENERATED - SerializerBuilder */
640   public JsonSerializerBuilder uriContext(UriContext value) {
641      super.uriContext(value);
642      return this;
643   }
644
645   @Override /* GENERATED - SerializerBuilder */
646   public JsonSerializerBuilder uriRelativity(UriRelativity value) {
647      super.uriRelativity(value);
648      return this;
649   }
650
651   @Override /* GENERATED - SerializerBuilder */
652   public JsonSerializerBuilder uriResolution(UriResolution value) {
653      super.uriResolution(value);
654      return this;
655   }
656
657   @Override /* GENERATED - WriterSerializerBuilder */
658   public JsonSerializerBuilder fileCharset(Charset value) {
659      super.fileCharset(value);
660      return this;
661   }
662
663   @Override /* GENERATED - WriterSerializerBuilder */
664   public JsonSerializerBuilder maxIndent(int value) {
665      super.maxIndent(value);
666      return this;
667   }
668
669   @Override /* GENERATED - WriterSerializerBuilder */
670   public JsonSerializerBuilder quoteChar(char value) {
671      super.quoteChar(value);
672      return this;
673   }
674
675   @Override /* GENERATED - WriterSerializerBuilder */
676   public JsonSerializerBuilder sq() {
677      super.sq();
678      return this;
679   }
680
681   @Override /* GENERATED - WriterSerializerBuilder */
682   public JsonSerializerBuilder streamCharset(Charset value) {
683      super.streamCharset(value);
684      return this;
685   }
686
687   @Override /* GENERATED - WriterSerializerBuilder */
688   public JsonSerializerBuilder useWhitespace() {
689      super.useWhitespace();
690      return this;
691   }
692
693   @Override /* GENERATED - WriterSerializerBuilder */
694   public JsonSerializerBuilder ws() {
695      super.ws();
696      return this;
697   }
698
699   // </FluentSetters>
700}