public class OutputStreamSerializerBuilder extends SerializerBuilder
psb
Constructor and Description |
---|
OutputStreamSerializerBuilder()
Constructor, default settings.
|
OutputStreamSerializerBuilder(PropertyStore ps)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
OutputStreamSerializerBuilder |
add(Map<String,Object> properties)
Adds multiple configuration properties on this object.
|
OutputStreamSerializerBuilder |
addTo(String name,
Object value)
Adds a value to a SET or LIST property.
|
OutputStreamSerializerBuilder |
addTo(String name,
String key,
Object value)
Adds or overwrites a value to a SET, LIST, or MAP property.
|
OutputStreamSerializerBuilder |
apply(PropertyStore copyFrom)
Copies the settings from the specified property store into this builder.
|
OutputStreamSerializerBuilder |
beanClassVisibility(Visibility value)
Configuration property: Minimum bean class visibility.
|
OutputStreamSerializerBuilder |
beanConstructorVisibility(Visibility value)
Configuration property: Minimum bean constructor visibility.
|
OutputStreamSerializerBuilder |
beanDictionary(boolean append,
Object... values)
Configuration property: Bean dictionary.
|
OutputStreamSerializerBuilder |
beanDictionary(Class<?>... values)
Configuration property: Bean dictionary.
|
OutputStreamSerializerBuilder |
beanDictionary(Object... values)
Configuration property: Bean dictionary.
|
OutputStreamSerializerBuilder |
beanDictionaryRemove(Object... values)
Configuration property: Bean dictionary.
|
OutputStreamSerializerBuilder |
beanFieldVisibility(Visibility value)
Configuration property: Minimum bean field visibility.
|
OutputStreamSerializerBuilder |
beanFilters(boolean append,
Object... values)
Configuration property: Bean filters.
|
OutputStreamSerializerBuilder |
beanFilters(Class<?>... values)
Configuration property: Bean filters.
|
OutputStreamSerializerBuilder |
beanFilters(Object... values)
Configuration property: Bean filters.
|
OutputStreamSerializerBuilder |
beanFiltersRemove(Object... values)
Configuration property: Bean filters.
|
OutputStreamSerializerBuilder |
beanMapPutReturnsOldValue()
Configuration property: BeanMap.put() returns old property value.
|
OutputStreamSerializerBuilder |
beanMapPutReturnsOldValue(boolean value)
Configuration property: BeanMap.put() returns old property value.
|
OutputStreamSerializerBuilder |
beanMethodVisibility(Visibility value)
Configuration property: Minimum bean method visibility.
|
OutputStreamSerializerBuilder |
beansRequireDefaultConstructor()
Configuration property: Beans require no-arg constructors.
|
OutputStreamSerializerBuilder |
beansRequireDefaultConstructor(boolean value)
Configuration property: Beans require no-arg constructors.
|
OutputStreamSerializerBuilder |
beansRequireSerializable()
Configuration property: Beans require Serializable interface.
|
OutputStreamSerializerBuilder |
beansRequireSerializable(boolean value)
Configuration property: Beans require Serializable interface.
|
OutputStreamSerializerBuilder |
beansRequireSettersForGetters()
Configuration property: Beans require setters for getters.
|
OutputStreamSerializerBuilder |
beansRequireSettersForGetters(boolean value)
Configuration property: Beans require setters for getters.
|
OutputStreamSerializerBuilder |
beansRequireSomeProperties(boolean value)
Configuration property: Beans require at least one property.
|
OutputStreamSerializerBuilder |
beanTypePropertyName(String value)
Configuration property: Bean type property name.
|
OutputStreamSerializerBuilder |
binaryFormat(BinaryFormat value)
Configuration property: Binary output format.
|
OutputStreamSerializer |
build()
Build the object.
|
OutputStreamSerializerBuilder |
debug()
Configuration property: Debug mode.
|
<T> OutputStreamSerializerBuilder |
example(Class<T> c,
T o)
Configuration property: POJO example.
|
OutputStreamSerializerBuilder |
ignoreInvocationExceptionsOnGetters()
Configuration property: Ignore invocation errors on getters.
|
OutputStreamSerializerBuilder |
ignoreInvocationExceptionsOnGetters(boolean value)
Configuration property: Ignore invocation errors on getters.
|
OutputStreamSerializerBuilder |
ignoreInvocationExceptionsOnSetters()
Configuration property: Ignore invocation errors on setters.
|
OutputStreamSerializerBuilder |
ignoreInvocationExceptionsOnSetters(boolean value)
Configuration property: Ignore invocation errors on setters.
|
OutputStreamSerializerBuilder |
ignorePropertiesWithoutSetters(boolean value)
Configuration property: Ignore properties without setters.
|
OutputStreamSerializerBuilder |
ignoreUnknownBeanProperties()
Configuration property: Ignore unknown properties.
|
OutputStreamSerializerBuilder |
ignoreUnknownBeanProperties(boolean value)
Configuration property: Ignore unknown properties.
|
OutputStreamSerializerBuilder |
ignoreUnknownNullBeanProperties(boolean value)
Configuration property: Ignore unknown properties with null values.
|
<T> OutputStreamSerializerBuilder |
implClass(Class<T> interfaceClass,
Class<? extends T> implClass)
Configuration property: Implementation classes.
|
OutputStreamSerializerBuilder |
implClasses(Map<String,Class<?>> values)
Configuration property: Implementation classes.
|
OutputStreamSerializerBuilder |
locale(Locale value)
Configuration property: Locale.
|
OutputStreamSerializerBuilder |
mediaType(MediaType value)
Configuration property: Media type.
|
OutputStreamSerializerBuilder |
notBeanClasses(boolean append,
Object... values)
Configuration property: Bean class exclusions.
|
OutputStreamSerializerBuilder |
notBeanClasses(Class<?>... values)
Configuration property: Bean class exclusions.
|
OutputStreamSerializerBuilder |
notBeanClasses(Object... values)
Configuration property: Bean class exclusions.
|
OutputStreamSerializerBuilder |
notBeanClassesRemove(Object... values)
Configuration property: Bean class exclusions.
|
OutputStreamSerializerBuilder |
notBeanPackages(boolean append,
Object... values)
Configuration property: Bean package exclusions.
|
OutputStreamSerializerBuilder |
notBeanPackages(Object... values)
Configuration property: Bean package exclusions.
|
OutputStreamSerializerBuilder |
notBeanPackages(String... values)
Configuration property: Bean package exclusions.
|
OutputStreamSerializerBuilder |
notBeanPackagesRemove(Object... values)
Configuration property: Bean package exclusions.
|
OutputStreamSerializerBuilder |
pojoSwaps(boolean append,
Object... values)
Configuration property: POJO swaps.
|
OutputStreamSerializerBuilder |
pojoSwaps(Class<?>... values)
Configuration property: POJO swaps.
|
OutputStreamSerializerBuilder |
pojoSwaps(Object... values)
Configuration property: POJO swaps.
|
OutputStreamSerializerBuilder |
pojoSwapsRemove(Object... values)
Configuration property: POJO swaps.
|
OutputStreamSerializerBuilder |
removeFrom(String name,
Object value)
Removes a value from a SET, LIST, or MAP property.
|
OutputStreamSerializerBuilder |
set(boolean append,
String name,
Object value)
Sets or adds to a SET or LIST property.
|
OutputStreamSerializerBuilder |
set(Map<String,Object> properties)
Sets multiple configuration properties on this object.
|
OutputStreamSerializerBuilder |
set(String name,
Object value)
Sets a configuration property on this object.
|
OutputStreamSerializerBuilder |
sortProperties()
Configuration property: Sort bean properties.
|
OutputStreamSerializerBuilder |
sortProperties(boolean value)
Configuration property: Sort bean properties.
|
OutputStreamSerializerBuilder |
timeZone(TimeZone value)
Configuration property: TimeZone.
|
OutputStreamSerializerBuilder |
useEnumNames()
Configuration property: Use enum names.
|
OutputStreamSerializerBuilder |
useInterfaceProxies(boolean value)
Configuration property: Use interface proxies.
|
OutputStreamSerializerBuilder |
useJavaBeanIntrospector()
Configuration property: Use Java Introspector.
|
OutputStreamSerializerBuilder |
useJavaBeanIntrospector(boolean value)
Configuration property: Use Java Introspector.
|
abridged, abridged, addBeanTypeProperties, addBeanTypes, addBeanTypes, addRootType, addRootType, detectRecursions, detectRecursions, ignoreRecursions, ignoreRecursions, initialDepth, listener, maxDepth, maxIndent, quoteChar, sortCollections, sortCollections, sortMaps, sortMaps, sq, trimEmptyCollections, trimEmptyCollections, trimEmptyMaps, trimEmptyMaps, trimNullProperties, trimStrings, trimStrings, uriContext, uriContext, uriRelativity, uriRelativity, uriResolution, uriResolution, useWhitespace, useWhitespace, ws
debug, excludeProperties, excludeProperties, excludeProperties, fluentSetters, fluentSetters, includeProperties, includeProperties, includeProperties, propertyNamer
build, getPropertyStore, getPropertyStoreBuilder
public OutputStreamSerializerBuilder()
public OutputStreamSerializerBuilder(PropertyStore ps)
ps
- The initial configuration settings for this builder.public OutputStreamSerializerBuilder binaryFormat(BinaryFormat value)
When using the Serializer.serializeToString(Object)
method on stream-based serializers, this defines the format to use
when converting the resulting byte array to a string.
value
- The new value for this property.
BinaryFormat.HEX
.public OutputStreamSerializerBuilder beanClassVisibility(Visibility value)
BeanContextBuilder
Classes are not considered beans unless they meet the minimum visibility requirements.
For example, if the visibility is PUBLIC
and the bean class is
beanClassVisibility
in class SerializerBuilder
value
- The new value for this property.
Visibility.PUBLIC
.public OutputStreamSerializerBuilder beanConstructorVisibility(Visibility value)
BeanContextBuilder
Only look for constructors with the specified minimum visibility.
beanConstructorVisibility
in class SerializerBuilder
value
- The new value for this property.
Visibility.PUBLIC
.public OutputStreamSerializerBuilder beanDictionary(boolean append, Object... values)
BeanContextBuilder
Same as BeanContextBuilder.beanDictionary(Object...)
but allows you to optionally overwrite the previous value.
beanDictionary
in class SerializerBuilder
append
- If values
- The new values for this property.public OutputStreamSerializerBuilder beanDictionary(Class<?>... values)
BeanContextBuilder
Same as BeanContextBuilder.beanDictionary(Object...)
but takes in an array of classes.
beanDictionary
in class SerializerBuilder
values
- The values to add to this property.public OutputStreamSerializerBuilder beanDictionary(Object... values)
BeanContextBuilder
Adds to the list of classes that make up the bean dictionary in this bean context.
beanDictionary
in class SerializerBuilder
values
- The values to add to this property.public OutputStreamSerializerBuilder beanDictionaryRemove(Object... values)
BeanContextBuilder
Removes from the list of classes that make up the bean dictionary in this bean context.
beanDictionaryRemove
in class SerializerBuilder
values
- The values to remove from this property.public OutputStreamSerializerBuilder beanFieldVisibility(Visibility value)
BeanContextBuilder
Only look for bean fields with the specified minimum visibility.
beanFieldVisibility
in class SerializerBuilder
value
- The new value for this property.
Visibility.PUBLIC
.public OutputStreamSerializerBuilder beanFilters(boolean append, Object... values)
BeanContextBuilder
Same as BeanContextBuilder.beanFilters(Object...)
but allows you to optionally overwrite the previous value.
beanFilters
in class SerializerBuilder
append
- If values
- The new values for this property.
@Bean(typeName)
.
BeanDictionaryList
containing a collection of bean classes with type name annotations.
BeanDictionaryMap
containing a mapping of type names to classes without type name annotations.
public OutputStreamSerializerBuilder beanFilters(Class<?>... values)
BeanContextBuilder
Same as BeanContextBuilder.beanFilters(Object...)
but takes in an array of classes.
beanFilters
in class SerializerBuilder
values
- The values to add to this property.public OutputStreamSerializerBuilder beanFilters(Object... values)
BeanContextBuilder
This is a programmatic equivalent to the @Bean
annotation.
It's useful when you want to use the Bean annotation functionality, but you don't have the ability to alter
the bean classes.
beanFilters
in class SerializerBuilder
values
- The values to add to this property.
@Bean(typeName)
.
BeanDictionaryList
containing a collection of bean classes with type name annotations.
BeanDictionaryMap
containing a mapping of type names to classes without type name annotations.
public OutputStreamSerializerBuilder beanFiltersRemove(Object... values)
BeanContextBuilder
Removes from the list of classes that make up the bean filters in this bean context.
beanFiltersRemove
in class SerializerBuilder
values
- The values to remove from this property.
@Bean(typeName)
.
BeanDictionaryList
containing a collection of bean classes with type name annotations.
BeanDictionaryMap
containing a mapping of type names to classes without type name annotations.
public OutputStreamSerializerBuilder beanMapPutReturnsOldValue(boolean value)
BeanContextBuilder
If BeanMap.put()
method will return old property
values.
Otherwise, it returns
beanMapPutReturnsOldValue
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder beanMapPutReturnsOldValue()
BeanContextBuilder
Shortcut for calling beanMapPutReturnsOldValue(
.
beanMapPutReturnsOldValue
in class SerializerBuilder
public OutputStreamSerializerBuilder beanMethodVisibility(Visibility value)
BeanContextBuilder
Only look for bean methods with the specified minimum visibility.
beanMethodVisibility
in class SerializerBuilder
value
- The new value for this property.
Visibility.PUBLIC
public OutputStreamSerializerBuilder beansRequireDefaultConstructor(boolean value)
BeanContextBuilder
If
Otherwise, the bean will be serialized as a string using the Object.toString()
method.
beansRequireDefaultConstructor
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder beansRequireDefaultConstructor()
BeanContextBuilder
Shortcut for calling beansRequireDefaultConstructor(
.
beansRequireDefaultConstructor
in class SerializerBuilder
public OutputStreamSerializerBuilder beansRequireSerializable(boolean value)
BeanContextBuilder
If Serializable
interface to be considered a bean.
Otherwise, the bean will be serialized as a string using the Object.toString()
method.
beansRequireSerializable
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder beansRequireSerializable()
BeanContextBuilder
Shortcut for calling beansRequireSerializable(
.
beansRequireSerializable
in class SerializerBuilder
public OutputStreamSerializerBuilder beansRequireSettersForGetters(boolean value)
BeanContextBuilder
If
Otherwise, they will be ignored.
beansRequireSettersForGetters
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder beansRequireSettersForGetters()
BeanContextBuilder
Shortcut for calling beansRequireSettersForGetters(
.
beansRequireSettersForGetters
in class SerializerBuilder
public OutputStreamSerializerBuilder beansRequireSomeProperties(boolean value)
BeanContextBuilder
If
Otherwise, the bean will be serialized as a string using the Object.toString()
method.
beansRequireSomeProperties
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder beanTypePropertyName(String value)
BeanContextBuilder
This specifies the name of the bean property used to store the dictionary name of a bean type so that the parser knows the data type to reconstruct.
beanTypePropertyName
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder debug()
BeanContextBuilder
Shortcut for calling debug(
.
debug
in class SerializerBuilder
public <T> OutputStreamSerializerBuilder example(Class<T> c, T o)
BeanContextBuilder
Specifies an example of the specified class.
example
in class SerializerBuilder
c
- The POJO class.o
- An instance of the POJO class used for examples.public OutputStreamSerializerBuilder ignoreInvocationExceptionsOnGetters(boolean value)
BeanContextBuilder
If BeanRuntimeException
is thrown.
ignoreInvocationExceptionsOnGetters
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder ignoreInvocationExceptionsOnGetters()
BeanContextBuilder
Shortcut for calling ignoreInvocationExceptionsOnGetters(
.
ignoreInvocationExceptionsOnGetters
in class SerializerBuilder
public OutputStreamSerializerBuilder ignoreInvocationExceptionsOnSetters(boolean value)
BeanContextBuilder
If
Otherwise, a BeanRuntimeException
is thrown.
ignoreInvocationExceptionsOnSetters
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder ignoreInvocationExceptionsOnSetters()
BeanContextBuilder
Shortcut for calling ignoreInvocationExceptionsOnSetters(
.
ignoreInvocationExceptionsOnSetters
in class SerializerBuilder
public OutputStreamSerializerBuilder ignorePropertiesWithoutSetters(boolean value)
BeanContextBuilder
If
Otherwise, a BeanRuntimeException
is thrown.
ignorePropertiesWithoutSetters
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder ignoreUnknownBeanProperties(boolean value)
BeanContextBuilder
If
Otherwise, a BeanRuntimeException
is thrown.
ignoreUnknownBeanProperties
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder ignoreUnknownBeanProperties()
BeanContextBuilder
Shortcut for calling ignoreUnknownBeanProperties(
.
ignoreUnknownBeanProperties
in class SerializerBuilder
public OutputStreamSerializerBuilder ignoreUnknownNullBeanProperties(boolean value)
BeanContextBuilder
If
Otherwise, a BeanRuntimeException
is thrown.
ignoreUnknownNullBeanProperties
in class SerializerBuilder
value
- The new value for this property.
public <T> OutputStreamSerializerBuilder implClass(Class<T> interfaceClass, Class<? extends T> implClass)
BeanContextBuilder
implClass
in class SerializerBuilder
T
- The class type of the interface.interfaceClass
- The interface class.implClass
- The implementation class.public OutputStreamSerializerBuilder implClasses(Map<String,Class<?>> values)
BeanContextBuilder
For interfaces and abstract classes this method can be used to specify an implementation class for the interface/abstract class so that instances of the implementation class are used when instantiated (e.g. during a parse).
implClasses
in class SerializerBuilder
values
- The new value for this property.public OutputStreamSerializerBuilder locale(Locale value)
BeanContextBuilder
Specifies a default locale for serializer and parser sessions.
locale
in class SerializerBuilder
value
- The new value for this property.public OutputStreamSerializerBuilder mediaType(MediaType value)
BeanContextBuilder
Specifies a default media type value for serializer and parser sessions.
mediaType
in class SerializerBuilder
value
- The new value for this property.public OutputStreamSerializerBuilder notBeanClasses(boolean append, Object... values)
BeanContextBuilder
Not-bean classes are converted to Strings
during serialization even if they appear to be
bean-like.
notBeanClasses
in class SerializerBuilder
append
- If values
- The new value for this property.
public OutputStreamSerializerBuilder notBeanClasses(Class<?>... values)
BeanContextBuilder
List of classes that should not be treated as beans even if they appear to be bean-like.
Not-bean classes are converted to Strings
during serialization.
notBeanClasses
in class SerializerBuilder
values
- The values to add to this property.public OutputStreamSerializerBuilder notBeanClasses(Object... values)
BeanContextBuilder
List of classes that should not be treated as beans even if they appear to be bean-like.
Not-bean classes are converted to Strings
during serialization.
notBeanClasses
in class SerializerBuilder
values
- The values to add to this property.
public OutputStreamSerializerBuilder notBeanClassesRemove(Object... values)
BeanContextBuilder
notBeanClassesRemove
in class SerializerBuilder
values
- The values to remove from this property.
public OutputStreamSerializerBuilder notBeanPackages(boolean append, Object... values)
BeanContextBuilder
When specified, the current list of ignore packages are appended to.
notBeanPackages
in class SerializerBuilder
append
- If values
- The new values for this property.
public OutputStreamSerializerBuilder notBeanPackages(Object... values)
BeanContextBuilder
notBeanPackages
in class SerializerBuilder
values
- The values to add to this property.
public OutputStreamSerializerBuilder notBeanPackages(String... values)
BeanContextBuilder
notBeanPackages
in class SerializerBuilder
values
- The values to add to this property.public OutputStreamSerializerBuilder notBeanPackagesRemove(Object... values)
BeanContextBuilder
notBeanPackagesRemove
in class SerializerBuilder
values
- public OutputStreamSerializerBuilder pojoSwaps(boolean append, Object... values)
BeanContextBuilder
POJO swaps are used to "swap out" non-serializable classes with serializable equivalents during serialization, and "swap in" the non-serializable class during parsing.
An example of a POJO swap would be a Calendar
object that gets swapped out for an ISO8601 string.
pojoSwaps
in class SerializerBuilder
append
- If values
- The new value for this property.
public OutputStreamSerializerBuilder pojoSwaps(Class<?>... values)
BeanContextBuilder
pojoSwaps
in class SerializerBuilder
values
- The values to add to this property.public OutputStreamSerializerBuilder pojoSwaps(Object... values)
BeanContextBuilder
pojoSwaps
in class SerializerBuilder
values
- The values to add to this property.
PojoSwap
.
SurrogateSwap
.
public OutputStreamSerializerBuilder pojoSwapsRemove(Object... values)
BeanContextBuilder
pojoSwapsRemove
in class SerializerBuilder
values
- The values to remove from this property.
PojoSwap
.
SurrogateSwap
.
public OutputStreamSerializerBuilder sortProperties(boolean value)
BeanContextBuilder
When
sortProperties
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder sortProperties()
BeanContextBuilder
Shortcut for calling sortProperties(
.
sortProperties
in class SerializerBuilder
public OutputStreamSerializerBuilder timeZone(TimeZone value)
BeanContextBuilder
timeZone
in class SerializerBuilder
value
- The new value for this property.public OutputStreamSerializerBuilder useEnumNames()
BeanContextBuilder
When enabled, enums are always serialized by name instead of using Object.toString()
.
useEnumNames
in class SerializerBuilder
public OutputStreamSerializerBuilder useInterfaceProxies(boolean value)
BeanContextBuilder
If InvocationHandler
if there is no other way of instantiating them.
useInterfaceProxies
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder useJavaBeanIntrospector(boolean value)
BeanContextBuilder
Using the built-in Java bean introspector will not pick up fields or non-standard getters/setters.
@Bean
annotations will be ignored if you enable this setting.
useJavaBeanIntrospector
in class SerializerBuilder
value
- The new value for this property.
public OutputStreamSerializerBuilder useJavaBeanIntrospector()
BeanContextBuilder
Shortcut for calling useJavaBeanIntrospector(
.
useJavaBeanIntrospector
in class SerializerBuilder
public OutputStreamSerializerBuilder set(String name, Object value)
ContextBuilder
set
in class SerializerBuilder
name
- The property name.value
- The property value.PropertyStoreBuilder.set(String, Object)
public OutputStreamSerializerBuilder set(boolean append, String name, Object value)
ContextBuilder
set
in class SerializerBuilder
append
- If name
- The property name.value
- The property value.PropertyStoreBuilder.set(String, Object)
public OutputStreamSerializerBuilder set(Map<String,Object> properties)
ContextBuilder
set
in class SerializerBuilder
properties
- The properties to set on this class.PropertyStoreBuilder.set(java.util.Map)
public OutputStreamSerializerBuilder add(Map<String,Object> properties)
ContextBuilder
add
in class SerializerBuilder
properties
- The properties to set on this class.PropertyStoreBuilder.add(java.util.Map)
public OutputStreamSerializerBuilder addTo(String name, Object value)
ContextBuilder
addTo
in class SerializerBuilder
name
- The property name.value
- The new value to add to the SET property.public OutputStreamSerializerBuilder addTo(String name, String key, Object value)
ContextBuilder
addTo
in class SerializerBuilder
name
- The property name.key
- The property value map key.value
- The property value map value.public OutputStreamSerializerBuilder removeFrom(String name, Object value)
ContextBuilder
removeFrom
in class SerializerBuilder
name
- The property name.value
- The property value in the SET property.public OutputStreamSerializerBuilder apply(PropertyStore copyFrom)
ContextBuilder
apply
in class SerializerBuilder
copyFrom
- The factory whose settings are being copied.public OutputStreamSerializer build()
ContextBuilder
build
in class SerializerBuilder
Copyright © 2018 Apache. All rights reserved.