blob: 636bd1aa495df1a3a45cad39955329a345899134 [file] [log] [blame]
// ***************************************************************************************************************************
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
// * with the License. You may obtain a copy of the License at *
// * *
// * http://www.apache.org/licenses/LICENSE-2.0 *
// * *
// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
// * specific language governing permissions and limitations under the License. *
// ***************************************************************************************************************************
package org.apache.juneau.json;
import static org.apache.juneau.json.JsonSerializer.*;
import java.nio.charset.*;
import java.util.*;
import org.apache.juneau.*;
import org.apache.juneau.http.*;
import org.apache.juneau.reflect.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.svl.*;
/**
* Builder class for building instances of JSON serializers.
*/
public class JsonSerializerBuilder extends WriterSerializerBuilder {
/**
* Constructor, default settings.
*/
public JsonSerializerBuilder() {
super();
}
/**
* Constructor.
*
* @param ps The initial configuration settings for this builder.
*/
public JsonSerializerBuilder(PropertyStore ps) {
super(ps);
}
@Override /* ContextBuilder */
public JsonSerializer build() {
return build(JsonSerializer.class);
}
//-----------------------------------------------------------------------------------------------------------------
// Properties
//-----------------------------------------------------------------------------------------------------------------
/**
* Configuration property: Prefix solidus <js>'/'</js> characters with escapes.
*
* <p>
* If <jk>true</jk>, solidus (e.g. slash) characters should be escaped.
*
* <ul class='seealso'>
* <li class='jf'>{@link JsonSerializer#JSON_escapeSolidus}
* </ul>
*
* @param value
* The new value for this property.
* <br>The default is <jk>false</jk>.
* @return This object (for method chaining).
*/
public JsonSerializerBuilder escapeSolidus(boolean value) {
return set(JSON_escapeSolidus, value);
}
/**
* Configuration property: Prefix solidus <js>'/'</js> characters with escapes.
*
* <p>
* Shortcut for calling <code>escapeSolidus(<jk>true</jk>)</code>.
*
* <ul class='seealso'>
* <li class='jf'>{@link JsonSerializer#JSON_escapeSolidus}
* </ul>
*
* @return This object (for method chaining).
*/
public JsonSerializerBuilder escapeSolidus() {
return set(JSON_escapeSolidus, true);
}
/**
* Configuration property: Simple JSON mode.
*
* <p>
* If <jk>true</jk>, JSON attribute names will only be quoted when necessary.
* <br>Otherwise, they are always quoted.
*
* <ul class='seealso'>
* <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
* </ul>
*
* @param value
* The new value for this property.
* <br>The default is <jk>false</jk>.
* @return This object (for method chaining).
*/
public JsonSerializerBuilder simple(boolean value) {
return set(JSON_simpleMode, value);
}
/**
* Configuration property: Simple JSON mode.
*
* <p>
* Shortcut for calling <code>simple(<jk>true</jk>)</code>.
*
* <ul class='seealso'>
* <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
* </ul>
*
* @return This object (for method chaining).
*/
public JsonSerializerBuilder simple() {
return simple(true);
}
/**
* Configuration property: Simple JSON mode and single quote.
*
* <p>
* Shortcut for calling <c>simple().sq()</c>.
*
* <ul class='seealso'>
* <li class='jf'>{@link JsonSerializer#JSON_simpleMode}
* <li class='jf'>{@link JsonSerializer#WSERIALIZER_quoteChar}
* </ul>
*
* @return This object (for method chaining).
*/
public JsonSerializerBuilder ssq() {
return simple().sq();
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder fileCharset(Charset value) {
super.fileCharset(value);
return this;
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder maxIndent(int value) {
super.maxIndent(value);
return this;
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder quoteChar(char value) {
super.quoteChar(value);
return this;
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder sq() {
super.sq();
return this;
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder streamCharset(Charset value) {
super.streamCharset(value);
return this;
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder useWhitespace(boolean value) {
super.useWhitespace(value);
return this;
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder useWhitespace() {
super.useWhitespace();
return this;
}
@Override /* WriterSerializerBuilder */
public JsonSerializerBuilder ws() {
super.ws();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder addBeanTypes(boolean value) {
super.addBeanTypes(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder addBeanTypes() {
super.addBeanTypes();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder addRootType(boolean value) {
super.addRootType(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder addRootType() {
super.addRootType();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder detectRecursions(boolean value) {
super.detectRecursions(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder detectRecursions() {
super.detectRecursions();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder ignoreRecursions(boolean value) {
super.ignoreRecursions(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder ignoreRecursions() {
super.ignoreRecursions();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder initialDepth(int value) {
super.initialDepth(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder listener(Class<? extends SerializerListener> value) {
super.listener(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder maxDepth(int value) {
super.maxDepth(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder sortCollections(boolean value) {
super.sortCollections(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder sortCollections() {
super.sortCollections();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder sortMaps(boolean value) {
super.sortMaps(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder sortMaps() {
super.sortMaps();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder trimEmptyCollections(boolean value) {
super.trimEmptyCollections(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder trimEmptyCollections() {
super.trimEmptyCollections();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder trimEmptyMaps(boolean value) {
super.trimEmptyMaps(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder trimEmptyMaps() {
super.trimEmptyMaps();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder trimNullProperties(boolean value) {
super.trimNullProperties(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder trimStrings(boolean value) {
super.trimStrings(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder trimStrings() {
super.trimStrings();
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder uriContext(UriContext value) {
super.uriContext(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder uriRelativity(UriRelativity value) {
super.uriRelativity(value);
return this;
}
@Override /* SerializerBuilder */
public JsonSerializerBuilder uriResolution(UriResolution value) {
super.uriResolution(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanClassVisibility(Visibility value) {
super.beanClassVisibility(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanConstructorVisibility(Visibility value) {
super.beanConstructorVisibility(value);
return this;
}
@Override /* BeanContextBuilder */
@Deprecated
public JsonSerializerBuilder beanDictionary(Class<?>...values) {
super.beanDictionary(values);
return this;
}
@Override /* BeanContextBuilder */
@Deprecated
public JsonSerializerBuilder beanDictionary(Object...values) {
super.beanDictionary(values);
return this;
}
@Override /* BeanContextBuilder */
@Deprecated
public JsonSerializerBuilder beanDictionaryReplace(Class<?>...values) {
super.beanDictionaryReplace(values);
return this;
}
@Override /* BeanContextBuilder */
@Deprecated
public JsonSerializerBuilder beanDictionaryReplace(Object...values) {
super.beanDictionaryReplace(values);
return this;
}
@Override /* BeanContextBuilder */
@Deprecated
public JsonSerializerBuilder beanDictionaryRemove(Class<?>...values) {
super.beanDictionaryRemove(values);
return this;
}
@Override /* BeanContextBuilder */
@Deprecated
public JsonSerializerBuilder beanDictionaryRemove(Object...values) {
super.beanDictionaryRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanFieldVisibility(Visibility value) {
super.beanFieldVisibility(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanFilters(Class<?>...values) {
super.beanFilters(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanFilters(Object...values) {
super.beanFilters(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanFiltersReplace(Class<?>...values) {
super.beanFiltersReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanFiltersReplace(Object...values) {
super.beanFiltersReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanFiltersRemove(Class<?>...values) {
super.beanFiltersRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanFiltersRemove(Object...values) {
super.beanFiltersRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanMapPutReturnsOldValue(boolean value) {
super.beanMapPutReturnsOldValue(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanMapPutReturnsOldValue() {
super.beanMapPutReturnsOldValue();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanMethodVisibility(Visibility value) {
super.beanMethodVisibility(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beansRequireDefaultConstructor(boolean value) {
super.beansRequireDefaultConstructor(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beansRequireDefaultConstructor() {
super.beansRequireDefaultConstructor();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beansRequireSerializable(boolean value) {
super.beansRequireSerializable(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beansRequireSerializable() {
super.beansRequireSerializable();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beansRequireSettersForGetters(boolean value) {
super.beansRequireSettersForGetters(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beansRequireSettersForGetters() {
super.beansRequireSettersForGetters();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beansRequireSomeProperties(boolean value) {
super.beansRequireSomeProperties(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder beanTypePropertyName(String value) {
super.beanTypePropertyName(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder debug() {
super.debug();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder dictionary(Class<?>...values) {
super.dictionary(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder dictionary(Object...values) {
super.dictionary(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder dictionaryReplace(Class<?>...values) {
super.dictionaryReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder dictionaryReplace(Object...values) {
super.dictionaryReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder dictionaryRemove(Class<?>...values) {
super.dictionaryRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder dictionaryRemove(Object...values) {
super.dictionaryRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public <T> JsonSerializerBuilder example(Class<T> c, T o) {
super.example(c, o);
return this;
}
@Override /* BeanContextBuilder */
public <T> JsonSerializerBuilder exampleJson(Class<T> c, String value) {
super.exampleJson(c, value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignoreInvocationExceptionsOnGetters(boolean value) {
super.ignoreInvocationExceptionsOnGetters(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignoreInvocationExceptionsOnGetters() {
super.ignoreInvocationExceptionsOnGetters();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignoreInvocationExceptionsOnSetters(boolean value) {
super.ignoreInvocationExceptionsOnSetters(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignoreInvocationExceptionsOnSetters() {
super.ignoreInvocationExceptionsOnSetters();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignorePropertiesWithoutSetters(boolean value) {
super.ignorePropertiesWithoutSetters(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignoreUnknownBeanProperties(boolean value) {
super.ignoreUnknownBeanProperties(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignoreUnknownBeanProperties() {
super.ignoreUnknownBeanProperties();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder ignoreUnknownNullBeanProperties(boolean value) {
super.ignoreUnknownNullBeanProperties(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder implClass(Class<?> interfaceClass, Class<?> implClass) {
super.implClass(interfaceClass, implClass);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder implClasses(Map<String,Class<?>> values) {
super.implClasses(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder locale(Locale value) {
super.locale(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder mediaType(MediaType value) {
super.mediaType(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanClasses(Class<?>...values) {
super.notBeanClasses(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanClasses(Object...values) {
super.notBeanClasses(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanClassesReplace(Class<?>...values) {
super.notBeanClassesReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanClassesReplace(Object...values) {
super.notBeanClassesReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanClassesRemove(Class<?>...values) {
super.notBeanClassesRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanClassesRemove(Object...values) {
super.notBeanClassesRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanPackages(Object...values) {
super.notBeanPackages(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanPackages(String...values) {
super.notBeanPackages(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanPackagesReplace(String...values) {
super.notBeanPackagesReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanPackagesReplace(Object...values) {
super.notBeanPackagesReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanPackagesRemove(String...values) {
super.notBeanPackagesRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder notBeanPackagesRemove(Object...values) {
super.notBeanPackagesRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder pojoSwaps(Class<?>...values) {
super.pojoSwaps(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder pojoSwaps(Object...values) {
super.pojoSwaps(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder pojoSwapsReplace(Class<?>...values) {
super.pojoSwapsReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder pojoSwapsReplace(Object...values) {
super.pojoSwapsReplace(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder pojoSwapsRemove(Class<?>...values) {
super.pojoSwapsRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder pojoSwapsRemove(Object...values) {
super.pojoSwapsRemove(values);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder sortProperties(boolean value) {
super.sortProperties(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder sortProperties() {
super.sortProperties();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder timeZone(TimeZone value) {
super.timeZone(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder useEnumNames(boolean value) {
super.useEnumNames(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder useEnumNames() {
super.useEnumNames();
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder useInterfaceProxies(boolean value) {
super.useInterfaceProxies(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder useJavaBeanIntrospector(boolean value) {
super.useJavaBeanIntrospector(value);
return this;
}
@Override /* BeanContextBuilder */
public JsonSerializerBuilder useJavaBeanIntrospector() {
super.useJavaBeanIntrospector();
return this;
}
@Override /* ContextBuilder */
public JsonSerializerBuilder set(String name, Object value) {
super.set(name, value);
return this;
}
@Override /* ContextBuilder */
public JsonSerializerBuilder set(Map<String,Object> properties) {
super.set(properties);
return this;
}
@Override /* ContextBuilder */
public JsonSerializerBuilder add(Map<String,Object> properties) {
super.add(properties);
return this;
}
@Override /* ContextBuilder */
public JsonSerializerBuilder addTo(String name, Object value) {
super.addTo(name, value);
return this;
}
@Override /* ContextBuilder */
public JsonSerializerBuilder addTo(String name, String key, Object value) {
super.addTo(name, key, value);
return this;
}
@Override /* ContextBuilder */
public JsonSerializerBuilder removeFrom(String name, Object value) {
super.removeFrom(name, value);
return this;
}
@Override /* ContextBuilder */
public JsonSerializerBuilder apply(PropertyStore copyFrom) {
super.apply(copyFrom);
return this;
}
@Override
public JsonSerializerBuilder applyAnnotations(AnnotationList al, VarResolverSession vrs) {
super.applyAnnotations(al, vrs);
return this;
}
}