Implemented [JACKSON-777] (renamed SerializationConfig.Feature, DeserializationConfig.Feature); various other restructure
diff --git a/release-notes/VERSION b/release-notes/VERSION
index 4444103..a662636 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -34,6 +34,8 @@
'this node' (unless already returning something)
* [JACKSON-770]: Simplify method naming for JsonNode, drop unnecessary 'get' prefix
from methods like 'getTextValue()' (becomes 'textValue()')
+* [JACKSON-777]: Rename 'SerializationConfig.Feature' as 'SerializationFeature',
+ 'DeserializationConfig.Feature' as 'DeserializationFeature'.
New features:
diff --git a/src/main/java/com/fasterxml/jackson/databind/AbstractTypeResolver.java b/src/main/java/com/fasterxml/jackson/databind/AbstractTypeResolver.java
index 9035161..0c0bbf7 100644
--- a/src/main/java/com/fasterxml/jackson/databind/AbstractTypeResolver.java
+++ b/src/main/java/com/fasterxml/jackson/databind/AbstractTypeResolver.java
@@ -1,5 +1,7 @@
package com.fasterxml.jackson.databind;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+
/**
* Defines interface for resolvers that can resolve abstract types into concrete
* ones; either by using static mappings, or possibly by materializing
diff --git a/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java b/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java
index bcdd6f0..b0f3f72 100644
--- a/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java
+++ b/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java
@@ -6,22 +6,24 @@
import com.fasterxml.jackson.databind.util.Annotations;
import com.fasterxml.jackson.databind.util.Named;
-
/**
* Bean properties are logical entities that represent data
- * Java objects ("beans", although more accurately POJOs)
- * contain; and that are accessed using some combination
- * of methods (getter, setter), field and constructor
- * parameter.
+ * that Java objects (POJOs (Plain Old Java Objects), sometimes also called "beans")
+ * contain; and that are accessed using accessors (methods like getters
+ * and setters, fields, contstructor parametrers).
* Instances allow access to annotations directly associated
* to property (via field or method), as well as contextual
* annotations (annotations for class that contains properties).
*<p>
- * Instances are passed during construction of serializers and
- * deserializers, and references can be stored by serializers
- * and deserializers for futher use; mostly to retain access
- * to annotations when dynamically locating handlers for
- * sub-properties or dynamic types.
+ * Instances are not typically passed when constructing serializers
+ * and deserializers, but rather only passed when context
+ * is known when
+ * {@link com.fasterxml.jackson.databind.ser.ContextualSerializer} and
+ * {@link com.fasterxml.jackson.databind.deser.ContextualDeserializer}
+ * resolution occurs (<code>createContextual(...)</code> method is called).
+ * References may (need to) be retained by serializers and deserializers,
+ * especially when further resolving dependant handlers like value
+ * serializers/deserializers or structured types.
*/
public interface BeanProperty extends Named
{
@@ -58,11 +60,14 @@
/*
/**********************************************************
- /* Simple stand-alone implementation, useful as a placeholder
- /* or base class.
+ /* Helper classes
/**********************************************************
*/
+ /**
+ * Simple stand-alone implementation, useful as a placeholder
+ * or base class for more complex implementations.
+ */
public static class Std implements BeanProperty
{
protected final String _name;
diff --git a/src/main/java/com/fasterxml/jackson/databind/BeanPropertyDefinition.java b/src/main/java/com/fasterxml/jackson/databind/BeanPropertyDefinition.java
index 1ed2828..c2e8946 100644
--- a/src/main/java/com/fasterxml/jackson/databind/BeanPropertyDefinition.java
+++ b/src/main/java/com/fasterxml/jackson/databind/BeanPropertyDefinition.java
@@ -12,7 +12,8 @@
* serialization and deserialization purposes.
* These instances are created before actual {@link BeanProperty}
* instances are created, i.e. they are used earlier in the process
- * flow.
+ * flow, and are typically use to construct actual
+ * {@link BeanProperty} instances.
*/
public abstract class BeanPropertyDefinition
implements Named
diff --git a/src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java b/src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java
deleted file mode 100644
index d3130ea..0000000
--- a/src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java
+++ /dev/null
@@ -1,707 +0,0 @@
-package com.fasterxml.jackson.databind;
-
-import java.text.DateFormat;
-import java.util.*;
-
-import com.fasterxml.jackson.annotation.*;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.core.*;
-import com.fasterxml.jackson.databind.cfg.BaseSettings;
-import com.fasterxml.jackson.databind.cfg.ConfigFeature;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
-import com.fasterxml.jackson.databind.cfg.MapperConfigBase;
-import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
-import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
-import com.fasterxml.jackson.databind.introspect.NopAnnotationIntrospector;
-import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
-import com.fasterxml.jackson.databind.jsontype.SubtypeResolver;
-import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.type.ClassKey;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import com.fasterxml.jackson.databind.util.LinkedNode;
-
-/**
- * Object that contains baseline configuration for deserialization
- * process. An instance is owned by {@link ObjectMapper}, which
- * passes an immutable instance to be used for deserialization process.
- *<p>
- * Note that instances are considered immutable and as such no copies
- * should need to be created (there are some implementation details
- * with respect to mix-in annotations; where this is guaranteed as
- * long as caller follow "copy-then-use" pattern)
- */
-public final class DeserializationConfig
- extends MapperConfigBase<DeserializationConfig.Feature, DeserializationConfig>
-{
- /**
- * Enumeration that defines simple on/off features that affect
- * the way Java objects are deserialized from JSON
- *<p>
- * Note that features can be set both through
- * {@link ObjectMapper} (as sort of defaults) and through
- * {@link ObjectReader}.
- * In first case these defaults must follow "config-then-use" patterns
- * (i.e. defined once, not changed afterwards); all per-call
- * changes must be done using {@link ObjectReader}.
- */
- public enum Feature implements ConfigFeature
- {
- /*
- /******************************************************
- /* Type conversion features
- /******************************************************
- */
-
- /**
- * Feature that determines whether JSON floating point numbers
- * are to be deserialized into {@link java.math.BigDecimal}s
- * if only generic type description (either {@link Object} or
- * {@link Number}, or within untyped {@link java.util.Map}
- * or {@link java.util.Collection} context) is available.
- * If enabled such values will be deserialized as {@link java.math.BigDecimal}s;
- * if disabled, will be deserialized as {@link Double}s.
- * <p>
- * Feature is disabled by default, meaning that "untyped" floating
- * point numbers will by default be deserialized as {@link Double}s
- * (choice is for performance reason -- BigDecimals are slower than
- * Doubles).
- */
- USE_BIG_DECIMAL_FOR_FLOATS(false),
-
- /**
- * Feature that determines whether JSON integral (non-floating-point)
- * numbers are to be deserialized into {@link java.math.BigInteger}s
- * if only generic type description (either {@link Object} or
- * {@link Number}, or within untyped {@link java.util.Map}
- * or {@link java.util.Collection} context) is available.
- * If enabled such values will be deserialized as
- * {@link java.math.BigInteger}s;
- * if disabled, will be deserialized as "smallest" available type,
- * which is either {@link Integer}, {@link Long} or
- * {@link java.math.BigInteger}, depending on number of digits.
- * <p>
- * Feature is disabled by default, meaning that "untyped" floating
- * point numbers will by default be deserialized using whatever
- * is the most compact integral type, to optimize efficiency.
- */
- USE_BIG_INTEGER_FOR_INTS(false),
-
- // [JACKSON-652]
- /**
- * Feature that determines whether JSON Array is mapped to
- * <code>Object[]</code> or <code>List<Object></code> when binding
- * "untyped" objects (ones with nominal type of <code>java.lang.Object</code>).
- * If true, binds as <code>Object[]</code>; if false, as <code>List<Object></code>.
- *<p>
- * Feature is disabled by default, meaning that JSON arrays are bound as
- * {@link java.util.List}s.
- */
- USE_JAVA_ARRAY_FOR_JSON_ARRAY(false),
-
- /**
- * Feature that determines standard deserialization mechanism used for
- * Enum values: if enabled, Enums are assumed to have been serialized using
- * return value of <code>Enum.toString()</code>;
- * if disabled, return value of <code>Enum.name()</code> is assumed to have been used.
- *<p>
- * Note: this feature should usually have same value
- * as {@link SerializationConfig.Feature#WRITE_ENUMS_USING_TO_STRING}.
- *<p>
- * Feature is disabled by default.
- */
- READ_ENUMS_USING_TO_STRING(false),
-
- /*
- /******************************************************
- * Error handling features
- /******************************************************
- */
-
- /**
- * Feature that determines whether encountering of unknown
- * properties (ones that do not map to a property, and there is
- * no "any setter" or handler that can handle it)
- * should result in a failure (by throwing a
- * {@link JsonMappingException}) or not.
- * This setting only takes effect after all other handling
- * methods for unknown properties have been tried, and
- * property remains unhandled.
- *<p>
- * Feature is enabled by default (meaning that a
- * {@link JsonMappingException} will be thrown if an unknown property
- * is encountered).
- */
- FAIL_ON_UNKNOWN_PROPERTIES(true),
-
- /**
- * Feature that determines whether encountering of JSON null
- * is an error when deserializing into Java primitive types
- * (like 'int' or 'double'). If it is, a JsonProcessingException
- * is thrown to indicate this; if not, default value is used
- * (0 for 'int', 0.0 for double, same defaulting as what JVM uses).
- *<p>
- * Feature is disabled by default.
- */
- FAIL_ON_NULL_FOR_PRIMITIVES(false),
-
- /**
- * Feature that determines whether JSON integer numbers are valid
- * values to be used for deserializing Java enum values.
- * If set to 'false' numbers are acceptable and are used to map to
- * ordinal() of matching enumeration value; if 'true', numbers are
- * not allowed and a {@link JsonMappingException} will be thrown.
- * Latter behavior makes sense if there is concern that accidental
- * mapping from integer values to enums might happen (and when enums
- * are always serialized as JSON Strings)
- *<p>
- * Feature is disabled by default.
- */
- FAIL_ON_NUMBERS_FOR_ENUMS(false),
-
- /**
- * Feature that determines whether Jackson code should catch
- * and wrap {@link Exception}s (but never {@link Error}s!)
- * to add additional information about
- * location (within input) of problem or not. If enabled,
- * most exceptions will be caught and re-thrown (exception
- * specifically being that {@link java.io.IOException}s may be passed
- * as is, since they are declared as throwable); this can be
- * convenient both in that all exceptions will be checked and
- * declared, and so there is more contextual information.
- * However, sometimes calling application may just want "raw"
- * unchecked exceptions passed as is.
- *<p>
- * Feature is enabled by default.
- */
- WRAP_EXCEPTIONS(true),
-
- /*
- /******************************************************
- * Structural conversion features
- /******************************************************
- */
-
- /**
- * Feature that determines whether it is acceptable to coerce non-array
- * (in JSON) values to work with Java collection (arrays, java.util.Collection)
- * types. If enabled, collection deserializers will try to handle non-array
- * values as if they had "implicit" surrounding JSON array.
- * This feature is meant to be used for compatibility/interoperability reasons,
- * to work with packages (such as XML-to-JSON converters) that leave out JSON
- * array in cases where there is just a single element in array.
- *<p>
- * Feature is disabled by default.
- */
- ACCEPT_SINGLE_VALUE_AS_ARRAY(false),
-
- /**
- * Feature to allow "unwrapping" root-level JSON value, to match setting of
- * {@link SerializationConfig.Feature#WRAP_ROOT_VALUE} used for serialization.
- * Will verify that the root JSON value is a JSON Object, and that it has
- * a single property with expected root name. If not, a
- * {@link JsonMappingException} is thrown; otherwise value of the wrapped property
- * will be deserialized as if it was the root value.
- *<p>
- * Feature is disabled by default.
- */
- UNWRAP_ROOT_VALUE(false),
-
- /*
- /******************************************************
- /* Value conversion features
- /******************************************************
- */
-
- /**
- * Feature that can be enabled to allow JSON empty String
- * value ("") to be bound to POJOs as null.
- * If disabled, standard POJOs can only be bound from JSON null or
- * JSON Object (standard meaning that no custom deserializers or
- * constructors are defined; both of which can add support for other
- * kinds of JSON values); if enable, empty JSON String can be taken
- * to be equivalent of JSON null.
- *<p>
- * Feature is enabled by default.
- */
- ACCEPT_EMPTY_STRING_AS_NULL_OBJECT(false)
-
- ;
-
- private final boolean _defaultState;
-
- private Feature(boolean defaultState) {
- _defaultState = defaultState;
- }
-
- @Override
- public boolean enabledByDefault() { return _defaultState; }
-
- @Override
- public int getMask() { return (1 << ordinal()); }
- }
-
- /*
- /**********************************************************
- /* Configuration settings for deserialization
- /**********************************************************
- */
-
- /**
- * Set of features enabled; actual type (kind of features)
- * depends on sub-classes.
- */
- protected final int _deserFeatures;
-
- /**
- * Linked list that contains all registered problem handlers.
- * Implementation as front-added linked list allows for sharing
- * of the list (tail) without copying the list.
- */
- protected final LinkedNode<DeserializationProblemHandler> _problemHandlers;
-
- /**
- * Factory used for constructing {@link com.fasterxml.jackson.core.JsonNode} instances.
- */
- protected final JsonNodeFactory _nodeFactory;
-
- /*
- /**********************************************************
- /* Life-cycle, constructors
- /**********************************************************
- */
-
- /**
- * Constructor used by ObjectMapper to create default configuration object instance.
- */
- public DeserializationConfig(BaseSettings base,
- SubtypeResolver str, Map<ClassKey,Class<?>> mixins)
- {
- super(base, str, mixins);
- _deserFeatures = collectFeatureDefaults(DeserializationConfig.Feature.class);
- _nodeFactory = JsonNodeFactory.instance;
- _problemHandlers = null;
- }
-
- /**
- * Copy constructor used to create a non-shared instance with given mix-in
- * annotation definitions and subtype resolver.
- */
- private DeserializationConfig(DeserializationConfig src, SubtypeResolver str)
- {
- super(src, str);
- _deserFeatures = src._deserFeatures;
- _nodeFactory = src._nodeFactory;
- _problemHandlers = src._problemHandlers;
- }
-
- private DeserializationConfig(DeserializationConfig src,
- int mapperFeatures, int deserFeatures)
- {
- super(src, mapperFeatures);
- _deserFeatures = deserFeatures;
- _nodeFactory = src._nodeFactory;
- _problemHandlers = src._problemHandlers;
- }
-
- private DeserializationConfig(DeserializationConfig src, BaseSettings base)
- {
- super(src, base);
- _deserFeatures = src._deserFeatures;
- _nodeFactory = src._nodeFactory;
- _problemHandlers = src._problemHandlers;
- }
-
- private DeserializationConfig(DeserializationConfig src, JsonNodeFactory f)
- {
- super(src);
- _deserFeatures = src._deserFeatures;
- _problemHandlers = src._problemHandlers;
- _nodeFactory = f;
- }
-
- private DeserializationConfig(DeserializationConfig src,
- LinkedNode<DeserializationProblemHandler> problemHandlers)
- {
- super(src);
- _deserFeatures = src._deserFeatures;
- _problemHandlers = problemHandlers;
- _nodeFactory = src._nodeFactory;
- }
-
- private DeserializationConfig(DeserializationConfig src, String rootName)
- {
- super(src, rootName);
- _deserFeatures = src._deserFeatures;
- _problemHandlers = src._problemHandlers;
- _nodeFactory = src._nodeFactory;
- }
-
- private DeserializationConfig(DeserializationConfig src, Class<?> view)
- {
- super(src, view);
- _deserFeatures = src._deserFeatures;
- _problemHandlers = src._problemHandlers;
- _nodeFactory = src._nodeFactory;
- }
-
- /*
- /**********************************************************
- /* Life-cycle, factory methods from MapperConfig
- /**********************************************************
- */
-
- @Override
- public DeserializationConfig with(MapperConfig.Feature... features)
- {
- int newMapperFlags = _mapperFeatures;
- for (MapperConfig.Feature f : features) {
- newMapperFlags |= f.getMask();
- }
- return (newMapperFlags == _mapperFeatures) ? this :
- new DeserializationConfig(this, newMapperFlags, _deserFeatures);
- }
-
- @Override
- public DeserializationConfig without(MapperConfig.Feature... features)
- {
- int newMapperFlags = _mapperFeatures;
- for (MapperConfig.Feature f : features) {
- newMapperFlags &= ~f.getMask();
- }
- return (newMapperFlags == _mapperFeatures) ? this :
- new DeserializationConfig(this, newMapperFlags, _deserFeatures);
- }
-
- @Override
- public DeserializationConfig withClassIntrospector(ClassIntrospector ci) {
- return _withBase(_base.withClassIntrospector(ci));
- }
-
- @Override
- public DeserializationConfig withAnnotationIntrospector(AnnotationIntrospector ai) {
- return _withBase(_base.withAnnotationIntrospector(ai));
- }
-
- @Override
- public DeserializationConfig withVisibilityChecker(VisibilityChecker<?> vc) {
- return _withBase(_base.withVisibilityChecker(vc));
- }
-
- @Override
- public DeserializationConfig withVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility) {
- return _withBase( _base.withVisibility(forMethod, visibility));
- }
-
- @Override
- public DeserializationConfig withTypeResolverBuilder(TypeResolverBuilder<?> trb) {
- return _withBase(_base.withTypeResolverBuilder(trb));
- }
-
- @Override
- public DeserializationConfig withSubtypeResolver(SubtypeResolver str) {
- return (_subtypeResolver == str) ? this : new DeserializationConfig(this, str);
- }
-
- @Override
- public DeserializationConfig withPropertyNamingStrategy(PropertyNamingStrategy pns) {
- return _withBase(_base.withPropertyNamingStrategy(pns));
- }
-
- @Override
- public DeserializationConfig withRootName(String rootName) {
- if (rootName == null) {
- if (_rootName == null) {
- return this;
- }
- } else if (rootName.equals(_rootName)) {
- return this;
- }
- return new DeserializationConfig(this, rootName);
- }
-
- @Override
- public DeserializationConfig withTypeFactory(TypeFactory tf) {
- return _withBase( _base.withTypeFactory(tf));
- }
-
- @Override
- public DeserializationConfig withDateFormat(DateFormat df) {
- return _withBase(_base.withDateFormat(df));
- }
-
- @Override
- public DeserializationConfig withHandlerInstantiator(HandlerInstantiator hi) {
- return _withBase(_base.withHandlerInstantiator(hi));
- }
-
- @Override
- public DeserializationConfig withInsertedAnnotationIntrospector(AnnotationIntrospector ai) {
- return _withBase(_base.withInsertedAnnotationIntrospector(ai));
- }
-
- @Override
- public DeserializationConfig withAppendedAnnotationIntrospector(AnnotationIntrospector ai) {
- return _withBase(_base.withAppendedAnnotationIntrospector(ai));
- }
-
- @Override
- public DeserializationConfig withView(Class<?> view) {
- return (_view == view) ? this : new DeserializationConfig(this, view);
- }
-
- private final DeserializationConfig _withBase(BaseSettings newBase) {
- return (_base == newBase) ? this : new DeserializationConfig(this, newBase);
- }
-
- /*
- /**********************************************************
- /* Life-cycle, deserialization-specific factory methods
- /**********************************************************
- */
-
- /**
- * Fluent factory method that will construct a new instance with
- * specified {@link JsonNodeFactory}
- */
- public DeserializationConfig withNodeFactory(JsonNodeFactory f) {
- if (_nodeFactory == f) {
- return this;
- }
- return new DeserializationConfig(this, f);
- }
-
- /**
- * Method that can be used to add a handler that can (try to)
- * resolve non-fatal deserialization problems.
- */
- public DeserializationConfig withHandler(DeserializationProblemHandler h)
- {
- // Sanity check: let's prevent adding same handler multiple times
- if (LinkedNode.contains(_problemHandlers, h)) {
- return this;
- }
- return new DeserializationConfig(this,
- new LinkedNode<DeserializationProblemHandler>(h, _problemHandlers));
- }
-
- /**
- * Method for removing all configured problem handlers; usually done to replace
- * existing handler(s) with different one(s)
- */
- public DeserializationConfig withNoProblemHandlers() {
- if (_problemHandlers == null) {
- return this;
- }
- return new DeserializationConfig(this,
- (LinkedNode<DeserializationProblemHandler>) null);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features enabled.
- */
- public DeserializationConfig with(DeserializationConfig.Feature feature)
- {
- int newDeserFeatures = (_deserFeatures | feature.getMask());
- return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features enabled.
- */
- public DeserializationConfig with(DeserializationConfig.Feature first,
- DeserializationConfig.Feature... features)
- {
- int newDeserFeatures = _deserFeatures | first.getMask();
- for (Feature f : features) {
- newDeserFeatures |= f.getMask();
- }
- return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features enabled.
- */
- public DeserializationConfig withFeatures(DeserializationConfig.Feature... features)
- {
- int newDeserFeatures = _deserFeatures;
- for (Feature f : features) {
- newDeserFeatures |= f.getMask();
- }
- return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified feature disabled.
- */
- public DeserializationConfig without(DeserializationConfig.Feature feature)
- {
- int newDeserFeatures = _deserFeatures & ~feature.getMask();
- return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features disabled.
- */
- public DeserializationConfig without(DeserializationConfig.Feature first,
- DeserializationConfig.Feature... features)
- {
- int newDeserFeatures = _deserFeatures & ~first.getMask();
- for (Feature f : features) {
- newDeserFeatures &= ~f.getMask();
- }
- return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features disabled.
- */
- public DeserializationConfig withoutFeatures(DeserializationConfig.Feature... features)
- {
- int newDeserFeatures = _deserFeatures;
- for (Feature f : features) {
- newDeserFeatures &= ~f.getMask();
- }
- return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
- }
-
- /*
- /**********************************************************
- /* MapperConfig implementation
- /**********************************************************
- */
-
- /**
- * Method for getting {@link AnnotationIntrospector} configured
- * to introspect annotation values used for configuration.
- */
- @Override
- public AnnotationIntrospector getAnnotationIntrospector()
- {
- /* 29-Jul-2009, tatu: it's now possible to disable use of
- * annotations; can be done using "no-op" introspector
- */
- if (isEnabled(MapperConfig.Feature.USE_ANNOTATIONS)) {
- return super.getAnnotationIntrospector();
- }
- return NopAnnotationIntrospector.instance;
- }
-
- @Override
- public boolean useRootWrapping()
- {
- if (_rootName != null) { // empty String disables wrapping; non-empty enables
- return (_rootName.length() > 0);
- }
- return isEnabled(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
- }
-
- /**
- * Accessor for getting bean description that only contains class
- * annotations: useful if no getter/setter/creator information is needed.
- */
- @Override
- public BeanDescription introspectClassAnnotations(JavaType type) {
- return getClassIntrospector().forClassAnnotations(this, type, this);
- }
-
- /**
- * Accessor for getting bean description that only contains immediate class
- * annotations: ones from the class, and its direct mix-in, if any, but
- * not from super types.
- */
- @Override
- public BeanDescription introspectDirectClassAnnotations(JavaType type) {
- return getClassIntrospector().forDirectClassAnnotations(this, type, this);
- }
-
- @Override
- public VisibilityChecker<?> getDefaultVisibilityChecker()
- {
- VisibilityChecker<?> vchecker = super.getDefaultVisibilityChecker();
- if (!isEnabled(MapperConfig.Feature.AUTO_DETECT_SETTERS)) {
- vchecker = vchecker.withSetterVisibility(Visibility.NONE);
- }
- if (!isEnabled(MapperConfig.Feature.AUTO_DETECT_CREATORS)) {
- vchecker = vchecker.withCreatorVisibility(Visibility.NONE);
- }
- if (!isEnabled(MapperConfig.Feature.AUTO_DETECT_FIELDS)) {
- vchecker = vchecker.withFieldVisibility(Visibility.NONE);
- }
- return vchecker;
- }
-
- public final boolean isEnabled(DeserializationConfig.Feature f) {
- return (_deserFeatures & f.getMask()) != 0;
- }
-
- /*
- /**********************************************************
- /* Other configuration
- /**********************************************************
- */
-
- public final int getDeserializationFeatures() {
- return _deserFeatures;
- }
-
- /**
- * Method for getting head of the problem handler chain. May be null,
- * if no handlers have been added.
- */
- public LinkedNode<DeserializationProblemHandler> getProblemHandlers() {
- return _problemHandlers;
- }
-
- /**
- * Method called during deserialization if Base64 encoded content
- * needs to be decoded. Default version just returns default Jackson
- * uses, which is modified-mime which does not add linefeeds (because
- * those would have to be escaped in JSON strings).
- */
- public Base64Variant getBase64Variant() {
- return Base64Variants.getDefaultVariant();
- }
-
- public final JsonNodeFactory getNodeFactory() {
- return _nodeFactory;
- }
-
- /*
- /**********************************************************
- /* Introspection methods
- /**********************************************************
- */
-
- /**
- * Method that will introspect full bean properties for the purpose
- * of building a bean deserializer
- *
- * @param type Type of class to be introspected
- */
- @SuppressWarnings("unchecked")
- public <T extends BeanDescription> T introspect(JavaType type) {
- return (T) getClassIntrospector().forDeserialization(this, type, this);
- }
-
- /**
- * Method that will introspect subset of bean properties needed to
- * construct bean instance.
- */
- @SuppressWarnings("unchecked")
- public <T extends BeanDescription> T introspectForCreation(JavaType type) {
- return (T) getClassIntrospector().forCreation(this, type, this);
- }
-}
diff --git a/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java b/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
index 2fcc9ae..54c44cb 100644
--- a/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
+++ b/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
@@ -8,7 +8,8 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.annotation.NoClass;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
import com.fasterxml.jackson.databind.deser.*;
import com.fasterxml.jackson.databind.deser.impl.DeserializerCache;
import com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer;
@@ -182,14 +183,14 @@
* Convenience method for checking whether specified on/off
* feature is enabled
*/
- public final boolean isEnabled(DeserializationConfig.Feature feat) {
+ public final boolean isEnabled(DeserializationFeature feat) {
/* 03-Dec-2010, tatu: minor shortcut; since this is called quite often,
* let's use a local copy of feature settings:
*/
return (_featureFlags & feat.getMask()) != 0;
}
- public final boolean isEnabled(MapperConfig.Feature feat) {
+ public final boolean isEnabled(MapperFeature feat) {
return _config.isEnabled(feat);
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/DeserializationFeature.java b/src/main/java/com/fasterxml/jackson/databind/DeserializationFeature.java
new file mode 100644
index 0000000..bc868c2
--- /dev/null
+++ b/src/main/java/com/fasterxml/jackson/databind/DeserializationFeature.java
@@ -0,0 +1,210 @@
+package com.fasterxml.jackson.databind;
+
+import com.fasterxml.jackson.databind.cfg.ConfigFeature;
+
+/**
+ * Enumeration that defines simple on/off features that affect
+ * the way Java objects are deserialized from JSON
+ *<p>
+ * Note that features can be set both through
+ * {@link ObjectMapper} (as sort of defaults) and through
+ * {@link ObjectReader}.
+ * In first case these defaults must follow "config-then-use" patterns
+ * (i.e. defined once, not changed afterwards); all per-call
+ * changes must be done using {@link ObjectReader}.
+ */
+public enum DeserializationFeature implements ConfigFeature
+{
+ /*
+ /******************************************************
+ /* Type conversion features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines whether JSON floating point numbers
+ * are to be deserialized into {@link java.math.BigDecimal}s
+ * if only generic type description (either {@link Object} or
+ * {@link Number}, or within untyped {@link java.util.Map}
+ * or {@link java.util.Collection} context) is available.
+ * If enabled such values will be deserialized as {@link java.math.BigDecimal}s;
+ * if disabled, will be deserialized as {@link Double}s.
+ * <p>
+ * SerializationFeature is disabled by default, meaning that "untyped" floating
+ * point numbers will by default be deserialized as {@link Double}s
+ * (choice is for performance reason -- BigDecimals are slower than
+ * Doubles).
+ */
+ USE_BIG_DECIMAL_FOR_FLOATS(false),
+
+ /**
+ * SerializationFeature that determines whether JSON integral (non-floating-point)
+ * numbers are to be deserialized into {@link java.math.BigInteger}s
+ * if only generic type description (either {@link Object} or
+ * {@link Number}, or within untyped {@link java.util.Map}
+ * or {@link java.util.Collection} context) is available.
+ * If enabled such values will be deserialized as
+ * {@link java.math.BigInteger}s;
+ * if disabled, will be deserialized as "smallest" available type,
+ * which is either {@link Integer}, {@link Long} or
+ * {@link java.math.BigInteger}, depending on number of digits.
+ * <p>
+ * SerializationFeature is disabled by default, meaning that "untyped" floating
+ * point numbers will by default be deserialized using whatever
+ * is the most compact integral type, to optimize efficiency.
+ */
+ USE_BIG_INTEGER_FOR_INTS(false),
+
+ // [JACKSON-652]
+ /**
+ * SerializationFeature that determines whether JSON Array is mapped to
+ * <code>Object[]</code> or <code>List<Object></code> when binding
+ * "untyped" objects (ones with nominal type of <code>java.lang.Object</code>).
+ * If true, binds as <code>Object[]</code>; if false, as <code>List<Object></code>.
+ *<p>
+ * SerializationFeature is disabled by default, meaning that JSON arrays are bound as
+ * {@link java.util.List}s.
+ */
+ USE_JAVA_ARRAY_FOR_JSON_ARRAY(false),
+
+ /**
+ * SerializationFeature that determines standard deserialization mechanism used for
+ * Enum values: if enabled, Enums are assumed to have been serialized using
+ * return value of <code>Enum.toString()</code>;
+ * if disabled, return value of <code>Enum.name()</code> is assumed to have been used.
+ *<p>
+ * Note: this feature should usually have same value
+ * as {@link SerializationConfig.SerializationFeature#WRITE_ENUMS_USING_TO_STRING}.
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ READ_ENUMS_USING_TO_STRING(false),
+
+ /*
+ /******************************************************
+ * Error handling features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines whether encountering of unknown
+ * properties (ones that do not map to a property, and there is
+ * no "any setter" or handler that can handle it)
+ * should result in a failure (by throwing a
+ * {@link JsonMappingException}) or not.
+ * This setting only takes effect after all other handling
+ * methods for unknown properties have been tried, and
+ * property remains unhandled.
+ *<p>
+ * SerializationFeature is enabled by default (meaning that a
+ * {@link JsonMappingException} will be thrown if an unknown property
+ * is encountered).
+ */
+ FAIL_ON_UNKNOWN_PROPERTIES(true),
+
+ /**
+ * SerializationFeature that determines whether encountering of JSON null
+ * is an error when deserializing into Java primitive types
+ * (like 'int' or 'double'). If it is, a JsonProcessingException
+ * is thrown to indicate this; if not, default value is used
+ * (0 for 'int', 0.0 for double, same defaulting as what JVM uses).
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ FAIL_ON_NULL_FOR_PRIMITIVES(false),
+
+ /**
+ * SerializationFeature that determines whether JSON integer numbers are valid
+ * values to be used for deserializing Java enum values.
+ * If set to 'false' numbers are acceptable and are used to map to
+ * ordinal() of matching enumeration value; if 'true', numbers are
+ * not allowed and a {@link JsonMappingException} will be thrown.
+ * Latter behavior makes sense if there is concern that accidental
+ * mapping from integer values to enums might happen (and when enums
+ * are always serialized as JSON Strings)
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ FAIL_ON_NUMBERS_FOR_ENUMS(false),
+
+ /**
+ * SerializationFeature that determines whether Jackson code should catch
+ * and wrap {@link Exception}s (but never {@link Error}s!)
+ * to add additional information about
+ * location (within input) of problem or not. If enabled,
+ * most exceptions will be caught and re-thrown (exception
+ * specifically being that {@link java.io.IOException}s may be passed
+ * as is, since they are declared as throwable); this can be
+ * convenient both in that all exceptions will be checked and
+ * declared, and so there is more contextual information.
+ * However, sometimes calling application may just want "raw"
+ * unchecked exceptions passed as is.
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ WRAP_EXCEPTIONS(true),
+
+ /*
+ /******************************************************
+ * Structural conversion features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines whether it is acceptable to coerce non-array
+ * (in JSON) values to work with Java collection (arrays, java.util.Collection)
+ * types. If enabled, collection deserializers will try to handle non-array
+ * values as if they had "implicit" surrounding JSON array.
+ * This feature is meant to be used for compatibility/interoperability reasons,
+ * to work with packages (such as XML-to-JSON converters) that leave out JSON
+ * array in cases where there is just a single element in array.
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ ACCEPT_SINGLE_VALUE_AS_ARRAY(false),
+
+ /**
+ * SerializationFeature to allow "unwrapping" root-level JSON value, to match setting of
+ * {@link SerializationConfig.SerializationFeature#WRAP_ROOT_VALUE} used for serialization.
+ * Will verify that the root JSON value is a JSON Object, and that it has
+ * a single property with expected root name. If not, a
+ * {@link JsonMappingException} is thrown; otherwise value of the wrapped property
+ * will be deserialized as if it was the root value.
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ UNWRAP_ROOT_VALUE(false),
+
+ /*
+ /******************************************************
+ /* Value conversion features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that can be enabled to allow JSON empty String
+ * value ("") to be bound to POJOs as null.
+ * If disabled, standard POJOs can only be bound from JSON null or
+ * JSON Object (standard meaning that no custom deserializers or
+ * constructors are defined; both of which can add support for other
+ * kinds of JSON values); if enable, empty JSON String can be taken
+ * to be equivalent of JSON null.
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ ACCEPT_EMPTY_STRING_AS_NULL_OBJECT(false)
+
+ ;
+
+ private final boolean _defaultState;
+
+ private DeserializationFeature(boolean defaultState) {
+ _defaultState = defaultState;
+ }
+
+ @Override
+ public boolean enabledByDefault() { return _defaultState; }
+
+ @Override
+ public int getMask() { return (1 << ordinal()); }
+}
\ No newline at end of file
diff --git a/src/main/java/com/fasterxml/jackson/databind/MapperFeature.java b/src/main/java/com/fasterxml/jackson/databind/MapperFeature.java
new file mode 100644
index 0000000..6b97276
--- /dev/null
+++ b/src/main/java/com/fasterxml/jackson/databind/MapperFeature.java
@@ -0,0 +1,240 @@
+package com.fasterxml.jackson.databind;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.cfg.ConfigFeature;
+
+/**
+ * Enumeration that defines simple on/off features to set
+ * for {@link ObjectMapper}, and accessible (but not changeable)
+ * via {@link ObjectReader} and {@link ObjectWriter} (as well as
+ * through various convenience methods through context objects).
+ *<p>
+ * Note that in addition to being only mutable via {@link ObjectMapper},
+ * changes only take effect when done <b>before any serialization or
+ * deserialization</b> calls -- that is, caller must follow
+ * "configure-then-use" pattern.
+ */
+public enum MapperFeature implements ConfigFeature
+{
+ /*
+ /******************************************************
+ /* Introspection features
+ /******************************************************
+ */
+
+ /**
+ * Feature that determines whether annotation introspection
+ * is used for configuration; if enabled, configured
+ * {@link AnnotationIntrospector} will be used: if disabled,
+ * no annotations are considered.
+ *<p>
+ * Feature is enabled by default.
+ */
+ USE_ANNOTATIONS(true),
+
+ /**
+ * Feature that determines whether "creator" methods are
+ * automatically detected by consider public constructors,
+ * and static single argument methods with name "valueOf".
+ * If disabled, only methods explicitly annotated are considered
+ * creator methods (except for the no-arg default constructor which
+ * is always considered a factory method).
+ *<p>
+ * Note that this feature has lower precedence than per-class
+ * annotations, and is only used if there isn't more granular
+ * configuration available.
+ *<P>
+ * Feature is enabled by default.
+ */
+ AUTO_DETECT_CREATORS(true),
+
+ /**
+ * Feature that determines whether non-static fields are recognized as
+ * properties.
+ * If yes, then all public member fields
+ * are considered as properties. If disabled, only fields explicitly
+ * annotated are considered property fields.
+ *<p>
+ * Note that this feature has lower precedence than per-class
+ * annotations, and is only used if there isn't more granular
+ * configuration available.
+ *<p>
+ * Feature is enabled by default.
+ */
+ AUTO_DETECT_FIELDS(true),
+
+ /**
+ * Feature that determines whether regualr "getter" methods are
+ * automatically detected based on standard Bean naming convention
+ * or not. If yes, then all public zero-argument methods that
+ * start with prefix "get"
+ * are considered as getters.
+ * If disabled, only methods explicitly annotated are considered getters.
+ *<p>
+ * Note that since version 1.3, this does <b>NOT</b> include
+ * "is getters" (see {@link #AUTO_DETECT_IS_GETTERS} for details)
+ *<p>
+ * Note that this feature has lower precedence than per-class
+ * annotations, and is only used if there isn't more granular
+ * configuration available.
+ *<p>
+ * Feature is enabled by default.
+ */
+ AUTO_DETECT_GETTERS(true),
+
+ /**
+ * Feature that determines whether "is getter" methods are
+ * automatically detected based on standard Bean naming convention
+ * or not. If yes, then all public zero-argument methods that
+ * start with prefix "is", and whose return type is boolean
+ * are considered as "is getters".
+ * If disabled, only methods explicitly annotated are considered getters.
+ *<p>
+ * Note that this feature has lower precedence than per-class
+ * annotations, and is only used if there isn't more granular
+ * configuration available.
+ *<p>
+ * Feature is enabled by default.
+ */
+ AUTO_DETECT_IS_GETTERS(true),
+
+ /**
+ * Feature that determines whether "setter" methods are
+ * automatically detected based on standard Bean naming convention
+ * or not. If yes, then all public one-argument methods that
+ * start with prefix "set"
+ * are considered setters. If disabled, only methods explicitly
+ * annotated are considered setters.
+ *<p>
+ * Note that this feature has lower precedence than per-class
+ * annotations, and is only used if there isn't more granular
+ * configuration available.
+ *<P>
+ * Feature is enabled by default.
+ */
+ AUTO_DETECT_SETTERS(true),
+
+ /**
+ * Feature that determines whether getters (getter methods)
+ * can be auto-detected if there is no matching mutator (setter,
+ * constructor parameter or field) or not: if set to true,
+ * only getters that match a mutator are auto-discovered; if
+ * false, all auto-detectable getters can be discovered.
+ *<p>
+ * Feature is disabled by default.
+ */
+ REQUIRE_SETTERS_FOR_GETTERS(false),
+
+ /**
+ * Feature that determines whether otherwise regular "getter"
+ * methods (but only ones that handle Collections and Maps,
+ * not getters of other type)
+ * can be used for purpose of getting a reference to a Collection
+ * and Map to modify the property, without requiring a setter
+ * method.
+ * This is similar to how JAXB framework sets Collections and
+ * Maps: no setter is involved, just setter.
+ *<p>
+ * Note that such getters-as-setters methods have lower
+ * precedence than setters, so they are only used if no
+ * setter is found for the Map/Collection property.
+ *<p>
+ * Feature is enabled by default.
+ */
+ USE_GETTERS_AS_SETTERS(true),
+
+ /**
+ * Feature that determines whether method and field access
+ * modifier settings can be overridden when accessing
+ * properties. If enabled, method
+ * {@link java.lang.reflect.AccessibleObject#setAccessible}
+ * may be called to enable access to otherwise unaccessible
+ * objects.
+ *<p>
+ * Feature is enabled by default.
+ */
+ CAN_OVERRIDE_ACCESS_MODIFIERS(true),
+
+ /*
+ /******************************************************
+ /* Type-handling features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines whether the type detection for
+ * serialization should be using actual dynamic runtime type,
+ * or declared static type.
+ * Note that deserialization always uses declared static types
+ * since no runtime types are available (as we are creating
+ * instances after using type information).
+ *<p>
+ * This global default value can be overridden at class, method
+ * or field level by using {@link JsonSerialize#typing} annotation
+ * property.
+ *<p>
+ * Feature is disabled by default which means that dynamic runtime types
+ * are used (instead of declared static types) for serialization.
+ */
+ USE_STATIC_TYPING(false),
+
+ /*
+ /******************************************************
+ /* View-related features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines whether properties that have no view
+ * annotations are included in JSON serialization views (see
+ * {@link com.fasterxml.jackson.annotation.JsonView} for more
+ * details on JSON Views).
+ * If enabled, non-annotated properties will be included;
+ * when disabled, they will be excluded. So this feature
+ * changes between "opt-in" (feature disabled) and
+ * "opt-out" (feature enabled) modes.
+ *<p>
+ * Default value is enabled, meaning that non-annotated
+ * properties are included in all views if there is no
+ * {@link com.fasterxml.jackson.annotation.JsonView} annotation.
+ *<p>
+ * Feature is enabled by default.
+ */
+ DEFAULT_VIEW_INCLUSION(true),
+
+ /*
+ /******************************************************
+ /* Generic output features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that defines default property serialization order used
+ * for POJO fields (note: does <b>not</b> apply to {@link java.util.Map}
+ * serialization!):
+ * if enabled, default ordering is alphabetic (similar to
+ * how {@link com.fasterxml.jackson.annotation.JsonPropertyOrder#alphabetic()}
+ * works); if disabled, order is unspecified (based on what JDK gives
+ * us, which may be declaration order, but is not guaranteed).
+ *<p>
+ * Note that this is just the default behavior, and can be overridden by
+ * explicit overrides in classes.
+ *<p>
+ * Feature is disabled by default.
+ */
+ SORT_PROPERTIES_ALPHABETICALLY(false)
+
+ ;
+
+ private final boolean _defaultState;
+
+ private MapperFeature(boolean defaultState) {
+ _defaultState = defaultState;
+ }
+
+ @Override
+ public boolean enabledByDefault() { return _defaultState; }
+
+ @Override
+ public int getMask() { return (1 << ordinal()); }
+}
\ No newline at end of file
diff --git a/src/main/java/com/fasterxml/jackson/databind/Module.java b/src/main/java/com/fasterxml/jackson/databind/Module.java
index 2bc6356..90506cd 100644
--- a/src/main/java/com/fasterxml/jackson/databind/Module.java
+++ b/src/main/java/com/fasterxml/jackson/databind/Module.java
@@ -1,7 +1,6 @@
package com.fasterxml.jackson.databind;
import com.fasterxml.jackson.core.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;
import com.fasterxml.jackson.databind.deser.Deserializers;
import com.fasterxml.jackson.databind.deser.KeyDeserializers;
@@ -114,11 +113,11 @@
*/
public TypeFactory getTypeFactory();
- public boolean isEnabled(MapperConfig.Feature f);
+ public boolean isEnabled(MapperFeature f);
- public boolean isEnabled(DeserializationConfig.Feature f);
+ public boolean isEnabled(DeserializationFeature f);
- public boolean isEnabled(SerializationConfig.Feature f);
+ public boolean isEnabled(SerializationFeature f);
public boolean isEnabled(JsonFactory.Feature f);
diff --git a/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java b/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java
index a1e0b7b..0fcbd4c 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java
@@ -18,7 +18,11 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.core.util.*;
import com.fasterxml.jackson.databind.cfg.BaseSettings;
+import com.fasterxml.jackson.databind.cfg.DatabindVersion;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.deser.*;
import com.fasterxml.jackson.databind.introspect.BasicClassIntrospector;
import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
@@ -478,17 +482,17 @@
}
@Override
- public boolean isEnabled(MapperConfig.Feature f) {
+ public boolean isEnabled(MapperFeature f) {
return mapper.isEnabled(f);
}
@Override
- public boolean isEnabled(DeserializationConfig.Feature f) {
+ public boolean isEnabled(DeserializationFeature f) {
return mapper.isEnabled(f);
}
@Override
- public boolean isEnabled(SerializationConfig.Feature f) {
+ public boolean isEnabled(SerializationFeature f) {
return mapper.isEnabled(f);
}
@@ -1073,7 +1077,7 @@
* Method for changing state of an on/off mapper feature for
* this mapper instance.
*/
- public ObjectMapper configure(MapperConfig.Feature f, boolean state) {
+ public ObjectMapper configure(MapperFeature f, boolean state) {
_serializationConfig = state ?
_serializationConfig.with(f) : _serializationConfig.without(f);
_deserializationConfig = state ?
@@ -1085,7 +1089,7 @@
* Method for changing state of an on/off serialization feature for
* this object mapper.
*/
- public ObjectMapper configure(SerializationConfig.Feature f, boolean state) {
+ public ObjectMapper configure(SerializationFeature f, boolean state) {
_serializationConfig = state ?
_serializationConfig.with(f) : _serializationConfig.without(f);
return this;
@@ -1095,7 +1099,7 @@
* Method for changing state of an on/off deserialization feature for
* this object mapper.
*/
- public ObjectMapper configure(DeserializationConfig.Feature f, boolean state) {
+ public ObjectMapper configure(DeserializationFeature f, boolean state) {
_deserializationConfig = state ?
_deserializationConfig.with(f) : _deserializationConfig.without(f);
return this;
@@ -1133,7 +1137,7 @@
* Method for enabling specified {@link MapperConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper enable(MapperConfig.Feature... f) {
+ public ObjectMapper enable(MapperFeature... f) {
_deserializationConfig = _deserializationConfig.with(f);
_serializationConfig = _serializationConfig.with(f);
return this;
@@ -1143,7 +1147,7 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper disable(MapperConfig.Feature... f) {
+ public ObjectMapper disable(MapperFeature... f) {
_deserializationConfig = _deserializationConfig.without(f);
_serializationConfig = _serializationConfig.without(f);
return this;
@@ -1153,7 +1157,7 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper enable(DeserializationConfig.Feature feature) {
+ public ObjectMapper enable(DeserializationFeature feature) {
_deserializationConfig = _deserializationConfig.with(feature);
return this;
}
@@ -1162,8 +1166,8 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper enable(DeserializationConfig.Feature first,
- DeserializationConfig.Feature... f) {
+ public ObjectMapper enable(DeserializationFeature first,
+ DeserializationFeature... f) {
_deserializationConfig = _deserializationConfig.with(first, f);
return this;
}
@@ -1172,7 +1176,7 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper disable(DeserializationConfig.Feature feature) {
+ public ObjectMapper disable(DeserializationFeature feature) {
_deserializationConfig = _deserializationConfig.without(feature);
return this;
}
@@ -1181,8 +1185,8 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper disable(DeserializationConfig.Feature first,
- DeserializationConfig.Feature... f) {
+ public ObjectMapper disable(DeserializationFeature first,
+ DeserializationFeature... f) {
_deserializationConfig = _deserializationConfig.without(first, f);
return this;
}
@@ -1191,7 +1195,7 @@
* Method for enabling specified {@link DeserializationConfig} feature.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper enable(SerializationConfig.Feature f) {
+ public ObjectMapper enable(SerializationFeature f) {
_serializationConfig = _serializationConfig.with(f);
return this;
}
@@ -1200,8 +1204,8 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper enable(SerializationConfig.Feature first,
- SerializationConfig.Feature... f) {
+ public ObjectMapper enable(SerializationFeature first,
+ SerializationFeature... f) {
_serializationConfig = _serializationConfig.with(first, f);
return this;
}
@@ -1210,7 +1214,7 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper disable(SerializationConfig.Feature f) {
+ public ObjectMapper disable(SerializationFeature f) {
_serializationConfig = _serializationConfig.without(f);
return this;
}
@@ -1219,8 +1223,8 @@
* Method for enabling specified {@link DeserializationConfig} features.
* Modifies and returns this instance; no new object is created.
*/
- public ObjectMapper disable(SerializationConfig.Feature first,
- SerializationConfig.Feature... f) {
+ public ObjectMapper disable(SerializationFeature first,
+ SerializationFeature... f) {
_serializationConfig = _serializationConfig.without(first, f);
return this;
}
@@ -1229,7 +1233,7 @@
* Method for checking whether given Mapper
* feature is enabled.
*/
- public boolean isEnabled(MapperConfig.Feature f) {
+ public boolean isEnabled(MapperFeature f) {
// ok to use either one, should be kept in sync
return _serializationConfig.isEnabled(f);
}
@@ -1238,7 +1242,7 @@
* Method for checking whether given serialization-specific
* feature is enabled.
*/
- public boolean isEnabled(SerializationConfig.Feature f) {
+ public boolean isEnabled(SerializationFeature f) {
return _serializationConfig.isEnabled(f);
}
@@ -1246,7 +1250,7 @@
* Method for checking whether given deserialization-specific
* feature is enabled.
*/
- public boolean isEnabled(DeserializationConfig.Feature f) {
+ public boolean isEnabled(DeserializationFeature f) {
return _deserializationConfig.isEnabled(f);
}
@@ -1553,11 +1557,11 @@
throws IOException, JsonGenerationException, JsonMappingException
{
SerializationConfig config = getSerializationConfig();
- if (config.isEnabled(SerializationConfig.Feature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
+ if (config.isEnabled(SerializationFeature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
_writeCloseableValue(jgen, value, config);
} else {
_serializerProvider(config).serializeValue(jgen, value);
- if (config.isEnabled(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE)) {
+ if (config.isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE)) {
jgen.flush();
}
}
@@ -1572,7 +1576,7 @@
{
SerializationConfig config = getSerializationConfig();
_serializerProvider(config).serializeValue(jgen, rootNode);
- if (config.isEnabled(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE)) {
+ if (config.isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE)) {
jgen.flush();
}
}
@@ -1979,7 +1983,7 @@
* specified feature enabled (compared to settings that this
* mapper instance has).
*/
- public ObjectWriter writer(SerializationConfig.Feature feature) {
+ public ObjectWriter writer(SerializationFeature feature) {
return new ObjectWriter(this, getSerializationConfig().with(feature));
}
@@ -1988,8 +1992,8 @@
* specified features enabled (compared to settings that this
* mapper instance has).
*/
- public ObjectWriter writer(SerializationConfig.Feature first,
- SerializationConfig.Feature... other) {
+ public ObjectWriter writer(SerializationFeature first,
+ SerializationFeature... other) {
return new ObjectWriter(this, getSerializationConfig().with(first, other));
}
@@ -2106,7 +2110,7 @@
* Note that the resulting instance is NOT usable as is,
* without defining expected value type.
*/
- public ObjectReader reader(DeserializationConfig.Feature feature) {
+ public ObjectReader reader(DeserializationFeature feature) {
return new ObjectReader(this, getDeserializationConfig().with(feature));
}
@@ -2117,8 +2121,8 @@
* Note that the resulting instance is NOT usable as is,
* without defining expected value type.
*/
- public ObjectReader reader(DeserializationConfig.Feature first,
- DeserializationConfig.Feature... other) {
+ public ObjectReader reader(DeserializationFeature first,
+ DeserializationFeature... other) {
return new ObjectReader(this, getDeserializationConfig().with(first, other));
}
@@ -2266,7 +2270,7 @@
try {
// inlined 'writeValue' with minor changes:
// first: disable wrapping when writing
- SerializationConfig config = getSerializationConfig().without(SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ SerializationConfig config = getSerializationConfig().without(SerializationFeature.WRAP_ROOT_VALUE);
// no need to check for closing of TokenBuffer
_serializerProvider(config).serializeValue(buf, fromValue);
@@ -2343,11 +2347,11 @@
{
SerializationConfig cfg = getSerializationConfig();
// [JACKSON-96]: allow enabling pretty printing for ObjectMapper directly
- if (cfg.isEnabled(SerializationConfig.Feature.INDENT_OUTPUT)) {
+ if (cfg.isEnabled(SerializationFeature.INDENT_OUTPUT)) {
jgen.useDefaultPrettyPrinter();
}
// [JACKSON-282]: consider Closeable
- if (cfg.isEnabled(SerializationConfig.Feature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
+ if (cfg.isEnabled(SerializationFeature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
_configAndWriteCloseable(jgen, value, cfg);
return;
}
@@ -2372,11 +2376,11 @@
throws IOException, JsonGenerationException, JsonMappingException
{
SerializationConfig cfg = getSerializationConfig().withView(viewClass);
- if (cfg.isEnabled(SerializationConfig.Feature.INDENT_OUTPUT)) {
+ if (cfg.isEnabled(SerializationFeature.INDENT_OUTPUT)) {
jgen.useDefaultPrettyPrinter();
}
// [JACKSON-282]: consider Closeable
- if (cfg.isEnabled(SerializationConfig.Feature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
+ if (cfg.isEnabled(SerializationFeature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
_configAndWriteCloseable(jgen, value, cfg);
return;
}
@@ -2437,7 +2441,7 @@
Closeable toClose = (Closeable) value;
try {
_serializerProvider(cfg).serializeValue(jgen, value);
- if (cfg.isEnabled(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE)) {
+ if (cfg.isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE)) {
jgen.flush();
}
Closeable tmpToClose = toClose;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ObjectReader.java b/src/main/java/com/fasterxml/jackson/databind/ObjectReader.java
index 0aa2ae8..bffb613 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ObjectReader.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ObjectReader.java
@@ -10,7 +10,8 @@
import com.fasterxml.jackson.core.type.ResolvedType;
import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.DatabindVersion;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.node.NullNode;
import com.fasterxml.jackson.databind.node.TreeTraversingParser;
@@ -212,7 +213,7 @@
* Method for constructing a new reader instance that is configured
* with specified feature enabled.
*/
- public ObjectReader with(DeserializationConfig.Feature feature)
+ public ObjectReader with(DeserializationFeature feature)
{
DeserializationConfig newConfig = _config.with(feature);
return (newConfig == _config) ? this : new ObjectReader(this, newConfig);
@@ -222,8 +223,8 @@
* Method for constructing a new reader instance that is configured
* with specified features enabled.
*/
- public ObjectReader with(DeserializationConfig.Feature first,
- DeserializationConfig.Feature... other)
+ public ObjectReader with(DeserializationFeature first,
+ DeserializationFeature... other)
{
DeserializationConfig newConfig = _config.with(first, other);
return (newConfig == _config) ? this : new ObjectReader(this, newConfig);
@@ -233,7 +234,7 @@
* Method for constructing a new reader instance that is configured
* with specified features enabled.
*/
- public ObjectReader withFeatures(DeserializationConfig.Feature... features)
+ public ObjectReader withFeatures(DeserializationFeature... features)
{
DeserializationConfig newConfig = _config.withFeatures(features);
return (newConfig == _config) ? this : new ObjectReader(this, newConfig);
@@ -243,7 +244,7 @@
* Method for constructing a new reader instance that is configured
* with specified feature disabled.
*/
- public ObjectReader without(DeserializationConfig.Feature feature)
+ public ObjectReader without(DeserializationFeature feature)
{
DeserializationConfig newConfig = _config.without(feature);
return (newConfig == _config) ? this : new ObjectReader(this, newConfig);
@@ -253,8 +254,8 @@
* Method for constructing a new reader instance that is configured
* with specified features disabled.
*/
- public ObjectReader without(DeserializationConfig.Feature first,
- DeserializationConfig.Feature... other)
+ public ObjectReader without(DeserializationFeature first,
+ DeserializationFeature... other)
{
DeserializationConfig newConfig = _config.without(first, other);
return (newConfig == _config) ? this : new ObjectReader(this, newConfig);
@@ -264,7 +265,7 @@
* Method for constructing a new reader instance that is configured
* with specified features disabled.
*/
- public ObjectReader withoutFeatures(DeserializationConfig.Feature... features)
+ public ObjectReader withoutFeatures(DeserializationFeature... features)
{
DeserializationConfig newConfig = _config.withoutFeatures(features);
return (newConfig == _config) ? this : new ObjectReader(this, newConfig);
@@ -417,11 +418,11 @@
/**********************************************************
*/
- public boolean isEnabled(DeserializationConfig.Feature f) {
+ public boolean isEnabled(DeserializationFeature f) {
return _config.isEnabled(f);
}
- public boolean isEnabled(MapperConfig.Feature f) {
+ public boolean isEnabled(MapperFeature f) {
return _config.isEnabled(f);
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ObjectWriter.java b/src/main/java/com/fasterxml/jackson/databind/ObjectWriter.java
index 1768396..8a9ca81 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ObjectWriter.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ObjectWriter.java
@@ -9,7 +9,8 @@
import com.fasterxml.jackson.core.util.ByteArrayBuilder;
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.core.util.MinimalPrettyPrinter;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.DatabindVersion;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.SerializerFactory;
import com.fasterxml.jackson.databind.type.TypeFactory;
@@ -186,7 +187,7 @@
* Method for constructing a new instance that is configured
* with specified feature enabled.
*/
- public ObjectWriter with(SerializationConfig.Feature feature)
+ public ObjectWriter with(SerializationFeature feature)
{
SerializationConfig newConfig = _config.with(feature);
return (newConfig == _config) ? this : new ObjectWriter(this, newConfig);
@@ -196,8 +197,8 @@
* Method for constructing a new instance that is configured
* with specified features enabled.
*/
- public ObjectWriter with(SerializationConfig.Feature first,
- SerializationConfig.Feature... other)
+ public ObjectWriter with(SerializationFeature first,
+ SerializationFeature... other)
{
SerializationConfig newConfig = _config.with(first, other);
return (newConfig == _config) ? this : new ObjectWriter(this, newConfig);
@@ -207,7 +208,7 @@
* Method for constructing a new instance that is configured
* with specified features enabled.
*/
- public ObjectWriter withFeatures(SerializationConfig.Feature... features)
+ public ObjectWriter withFeatures(SerializationFeature... features)
{
SerializationConfig newConfig = _config.withFeatures(features);
return (newConfig == _config) ? this : new ObjectWriter(this, newConfig);
@@ -217,7 +218,7 @@
* Method for constructing a new instance that is configured
* with specified feature enabled.
*/
- public ObjectWriter without(SerializationConfig.Feature feature)
+ public ObjectWriter without(SerializationFeature feature)
{
SerializationConfig newConfig = _config.without(feature);
return (newConfig == _config) ? this : new ObjectWriter(this, newConfig);
@@ -227,8 +228,8 @@
* Method for constructing a new instance that is configured
* with specified features enabled.
*/
- public ObjectWriter without(SerializationConfig.Feature first,
- SerializationConfig.Feature... other)
+ public ObjectWriter without(SerializationFeature first,
+ SerializationFeature... other)
{
SerializationConfig newConfig = _config.without(first, other);
return (newConfig == _config) ? this : new ObjectWriter(this, newConfig);
@@ -238,7 +239,7 @@
* Method for constructing a new instance that is configured
* with specified features enabled.
*/
- public ObjectWriter withoutFeatures(SerializationConfig.Feature... features)
+ public ObjectWriter withoutFeatures(SerializationFeature... features)
{
SerializationConfig newConfig = _config.withoutFeatures(features);
return (newConfig == _config) ? this : new ObjectWriter(this, newConfig);
@@ -370,11 +371,11 @@
/**********************************************************
*/
- public boolean isEnabled(SerializationConfig.Feature f) {
+ public boolean isEnabled(SerializationFeature f) {
return _config.isEnabled(f);
}
- public boolean isEnabled(MapperConfig.Feature f) {
+ public boolean isEnabled(MapperFeature f) {
return _config.isEnabled(f);
}
@@ -403,7 +404,7 @@
public void writeValue(JsonGenerator jgen, Object value)
throws IOException, JsonGenerationException, JsonMappingException
{
- if (_config.isEnabled(SerializationConfig.Feature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
+ if (_config.isEnabled(SerializationFeature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
_writeCloseableValue(jgen, value, _config);
} else {
if (_rootType == null) {
@@ -411,7 +412,7 @@
} else {
_serializerProvider(_config).serializeValue(jgen, value, _rootType);
}
- if (_config.isEnabled(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE)) {
+ if (_config.isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE)) {
jgen.flush();
}
}
@@ -538,7 +539,7 @@
if (_prettyPrinter != null) {
PrettyPrinter pp = _prettyPrinter;
jgen.setPrettyPrinter((pp == NULL_PRETTY_PRINTER) ? null : pp);
- } else if (_config.isEnabled(SerializationConfig.Feature.INDENT_OUTPUT)) {
+ } else if (_config.isEnabled(SerializationFeature.INDENT_OUTPUT)) {
jgen.useDefaultPrettyPrinter();
}
// [JACKSON-520]: add support for pass-through schema:
@@ -546,7 +547,7 @@
jgen.setSchema(_schema);
}
// [JACKSON-282]: consider Closeable
- if (_config.isEnabled(SerializationConfig.Feature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
+ if (_config.isEnabled(SerializationFeature.CLOSE_CLOSEABLE) && (value instanceof Closeable)) {
_configAndWriteCloseable(jgen, value, _config);
return;
}
@@ -626,7 +627,7 @@
} else {
_serializerProvider(cfg).serializeValue(jgen, value, _rootType);
}
- if (_config.isEnabled(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE)) {
+ if (_config.isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE)) {
jgen.flush();
}
Closeable tmpToClose = toClose;
diff --git a/src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java b/src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java
deleted file mode 100644
index 7a3622e..0000000
--- a/src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java
+++ /dev/null
@@ -1,718 +0,0 @@
-package com.fasterxml.jackson.databind;
-
-import java.text.DateFormat;
-import java.util.*;
-
-import com.fasterxml.jackson.annotation.*;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.databind.cfg.*;
-import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
-import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
-import com.fasterxml.jackson.databind.jsontype.SubtypeResolver;
-import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
-import com.fasterxml.jackson.databind.ser.FilterProvider;
-import com.fasterxml.jackson.databind.ser.SerializerFactory;
-import com.fasterxml.jackson.databind.type.ClassKey;
-import com.fasterxml.jackson.databind.type.TypeFactory;
-
-/**
- * Object that contains baseline configuration for serialization
- * process. An instance is owned by {@link ObjectMapper}, which
- * passes an immutable instance for serialization process to
- * {@link SerializerProvider} and {@link SerializerFactory}
- * (either directly, or through {@link ObjectWriter}.
- *<p>
- * Note that instances are considered immutable and as such no copies
- * should need to be created (there are some implementation details
- * with respect to mix-in annotations; where this is guaranteed as
- * long as caller follow "copy-then-use" pattern)
- */
-public final class SerializationConfig
- extends MapperConfigBase<SerializationConfig.Feature, SerializationConfig>
-{
- /**
- * Enumeration that defines simple on/off features that affect
- * the way Java objects are serialized.
- *<p>
- * Note that features can be set both through
- * {@link ObjectMapper} (as sort of defaults) and through
- * {@link ObjectWriter}.
- * In first case these defaults must follow "config-then-use" patterns
- * (i.e. defined once, not changed afterwards); all per-call
- * changes must be done using {@link ObjectWriter}.
- */
- public enum Feature implements ConfigFeature
- {
- /*
- /******************************************************
- /* Generic output features
- /******************************************************
- */
-
- /**
- * Feature that can be enabled to make root value (usually JSON
- * Object but can be any type) wrapped within a single property
- * JSON object, where key as the "root name", as determined by
- * annotation introspector (esp. for JAXB that uses
- * <code>@XmlRootElement.name</code>) or fallback (non-qualified
- * class name).
- * Feature is mostly intended for JAXB compatibility.
- *<p>
- * Feature is enabled by default.
- */
- WRAP_ROOT_VALUE(false),
-
- /**
- * Feature that allows enabling (or disabling) indentation
- * for the underlying generator, using the default pretty
- * printer (see
- * {@link com.fasterxml.jackson.core.JsonGenerator#useDefaultPrettyPrinter}
- * for details).
- *<p>
- * Note that this only affects cases where
- * {@link com.fasterxml.jackson.core.JsonGenerator}
- * is constructed implicitly by ObjectMapper: if explicit
- * generator is passed, its configuration is not changed.
- *<p>
- * Also note that if you want to configure details of indentation,
- * you need to directly configure the generator: there is a
- * method to use any <code>PrettyPrinter</code> instance.
- * This feature will only allow using the default implementation.
- *<p>
- * Feature is enabled by default.
- */
- INDENT_OUTPUT(false),
-
- /*
- /******************************************************
- /* Error handling features
- /******************************************************
- */
-
- /**
- * Feature that determines what happens when no accessors are
- * found for a type (and there are no annotations to indicate
- * it is meant to be serialized). If enabled (default), an
- * exception is thrown to indicate these as non-serializable
- * types; if disabled, they are serialized as empty Objects,
- * i.e. without any properties.
- *<p>
- * Note that empty types that this feature has only effect on
- * those "empty" beans that do not have any recognized annotations
- * (like <code>@JsonSerialize</code>): ones that do have annotations
- * do not result in an exception being thrown.
- *<p>
- * Feature is enabled by default.
- */
- FAIL_ON_EMPTY_BEANS(true),
-
- /**
- * Feature that determines whether Jackson code should catch
- * and wrap {@link Exception}s (but never {@link Error}s!)
- * to add additional information about
- * location (within input) of problem or not. If enabled,
- * most exceptions will be caught and re-thrown (exception
- * specifically being that {@link java.io.IOException}s may be passed
- * as is, since they are declared as throwable); this can be
- * convenient both in that all exceptions will be checked and
- * declared, and so there is more contextual information.
- * However, sometimes calling application may just want "raw"
- * unchecked exceptions passed as is.
- *<p>
- *<p>
- * Feature is enabled by default.
- */
- WRAP_EXCEPTIONS(true),
-
- /*
- /******************************************************
- /* Output life cycle features
- /******************************************************
- */
-
- /**
- * Feature that determines whether <code>close</code> method of
- * serialized <b>root level</b> objects (ones for which <code>ObjectMapper</code>'s
- * writeValue() (or equivalent) method is called)
- * that implement {@link java.io.Closeable}
- * is called after serialization or not. If enabled, <b>close()</b> will
- * be called after serialization completes (whether succesfully, or
- * due to an error manifested by an exception being thrown). You can
- * think of this as sort of "finally" processing.
- *<p>
- * NOTE: only affects behavior with <b>root</b> objects, and not other
- * objects reachable from the root object. Put another way, only one
- * call will be made for each 'writeValue' call.
- *<p>
- * Feature is disabled by default.
- */
- CLOSE_CLOSEABLE(false),
-
- /**
- * Feature that determines whether <code>JsonGenerator.flush()</code> is
- * called after <code>writeValue()</code> method <b>that takes JsonGenerator
- * as an argument</b> completes (i.e. does NOT affect methods
- * that use other destinations); same for methods in {@link ObjectWriter}.
- * This usually makes sense; but there are cases where flushing
- * should not be forced: for example when underlying stream is
- * compressing and flush() causes compression state to be flushed
- * (which occurs with some compression codecs).
- *<p>
- * Feature is enabled by default.
- */
- FLUSH_AFTER_WRITE_VALUE(true),
-
- /*
- /******************************************************
- /* Data type - specific serialization configuration
- /******************************************************
- */
-
- /**
- * Feature that determines whether {@link java.util.Date} values
- * (and Date-based things like {@link java.util.Calendar}s) are to be
- * serialized as numeric timestamps (true; the default),
- * or as something else (usually textual representation).
- * If textual representation is used, the actual format is
- * one returned by a call to {@link #getDateFormat}.
- *<p>
- * Note: whether this feature affects handling of other date-related
- * types depend on handlers of those types, although ideally they
- * should use this feature
- *<p>
- * Note: whether {@link java.util.Map} keys are serialized as Strings
- * or not is controlled using {@link #WRITE_DATE_KEYS_AS_TIMESTAMPS}.
- *<p>
- * Feature is enabled by default.
- */
- WRITE_DATES_AS_TIMESTAMPS(true),
-
- /**
- * Feature that determines whether {@link java.util.Date}s
- * (and sub-types) used as {@link java.util.Map} keys are serialized
- * as timestamps or not (if not, will be serialized as textual
- * values).
- *<p>
- * Default value is 'false', meaning that Date-valued Map keys are serialized
- * as textual (ISO-8601) values.
- *<p>
- * Feature is disabled by default.
- */
- WRITE_DATE_KEYS_AS_TIMESTAMPS(false),
-
- /**
- * Feature that determines how type <code>char[]</code> is serialized:
- * when enabled, will be serialized as an explict JSON array (with
- * single-character Strings as values); when disabled, defaults to
- * serializing them as Strings (which is more compact).
- *<p>
- * Feature is disabled by default.
- */
- WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS(false),
-
- /**
- * Feature that determines standard serialization mechanism used for
- * Enum values: if enabled, return value of <code>Enum.toString()</code>
- * is used; if disabled, return value of <code>Enum.name()</code> is used.
- *<p>
- * Note: this feature should usually have same value
- * as {@link DeserializationConfig.Feature#READ_ENUMS_USING_TO_STRING}.
- *<p>
- * Feature is disabled by default.
- */
- WRITE_ENUMS_USING_TO_STRING(false),
-
- /**
- * Feature that determines whethere Java Enum values are serialized
- * as numbers (true), or textual values (false). If textual values are
- * used, other settings are also considered.
- * If this feature is enabled,
- * return value of <code>Enum.ordinal()</code>
- * (an integer) will be used as the serialization.
- *<p>
- * Note that this feature has precedence over {@link #WRITE_ENUMS_USING_TO_STRING},
- * which is only considered if this feature is set to false.
- *<p>
- * Feature is disabled by default.
- */
- WRITE_ENUMS_USING_INDEX(false),
-
- /**
- * Feature that determines whether Map entries with null values are
- * to be serialized (true) or not (false).
- *<p>
- * For further details, check out [JACKSON-314]
- *<p>
- * Feature is enabled by default.
- */
- WRITE_NULL_MAP_VALUES(true),
-
- /**
- * Feature that determines whether Container properties (POJO properties
- * with declared value of Collection or array; i.e. things that produce JSON
- * arrays) that are empty (have no elements)
- * will be serialized as empty JSON arrays (true), or suppressed from output (false).
- *<p>
- * Note that this does not change behavior of {@link java.util.Map}s, or
- * "Collection-like" types.
- *<p>
- * Feature is enabled by default.
- */
- WRITE_EMPTY_JSON_ARRAYS(true)
-
- ;
-
- private final boolean _defaultState;
-
- private Feature(boolean defaultState) {
- _defaultState = defaultState;
- }
-
- @Override
- public boolean enabledByDefault() { return _defaultState; }
-
- @Override
- public int getMask() { return (1 << ordinal()); }
- }
-
- /*
- /**********************************************************
- /* Serialization settings
- /**********************************************************
- */
-
- /**
- * Set of features enabled; actual type (kind of features)
- * depends on sub-classes.
- */
- protected final int _serFeatures;
-
- /**
- * Which Bean/Map properties are to be included in serialization?
- * Default settings is to include all regardless of value; can be
- * changed to only include non-null properties, or properties
- * with non-default values.
- */
- protected JsonInclude.Include _serializationInclusion = null;
-
- /**
- * Object used for resolving filter ids to filter instances.
- * Non-null if explicitly defined; null by default.
- */
- protected final FilterProvider _filterProvider;
-
- /*
- /**********************************************************
- /* Life-cycle, constructors
- /**********************************************************
- */
-
- /**
- * Constructor used by ObjectMapper to create default configuration object instance.
- */
- public SerializationConfig(BaseSettings base,
- SubtypeResolver str, Map<ClassKey,Class<?>> mixins)
- {
- super(base, str, mixins);
- _serFeatures = collectFeatureDefaults(SerializationConfig.Feature.class);
- _filterProvider = null;
- }
-
- private SerializationConfig(SerializationConfig src, SubtypeResolver str)
- {
- super(src, str);
- _serFeatures = src._serFeatures;
- _serializationInclusion = src._serializationInclusion;
- _filterProvider = src._filterProvider;
- }
-
- private SerializationConfig(SerializationConfig src,
- int mapperFeatures, int serFeatures)
- {
- super(src, mapperFeatures);
- _serFeatures = serFeatures;
- _serializationInclusion = src._serializationInclusion;
- _filterProvider = src._filterProvider;
- }
-
- private SerializationConfig(SerializationConfig src, BaseSettings base)
- {
- super(src, base);
- _serFeatures = src._serFeatures;
- _serializationInclusion = src._serializationInclusion;
- _filterProvider = src._filterProvider;
- }
-
- private SerializationConfig(SerializationConfig src, FilterProvider filters)
- {
- super(src);
- _serFeatures = src._serFeatures;
- _serializationInclusion = src._serializationInclusion;
- _filterProvider = filters;
- }
-
- private SerializationConfig(SerializationConfig src, Class<?> view)
- {
- super(src, view);
- _serFeatures = src._serFeatures;
- _serializationInclusion = src._serializationInclusion;
- _filterProvider = src._filterProvider;
- }
-
- private SerializationConfig(SerializationConfig src, JsonInclude.Include incl)
- {
- super(src);
- _serFeatures = src._serFeatures;
- _serializationInclusion = incl;
- _filterProvider = src._filterProvider;
- }
-
- private SerializationConfig(SerializationConfig src, String rootName)
- {
- super(src, rootName);
- _serFeatures = src._serFeatures;
- _serializationInclusion = src._serializationInclusion;
- _filterProvider = src._filterProvider;
- }
-
- /*
- /**********************************************************
- /* Life-cycle, factory methods from MapperConfig
- /**********************************************************
- */
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features enabled.
- */
- @Override
- public SerializationConfig with(MapperConfig.Feature... features)
- {
- int newMapperFlags = _mapperFeatures;
- for (MapperConfig.Feature f : features) {
- newMapperFlags |= f.getMask();
- }
- return (newMapperFlags == _mapperFeatures) ? this
- : new SerializationConfig(this, newMapperFlags, _serFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features disabled.
- */
- @Override
- public SerializationConfig without(MapperConfig.Feature... features)
- {
- int newMapperFlags = _mapperFeatures;
- for (MapperConfig.Feature f : features) {
- newMapperFlags &= ~f.getMask();
- }
- return (newMapperFlags == _mapperFeatures) ? this
- : new SerializationConfig(this, newMapperFlags, _serFeatures);
- }
-
- @Override
- public SerializationConfig withAnnotationIntrospector(AnnotationIntrospector ai) {
- return _withBase(_base.withAnnotationIntrospector(ai));
- }
-
- @Override
- public SerializationConfig withAppendedAnnotationIntrospector(AnnotationIntrospector ai) {
- return _withBase(_base.withAppendedAnnotationIntrospector(ai));
- }
-
- @Override
- public SerializationConfig withInsertedAnnotationIntrospector(AnnotationIntrospector ai) {
- return _withBase(_base.withInsertedAnnotationIntrospector(ai));
- }
-
- @Override
- public SerializationConfig withClassIntrospector(ClassIntrospector ci) {
- return _withBase(_base.withClassIntrospector(ci));
- }
-
- /**
- * In addition to constructing instance with specified date format,
- * will enable or disable <code>Feature.WRITE_DATES_AS_TIMESTAMPS</code>
- * (enable if format set as null; disable if non-null)
- */
- @Override
- public SerializationConfig withDateFormat(DateFormat df) {
- SerializationConfig cfg = new SerializationConfig(this, _base.withDateFormat(df));
- // Also need to toggle this feature based on existence of date format:
- if (df == null) {
- cfg = cfg.with(Feature.WRITE_DATES_AS_TIMESTAMPS);
- } else {
- cfg = cfg.without(Feature.WRITE_DATES_AS_TIMESTAMPS);
- }
- return cfg;
- }
-
- @Override
- public SerializationConfig withHandlerInstantiator(HandlerInstantiator hi) {
- return _withBase(_base.withHandlerInstantiator(hi));
- }
-
- @Override
- public SerializationConfig withPropertyNamingStrategy(PropertyNamingStrategy pns) {
- return _withBase(_base.withPropertyNamingStrategy(pns));
- }
-
- @Override
- public SerializationConfig withRootName(String rootName) {
- if (rootName == null) {
- if (_rootName == null) {
- return this;
- }
- } else if (rootName.equals(_rootName)) {
- return this;
- }
- return new SerializationConfig(this, rootName);
- }
-
- @Override
- public SerializationConfig withSubtypeResolver(SubtypeResolver str) {
- return (str == _subtypeResolver)? this : new SerializationConfig(this, str);
- }
-
- @Override
- public SerializationConfig withTypeFactory(TypeFactory tf) {
- return _withBase(_base.withTypeFactory(tf));
- }
-
- @Override
- public SerializationConfig withTypeResolverBuilder(TypeResolverBuilder<?> trb) {
- return _withBase(_base.withTypeResolverBuilder(trb));
- }
-
- public SerializationConfig withView(Class<?> view) {
- return (_view == view) ? this : new SerializationConfig(this, view);
- }
-
- @Override
- public SerializationConfig withVisibilityChecker(VisibilityChecker<?> vc) {
- return _withBase(_base.withVisibilityChecker(vc));
- }
-
- @Override
- public SerializationConfig withVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility) {
- return _withBase(_base.withVisibility(forMethod, visibility));
- }
-
- private final SerializationConfig _withBase(BaseSettings newBase) {
- return (_base == newBase) ? this : new SerializationConfig(this, newBase);
- }
-
- /*
- /**********************************************************
- /* Life-cycle, SerializationConfig specific factory methods
- /**********************************************************
- */
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified feature enabled.
- */
- public SerializationConfig with(Feature feature)
- {
- int newSerFeatures = _serFeatures | feature.getMask();
- return (newSerFeatures == _serFeatures) ? this
- : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features enabled.
- */
- public SerializationConfig with(Feature first, Feature... features)
- {
- int newSerFeatures = _serFeatures | first.getMask();
- for (Feature f : features) {
- newSerFeatures |= f.getMask();
- }
- return (newSerFeatures == _serFeatures) ? this
- : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features enabled.
- */
- public SerializationConfig withFeatures(Feature... features)
- {
- int newSerFeatures = _serFeatures;
- for (Feature f : features) {
- newSerFeatures |= f.getMask();
- }
- return (newSerFeatures == _serFeatures) ? this
- : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified feature disabled.
- */
- public SerializationConfig without(Feature feature)
- {
- int newSerFeatures = _serFeatures & ~feature.getMask();
- return (newSerFeatures == _serFeatures) ? this
- : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features disabled.
- */
- public SerializationConfig without(Feature first, Feature... features)
- {
- int newSerFeatures = _serFeatures & ~first.getMask();
- for (Feature f : features) {
- newSerFeatures &= ~f.getMask();
- }
- return (newSerFeatures == _serFeatures) ? this
- : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
- }
-
- /**
- * Fluent factory method that will construct and return a new configuration
- * object instance with specified features disabled.
- */
- public SerializationConfig withoutFeatures(Feature... features)
- {
- int newSerFeatures = _serFeatures;
- for (Feature f : features) {
- newSerFeatures &= ~f.getMask();
- }
- return (newSerFeatures == _serFeatures) ? this
- : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
- }
-
- public SerializationConfig withFilters(FilterProvider filterProvider) {
- return (filterProvider == _filterProvider) ? this : new SerializationConfig(this, filterProvider);
- }
-
- public SerializationConfig withSerializationInclusion(JsonInclude.Include incl) {
- return (_serializationInclusion == incl) ? this: new SerializationConfig(this, incl);
- }
-
- /*
- /**********************************************************
- /* MapperConfig implementation/overrides
- /**********************************************************
- */
-
- @Override
- public boolean useRootWrapping()
- {
- if (_rootName != null) { // empty String disables wrapping; non-empty enables
- return (_rootName.length() > 0);
- }
- return isEnabled(SerializationConfig.Feature.WRAP_ROOT_VALUE);
- }
-
- @Override
- public AnnotationIntrospector getAnnotationIntrospector()
- {
- /* 29-Jul-2009, tatu: it's now possible to disable use of
- * annotations; can be done using "no-op" introspector
- */
- if (isEnabled(MapperConfig.Feature.USE_ANNOTATIONS)) {
- return super.getAnnotationIntrospector();
- }
- return AnnotationIntrospector.nopInstance();
- }
-
- /**
- * Accessor for getting bean description that only contains class
- * annotations: useful if no getter/setter/creator information is needed.
- */
- @Override
- public BeanDescription introspectClassAnnotations(JavaType type) {
- return getClassIntrospector().forClassAnnotations(this, type, this);
- }
-
- /**
- * Accessor for getting bean description that only contains immediate class
- * annotations: ones from the class, and its direct mix-in, if any, but
- * not from super types.
- */
- @Override
- public BeanDescription introspectDirectClassAnnotations(JavaType type) {
- return getClassIntrospector().forDirectClassAnnotations(this, type, this);
- }
-
- @Override
- public VisibilityChecker<?> getDefaultVisibilityChecker()
- {
- VisibilityChecker<?> vchecker = super.getDefaultVisibilityChecker();
- if (!isEnabled(MapperConfig.Feature.AUTO_DETECT_GETTERS)) {
- vchecker = vchecker.withGetterVisibility(Visibility.NONE);
- }
- // then global overrides (disabling)
- if (!isEnabled(MapperConfig.Feature.AUTO_DETECT_IS_GETTERS)) {
- vchecker = vchecker.withIsGetterVisibility(Visibility.NONE);
- }
- if (!isEnabled(MapperConfig.Feature.AUTO_DETECT_FIELDS)) {
- vchecker = vchecker.withFieldVisibility(Visibility.NONE);
- }
- return vchecker;
- }
-
- /*
- /**********************************************************
- /* Configuration: other
- /**********************************************************
- */
-
- public final boolean isEnabled(SerializationConfig.Feature f) {
- return (_serFeatures & f.getMask()) != 0;
- }
-
- public final int getSerializationFeatures() {
- return _serFeatures;
- }
-
- public JsonInclude.Include getSerializationInclusion()
- {
- if (_serializationInclusion != null) {
- return _serializationInclusion;
- }
- return JsonInclude.Include.ALWAYS;
- }
-
- /**
- * Method for getting provider used for locating filters given
- * id (which is usually provided with filter annotations).
- * Will be null if no provided was set for {@link ObjectWriter}
- * (or if serialization directly called from {@link ObjectMapper})
- */
- public FilterProvider getFilterProvider() {
- return _filterProvider;
- }
-
- /*
- /**********************************************************
- /* Introspection methods
- /**********************************************************
- */
-
- /**
- * Method that will introspect full bean properties for the purpose
- * of building a bean serializer
- */
- @SuppressWarnings("unchecked")
- public <T extends BeanDescription> T introspect(JavaType type) {
- return (T) getClassIntrospector().forSerialization(this, type, this);
- }
-
- /*
- /**********************************************************
- /* Debug support
- /**********************************************************
- */
-
- @Override public String toString()
- {
- return "[SerializationConfig: flags=0x"+Integer.toHexString(_serFeatures)+"]";
- }
-}
diff --git a/src/main/java/com/fasterxml/jackson/databind/SerializationFeature.java b/src/main/java/com/fasterxml/jackson/databind/SerializationFeature.java
new file mode 100644
index 0000000..171bf94
--- /dev/null
+++ b/src/main/java/com/fasterxml/jackson/databind/SerializationFeature.java
@@ -0,0 +1,248 @@
+package com.fasterxml.jackson.databind;
+
+import com.fasterxml.jackson.databind.cfg.ConfigFeature;
+
+/**
+ * Enumeration that defines simple on/off features that affect
+ * the way Java objects are serialized.
+ *<p>
+ * Note that features can be set both through
+ * {@link ObjectMapper} (as sort of defaults) and through
+ * {@link ObjectWriter}.
+ * In first case these defaults must follow "config-then-use" patterns
+ * (i.e. defined once, not changed afterwards); all per-call
+ * changes must be done using {@link ObjectWriter}.
+ */
+public enum SerializationFeature implements ConfigFeature
+{
+ /*
+ /******************************************************
+ /* Generic output features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that can be enabled to make root value (usually JSON
+ * Object but can be any type) wrapped within a single property
+ * JSON object, where key as the "root name", as determined by
+ * annotation introspector (esp. for JAXB that uses
+ * <code>@XmlRootElement.name</code>) or fallback (non-qualified
+ * class name).
+ * SerializationFeature is mostly intended for JAXB compatibility.
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ WRAP_ROOT_VALUE(false),
+
+ /**
+ * SerializationFeature that allows enabling (or disabling) indentation
+ * for the underlying generator, using the default pretty
+ * printer (see
+ * {@link com.fasterxml.jackson.core.JsonGenerator#useDefaultPrettyPrinter}
+ * for details).
+ *<p>
+ * Note that this only affects cases where
+ * {@link com.fasterxml.jackson.core.JsonGenerator}
+ * is constructed implicitly by ObjectMapper: if explicit
+ * generator is passed, its configuration is not changed.
+ *<p>
+ * Also note that if you want to configure details of indentation,
+ * you need to directly configure the generator: there is a
+ * method to use any <code>PrettyPrinter</code> instance.
+ * This feature will only allow using the default implementation.
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ INDENT_OUTPUT(false),
+
+ /*
+ /******************************************************
+ /* Error handling features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines what happens when no accessors are
+ * found for a type (and there are no annotations to indicate
+ * it is meant to be serialized). If enabled (default), an
+ * exception is thrown to indicate these as non-serializable
+ * types; if disabled, they are serialized as empty Objects,
+ * i.e. without any properties.
+ *<p>
+ * Note that empty types that this feature has only effect on
+ * those "empty" beans that do not have any recognized annotations
+ * (like <code>@JsonSerialize</code>): ones that do have annotations
+ * do not result in an exception being thrown.
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ FAIL_ON_EMPTY_BEANS(true),
+
+ /**
+ * SerializationFeature that determines whether Jackson code should catch
+ * and wrap {@link Exception}s (but never {@link Error}s!)
+ * to add additional information about
+ * location (within input) of problem or not. If enabled,
+ * most exceptions will be caught and re-thrown (exception
+ * specifically being that {@link java.io.IOException}s may be passed
+ * as is, since they are declared as throwable); this can be
+ * convenient both in that all exceptions will be checked and
+ * declared, and so there is more contextual information.
+ * However, sometimes calling application may just want "raw"
+ * unchecked exceptions passed as is.
+ *<p>
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ WRAP_EXCEPTIONS(true),
+
+ /*
+ /******************************************************
+ /* Output life cycle features
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines whether <code>close</code> method of
+ * serialized <b>root level</b> objects (ones for which <code>ObjectMapper</code>'s
+ * writeValue() (or equivalent) method is called)
+ * that implement {@link java.io.Closeable}
+ * is called after serialization or not. If enabled, <b>close()</b> will
+ * be called after serialization completes (whether succesfully, or
+ * due to an error manifested by an exception being thrown). You can
+ * think of this as sort of "finally" processing.
+ *<p>
+ * NOTE: only affects behavior with <b>root</b> objects, and not other
+ * objects reachable from the root object. Put another way, only one
+ * call will be made for each 'writeValue' call.
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ CLOSE_CLOSEABLE(false),
+
+ /**
+ * SerializationFeature that determines whether <code>JsonGenerator.flush()</code> is
+ * called after <code>writeValue()</code> method <b>that takes JsonGenerator
+ * as an argument</b> completes (i.e. does NOT affect methods
+ * that use other destinations); same for methods in {@link ObjectWriter}.
+ * This usually makes sense; but there are cases where flushing
+ * should not be forced: for example when underlying stream is
+ * compressing and flush() causes compression state to be flushed
+ * (which occurs with some compression codecs).
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ FLUSH_AFTER_WRITE_VALUE(true),
+
+ /*
+ /******************************************************
+ /* Data type - specific serialization configuration
+ /******************************************************
+ */
+
+ /**
+ * SerializationFeature that determines whether {@link java.util.Date} values
+ * (and Date-based things like {@link java.util.Calendar}s) are to be
+ * serialized as numeric timestamps (true; the default),
+ * or as something else (usually textual representation).
+ * If textual representation is used, the actual format is
+ * one returned by a call to {@link #getDateFormat}.
+ *<p>
+ * Note: whether this feature affects handling of other date-related
+ * types depend on handlers of those types, although ideally they
+ * should use this feature
+ *<p>
+ * Note: whether {@link java.util.Map} keys are serialized as Strings
+ * or not is controlled using {@link #WRITE_DATE_KEYS_AS_TIMESTAMPS}.
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ WRITE_DATES_AS_TIMESTAMPS(true),
+
+ /**
+ * SerializationFeature that determines whether {@link java.util.Date}s
+ * (and sub-types) used as {@link java.util.Map} keys are serialized
+ * as timestamps or not (if not, will be serialized as textual
+ * values).
+ *<p>
+ * Default value is 'false', meaning that Date-valued Map keys are serialized
+ * as textual (ISO-8601) values.
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ WRITE_DATE_KEYS_AS_TIMESTAMPS(false),
+
+ /**
+ * SerializationFeature that determines how type <code>char[]</code> is serialized:
+ * when enabled, will be serialized as an explict JSON array (with
+ * single-character Strings as values); when disabled, defaults to
+ * serializing them as Strings (which is more compact).
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS(false),
+
+ /**
+ * SerializationFeature that determines standard serialization mechanism used for
+ * Enum values: if enabled, return value of <code>Enum.toString()</code>
+ * is used; if disabled, return value of <code>Enum.name()</code> is used.
+ *<p>
+ * Note: this feature should usually have same value
+ * as {@link DeserializationConfig.DeserializationFeature#READ_ENUMS_USING_TO_STRING}.
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ WRITE_ENUMS_USING_TO_STRING(false),
+
+ /**
+ * SerializationFeature that determines whethere Java Enum values are serialized
+ * as numbers (true), or textual values (false). If textual values are
+ * used, other settings are also considered.
+ * If this feature is enabled,
+ * return value of <code>Enum.ordinal()</code>
+ * (an integer) will be used as the serialization.
+ *<p>
+ * Note that this feature has precedence over {@link #WRITE_ENUMS_USING_TO_STRING},
+ * which is only considered if this feature is set to false.
+ *<p>
+ * SerializationFeature is disabled by default.
+ */
+ WRITE_ENUMS_USING_INDEX(false),
+
+ /**
+ * SerializationFeature that determines whether Map entries with null values are
+ * to be serialized (true) or not (false).
+ *<p>
+ * For further details, check out [JACKSON-314]
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ WRITE_NULL_MAP_VALUES(true),
+
+ /**
+ * SerializationFeature that determines whether Container properties (POJO properties
+ * with declared value of Collection or array; i.e. things that produce JSON
+ * arrays) that are empty (have no elements)
+ * will be serialized as empty JSON arrays (true), or suppressed from output (false).
+ *<p>
+ * Note that this does not change behavior of {@link java.util.Map}s, or
+ * "Collection-like" types.
+ *<p>
+ * SerializationFeature is enabled by default.
+ */
+ WRITE_EMPTY_JSON_ARRAYS(true)
+
+ ;
+
+ private final boolean _defaultState;
+
+ private SerializationFeature(boolean defaultState) {
+ _defaultState = defaultState;
+ }
+
+ @Override
+ public boolean enabledByDefault() { return _defaultState; }
+
+ @Override
+ public int getMask() { return (1 << ordinal()); }
+}
\ No newline at end of file
diff --git a/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java b/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java
index 985a97b..777f4fc 100644
--- a/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java
+++ b/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java
@@ -8,7 +8,8 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.annotation.NoClass;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.introspect.Annotated;
import com.fasterxml.jackson.databind.jsonschema.JsonSchema;
import com.fasterxml.jackson.databind.jsonschema.SchemaAware;
@@ -295,7 +296,7 @@
String rootName = _config.getRootName();
if (rootName == null) { // not explicitly specified
// [JACKSON-163]
- wrap = _config.isEnabled(SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ wrap = _config.isEnabled(SerializationFeature.WRAP_ROOT_VALUE);
if (wrap) {
jgen.writeStartObject();
jgen.writeFieldName(_rootNames.findRootName(value.getClass(), _config));
@@ -358,7 +359,7 @@
// root value, not reached via property:
ser = findTypedValueSerializer(rootType, true, null);
// [JACKSON-163]
- wrap = _config.isEnabled(SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ wrap = _config.isEnabled(SerializationFeature.WRAP_ROOT_VALUE);
if (wrap) {
jgen.writeStartObject();
jgen.writeFieldName(_rootNames.findRootName(rootType, _config));
@@ -437,7 +438,7 @@
* getConfig().isEnabled(feature);
*</pre>
*/
- public final boolean isEnabled(MapperConfig.Feature feature) {
+ public final boolean isEnabled(MapperFeature feature) {
return _config.isEnabled(feature);
}
@@ -449,7 +450,7 @@
* getConfig().isEnabled(feature);
*</pre>
*/
- public final boolean isEnabled(SerializationConfig.Feature feature) {
+ public final boolean isEnabled(SerializationFeature feature) {
return _config.isEnabled(feature);
}
@@ -922,7 +923,7 @@
throws IOException, JsonProcessingException
{
// [JACKSON-87]: Support both numeric timestamps and textual
- if (isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)) {
+ if (isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
jgen.writeNumber(timestamp);
} else {
if (_dateFormat == null) {
@@ -944,7 +945,7 @@
throws IOException, JsonProcessingException
{
// [JACKSON-87]: Support both numeric timestamps and textual
- if (isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)) {
+ if (isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
jgen.writeNumber(date.getTime());
} else {
if (_dateFormat == null) {
@@ -958,13 +959,13 @@
/**
* Method that will handle serialization of Dates used as {@link java.util.Map} keys,
- * based on {@link SerializationConfig.Feature#WRITE_DATE_KEYS_AS_TIMESTAMPS}
+ * based on {@link SerializationFeature#WRITE_DATE_KEYS_AS_TIMESTAMPS}
* value (and if using textual representation, configured date format)
*/
public void defaultSerializeDateKey(long timestamp, JsonGenerator jgen)
throws IOException, JsonProcessingException
{
- if (isEnabled(SerializationConfig.Feature.WRITE_DATE_KEYS_AS_TIMESTAMPS)) {
+ if (isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS)) {
jgen.writeFieldName(String.valueOf(timestamp));
} else {
if (_dateFormat == null) {
@@ -978,13 +979,13 @@
/**
* Method that will handle serialization of Dates used as {@link java.util.Map} keys,
- * based on {@link SerializationConfig.Feature#WRITE_DATE_KEYS_AS_TIMESTAMPS}
+ * based on {@link SerializationFeature#WRITE_DATE_KEYS_AS_TIMESTAMPS}
* value (and if using textual representation, configured date format)
*/
public void defaultSerializeDateKey(Date date, JsonGenerator jgen)
throws IOException, JsonProcessingException
{
- if (isEnabled(SerializationConfig.Feature.WRITE_DATE_KEYS_AS_TIMESTAMPS)) {
+ if (isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS)) {
jgen.writeFieldName(String.valueOf(date.getTime()));
} else {
if (_dateFormat == null) {
diff --git a/src/main/java/com/fasterxml/jackson/databind/cfg/BaseSettings.java b/src/main/java/com/fasterxml/jackson/databind/cfg/BaseSettings.java
index f43724e..9325251 100644
--- a/src/main/java/com/fasterxml/jackson/databind/cfg/BaseSettings.java
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/BaseSettings.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
diff --git a/src/main/java/com/fasterxml/jackson/databind/cfg/ConfigFeature.java b/src/main/java/com/fasterxml/jackson/databind/cfg/ConfigFeature.java
index 010fcfb..d38d321 100644
--- a/src/main/java/com/fasterxml/jackson/databind/cfg/ConfigFeature.java
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/ConfigFeature.java
@@ -1,7 +1,7 @@
package com.fasterxml.jackson.databind.cfg;
/**
- * Interface that actual Feature enumerations used by
+ * Interface that actual SerializationFeature enumerations used by
* {@link MapperConfig} implementations must implement.
* Necessary since enums can not be extended using normal
* inheritance, but can implement interfaces
diff --git a/src/main/java/com/fasterxml/jackson/databind/DatabindVersion.java b/src/main/java/com/fasterxml/jackson/databind/cfg/DatabindVersion.java
similarity index 89%
rename from src/main/java/com/fasterxml/jackson/databind/DatabindVersion.java
rename to src/main/java/com/fasterxml/jackson/databind/cfg/DatabindVersion.java
index 2b67614..0b565d4 100644
--- a/src/main/java/com/fasterxml/jackson/databind/DatabindVersion.java
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/DatabindVersion.java
@@ -1,4 +1,4 @@
-package com.fasterxml.jackson.databind;
+package com.fasterxml.jackson.databind.cfg;
import com.fasterxml.jackson.core.util.VersionUtil;
diff --git a/src/main/java/com/fasterxml/jackson/databind/cfg/DeserializationConfig.java b/src/main/java/com/fasterxml/jackson/databind/cfg/DeserializationConfig.java
new file mode 100644
index 0000000..a490675
--- /dev/null
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/DeserializationConfig.java
@@ -0,0 +1,497 @@
+package com.fasterxml.jackson.databind.cfg;
+
+import java.text.DateFormat;
+import java.util.*;
+
+import com.fasterxml.jackson.annotation.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.BeanDescription;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
+import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
+import com.fasterxml.jackson.databind.introspect.NopAnnotationIntrospector;
+import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
+import com.fasterxml.jackson.databind.jsontype.SubtypeResolver;
+import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.type.ClassKey;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+import com.fasterxml.jackson.databind.util.LinkedNode;
+
+/**
+ * Object that contains baseline configuration for deserialization
+ * process. An instance is owned by {@link ObjectMapper}, which
+ * passes an immutable instance to be used for deserialization process.
+ *<p>
+ * Note that instances are considered immutable and as such no copies
+ * should need to be created (there are some implementation details
+ * with respect to mix-in annotations; where this is guaranteed as
+ * long as caller follow "copy-then-use" pattern)
+ */
+public final class DeserializationConfig
+ extends MapperConfigBase<DeserializationFeature, DeserializationConfig>
+{
+ /**
+ * Set of features enabled; actual type (kind of features)
+ * depends on sub-classes.
+ */
+ protected final int _deserFeatures;
+
+ /**
+ * Linked list that contains all registered problem handlers.
+ * Implementation as front-added linked list allows for sharing
+ * of the list (tail) without copying the list.
+ */
+ protected final LinkedNode<DeserializationProblemHandler> _problemHandlers;
+
+ /**
+ * Factory used for constructing {@link com.fasterxml.jackson.core.JsonNode} instances.
+ */
+ protected final JsonNodeFactory _nodeFactory;
+
+ /*
+ /**********************************************************
+ /* Life-cycle, constructors
+ /**********************************************************
+ */
+
+ /**
+ * Constructor used by ObjectMapper to create default configuration object instance.
+ */
+ public DeserializationConfig(BaseSettings base,
+ SubtypeResolver str, Map<ClassKey,Class<?>> mixins)
+ {
+ super(base, str, mixins);
+ _deserFeatures = collectFeatureDefaults(DeserializationFeature.class);
+ _nodeFactory = JsonNodeFactory.instance;
+ _problemHandlers = null;
+ }
+
+ /**
+ * Copy constructor used to create a non-shared instance with given mix-in
+ * annotation definitions and subtype resolver.
+ */
+ private DeserializationConfig(DeserializationConfig src, SubtypeResolver str)
+ {
+ super(src, str);
+ _deserFeatures = src._deserFeatures;
+ _nodeFactory = src._nodeFactory;
+ _problemHandlers = src._problemHandlers;
+ }
+
+ private DeserializationConfig(DeserializationConfig src,
+ int mapperFeatures, int deserFeatures)
+ {
+ super(src, mapperFeatures);
+ _deserFeatures = deserFeatures;
+ _nodeFactory = src._nodeFactory;
+ _problemHandlers = src._problemHandlers;
+ }
+
+ private DeserializationConfig(DeserializationConfig src, BaseSettings base)
+ {
+ super(src, base);
+ _deserFeatures = src._deserFeatures;
+ _nodeFactory = src._nodeFactory;
+ _problemHandlers = src._problemHandlers;
+ }
+
+ private DeserializationConfig(DeserializationConfig src, JsonNodeFactory f)
+ {
+ super(src);
+ _deserFeatures = src._deserFeatures;
+ _problemHandlers = src._problemHandlers;
+ _nodeFactory = f;
+ }
+
+ private DeserializationConfig(DeserializationConfig src,
+ LinkedNode<DeserializationProblemHandler> problemHandlers)
+ {
+ super(src);
+ _deserFeatures = src._deserFeatures;
+ _problemHandlers = problemHandlers;
+ _nodeFactory = src._nodeFactory;
+ }
+
+ private DeserializationConfig(DeserializationConfig src, String rootName)
+ {
+ super(src, rootName);
+ _deserFeatures = src._deserFeatures;
+ _problemHandlers = src._problemHandlers;
+ _nodeFactory = src._nodeFactory;
+ }
+
+ private DeserializationConfig(DeserializationConfig src, Class<?> view)
+ {
+ super(src, view);
+ _deserFeatures = src._deserFeatures;
+ _problemHandlers = src._problemHandlers;
+ _nodeFactory = src._nodeFactory;
+ }
+
+ /*
+ /**********************************************************
+ /* Life-cycle, factory methods from MapperConfig
+ /**********************************************************
+ */
+
+ @Override
+ public DeserializationConfig with(MapperFeature... features)
+ {
+ int newMapperFlags = _mapperFeatures;
+ for (MapperFeature f : features) {
+ newMapperFlags |= f.getMask();
+ }
+ return (newMapperFlags == _mapperFeatures) ? this :
+ new DeserializationConfig(this, newMapperFlags, _deserFeatures);
+ }
+
+ @Override
+ public DeserializationConfig without(MapperFeature... features)
+ {
+ int newMapperFlags = _mapperFeatures;
+ for (MapperFeature f : features) {
+ newMapperFlags &= ~f.getMask();
+ }
+ return (newMapperFlags == _mapperFeatures) ? this :
+ new DeserializationConfig(this, newMapperFlags, _deserFeatures);
+ }
+
+ @Override
+ public DeserializationConfig withClassIntrospector(ClassIntrospector ci) {
+ return _withBase(_base.withClassIntrospector(ci));
+ }
+
+ @Override
+ public DeserializationConfig withAnnotationIntrospector(AnnotationIntrospector ai) {
+ return _withBase(_base.withAnnotationIntrospector(ai));
+ }
+
+ @Override
+ public DeserializationConfig withVisibilityChecker(VisibilityChecker<?> vc) {
+ return _withBase(_base.withVisibilityChecker(vc));
+ }
+
+ @Override
+ public DeserializationConfig withVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility) {
+ return _withBase( _base.withVisibility(forMethod, visibility));
+ }
+
+ @Override
+ public DeserializationConfig withTypeResolverBuilder(TypeResolverBuilder<?> trb) {
+ return _withBase(_base.withTypeResolverBuilder(trb));
+ }
+
+ @Override
+ public DeserializationConfig withSubtypeResolver(SubtypeResolver str) {
+ return (_subtypeResolver == str) ? this : new DeserializationConfig(this, str);
+ }
+
+ @Override
+ public DeserializationConfig withPropertyNamingStrategy(PropertyNamingStrategy pns) {
+ return _withBase(_base.withPropertyNamingStrategy(pns));
+ }
+
+ @Override
+ public DeserializationConfig withRootName(String rootName) {
+ if (rootName == null) {
+ if (_rootName == null) {
+ return this;
+ }
+ } else if (rootName.equals(_rootName)) {
+ return this;
+ }
+ return new DeserializationConfig(this, rootName);
+ }
+
+ @Override
+ public DeserializationConfig withTypeFactory(TypeFactory tf) {
+ return _withBase( _base.withTypeFactory(tf));
+ }
+
+ @Override
+ public DeserializationConfig withDateFormat(DateFormat df) {
+ return _withBase(_base.withDateFormat(df));
+ }
+
+ @Override
+ public DeserializationConfig withHandlerInstantiator(HandlerInstantiator hi) {
+ return _withBase(_base.withHandlerInstantiator(hi));
+ }
+
+ @Override
+ public DeserializationConfig withInsertedAnnotationIntrospector(AnnotationIntrospector ai) {
+ return _withBase(_base.withInsertedAnnotationIntrospector(ai));
+ }
+
+ @Override
+ public DeserializationConfig withAppendedAnnotationIntrospector(AnnotationIntrospector ai) {
+ return _withBase(_base.withAppendedAnnotationIntrospector(ai));
+ }
+
+ @Override
+ public DeserializationConfig withView(Class<?> view) {
+ return (_view == view) ? this : new DeserializationConfig(this, view);
+ }
+
+ private final DeserializationConfig _withBase(BaseSettings newBase) {
+ return (_base == newBase) ? this : new DeserializationConfig(this, newBase);
+ }
+
+ /*
+ /**********************************************************
+ /* Life-cycle, deserialization-specific factory methods
+ /**********************************************************
+ */
+
+ /**
+ * Fluent factory method that will construct a new instance with
+ * specified {@link JsonNodeFactory}
+ */
+ public DeserializationConfig withNodeFactory(JsonNodeFactory f) {
+ if (_nodeFactory == f) {
+ return this;
+ }
+ return new DeserializationConfig(this, f);
+ }
+
+ /**
+ * Method that can be used to add a handler that can (try to)
+ * resolve non-fatal deserialization problems.
+ */
+ public DeserializationConfig withHandler(DeserializationProblemHandler h)
+ {
+ // Sanity check: let's prevent adding same handler multiple times
+ if (LinkedNode.contains(_problemHandlers, h)) {
+ return this;
+ }
+ return new DeserializationConfig(this,
+ new LinkedNode<DeserializationProblemHandler>(h, _problemHandlers));
+ }
+
+ /**
+ * Method for removing all configured problem handlers; usually done to replace
+ * existing handler(s) with different one(s)
+ */
+ public DeserializationConfig withNoProblemHandlers() {
+ if (_problemHandlers == null) {
+ return this;
+ }
+ return new DeserializationConfig(this,
+ (LinkedNode<DeserializationProblemHandler>) null);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features enabled.
+ */
+ public DeserializationConfig with(DeserializationFeature feature)
+ {
+ int newDeserFeatures = (_deserFeatures | feature.getMask());
+ return (newDeserFeatures == _deserFeatures) ? this :
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features enabled.
+ */
+ public DeserializationConfig with(DeserializationFeature first,
+ DeserializationFeature... features)
+ {
+ int newDeserFeatures = _deserFeatures | first.getMask();
+ for (DeserializationFeature f : features) {
+ newDeserFeatures |= f.getMask();
+ }
+ return (newDeserFeatures == _deserFeatures) ? this :
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features enabled.
+ */
+ public DeserializationConfig withFeatures(DeserializationFeature... features)
+ {
+ int newDeserFeatures = _deserFeatures;
+ for (DeserializationFeature f : features) {
+ newDeserFeatures |= f.getMask();
+ }
+ return (newDeserFeatures == _deserFeatures) ? this :
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified feature disabled.
+ */
+ public DeserializationConfig without(DeserializationFeature feature)
+ {
+ int newDeserFeatures = _deserFeatures & ~feature.getMask();
+ return (newDeserFeatures == _deserFeatures) ? this :
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features disabled.
+ */
+ public DeserializationConfig without(DeserializationFeature first,
+ DeserializationFeature... features)
+ {
+ int newDeserFeatures = _deserFeatures & ~first.getMask();
+ for (DeserializationFeature f : features) {
+ newDeserFeatures &= ~f.getMask();
+ }
+ return (newDeserFeatures == _deserFeatures) ? this :
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features disabled.
+ */
+ public DeserializationConfig withoutFeatures(DeserializationFeature... features)
+ {
+ int newDeserFeatures = _deserFeatures;
+ for (DeserializationFeature f : features) {
+ newDeserFeatures &= ~f.getMask();
+ }
+ return (newDeserFeatures == _deserFeatures) ? this :
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures);
+ }
+
+ /*
+ /**********************************************************
+ /* MapperConfig implementation
+ /**********************************************************
+ */
+
+ /**
+ * Method for getting {@link AnnotationIntrospector} configured
+ * to introspect annotation values used for configuration.
+ */
+ @Override
+ public AnnotationIntrospector getAnnotationIntrospector()
+ {
+ /* 29-Jul-2009, tatu: it's now possible to disable use of
+ * annotations; can be done using "no-op" introspector
+ */
+ if (isEnabled(MapperFeature.USE_ANNOTATIONS)) {
+ return super.getAnnotationIntrospector();
+ }
+ return NopAnnotationIntrospector.instance;
+ }
+
+ @Override
+ public boolean useRootWrapping()
+ {
+ if (_rootName != null) { // empty String disables wrapping; non-empty enables
+ return (_rootName.length() > 0);
+ }
+ return isEnabled(DeserializationFeature.UNWRAP_ROOT_VALUE);
+ }
+
+ /**
+ * Accessor for getting bean description that only contains class
+ * annotations: useful if no getter/setter/creator information is needed.
+ */
+ @Override
+ public BeanDescription introspectClassAnnotations(JavaType type) {
+ return getClassIntrospector().forClassAnnotations(this, type, this);
+ }
+
+ /**
+ * Accessor for getting bean description that only contains immediate class
+ * annotations: ones from the class, and its direct mix-in, if any, but
+ * not from super types.
+ */
+ @Override
+ public BeanDescription introspectDirectClassAnnotations(JavaType type) {
+ return getClassIntrospector().forDirectClassAnnotations(this, type, this);
+ }
+
+ @Override
+ public VisibilityChecker<?> getDefaultVisibilityChecker()
+ {
+ VisibilityChecker<?> vchecker = super.getDefaultVisibilityChecker();
+ if (!isEnabled(MapperFeature.AUTO_DETECT_SETTERS)) {
+ vchecker = vchecker.withSetterVisibility(Visibility.NONE);
+ }
+ if (!isEnabled(MapperFeature.AUTO_DETECT_CREATORS)) {
+ vchecker = vchecker.withCreatorVisibility(Visibility.NONE);
+ }
+ if (!isEnabled(MapperFeature.AUTO_DETECT_FIELDS)) {
+ vchecker = vchecker.withFieldVisibility(Visibility.NONE);
+ }
+ return vchecker;
+ }
+
+ public final boolean isEnabled(DeserializationFeature f) {
+ return (_deserFeatures & f.getMask()) != 0;
+ }
+
+ /*
+ /**********************************************************
+ /* Other configuration
+ /**********************************************************
+ */
+
+ public final int getDeserializationFeatures() {
+ return _deserFeatures;
+ }
+
+ /**
+ * Method for getting head of the problem handler chain. May be null,
+ * if no handlers have been added.
+ */
+ public LinkedNode<DeserializationProblemHandler> getProblemHandlers() {
+ return _problemHandlers;
+ }
+
+ /**
+ * Method called during deserialization if Base64 encoded content
+ * needs to be decoded. Default version just returns default Jackson
+ * uses, which is modified-mime which does not add linefeeds (because
+ * those would have to be escaped in JSON strings).
+ */
+ public Base64Variant getBase64Variant() {
+ return Base64Variants.getDefaultVariant();
+ }
+
+ public final JsonNodeFactory getNodeFactory() {
+ return _nodeFactory;
+ }
+
+ /*
+ /**********************************************************
+ /* Introspection methods
+ /**********************************************************
+ */
+
+ /**
+ * Method that will introspect full bean properties for the purpose
+ * of building a bean deserializer
+ *
+ * @param type Type of class to be introspected
+ */
+ @SuppressWarnings("unchecked")
+ public <T extends BeanDescription> T introspect(JavaType type) {
+ return (T) getClassIntrospector().forDeserialization(this, type, this);
+ }
+
+ /**
+ * Method that will introspect subset of bean properties needed to
+ * construct bean instance.
+ */
+ @SuppressWarnings("unchecked")
+ public <T extends BeanDescription> T introspectForCreation(JavaType type) {
+ return (T) getClassIntrospector().forCreation(this, type, this);
+ }
+}
diff --git a/src/main/java/com/fasterxml/jackson/databind/HandlerInstantiator.java b/src/main/java/com/fasterxml/jackson/databind/cfg/HandlerInstantiator.java
similarity index 95%
rename from src/main/java/com/fasterxml/jackson/databind/HandlerInstantiator.java
rename to src/main/java/com/fasterxml/jackson/databind/cfg/HandlerInstantiator.java
index c38dc3f..dc4b4d6 100644
--- a/src/main/java/com/fasterxml/jackson/databind/HandlerInstantiator.java
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/HandlerInstantiator.java
@@ -1,6 +1,8 @@
-package com.fasterxml.jackson.databind;
+package com.fasterxml.jackson.databind.cfg;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.KeyDeserializer;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.introspect.Annotated;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
diff --git a/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfig.java b/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfig.java
index cae2cc2..c951716 100644
--- a/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfig.java
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfig.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.introspect.Annotated;
import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
@@ -22,7 +21,7 @@
* accessors to mode-independent configuration settings
* and such.
* In addition, shared features are defined
- * in {@link MapperConfig.Feature}
+ * in {@link MapperFeature}
*<p>
* Small part of implementation is included here by aggregating
* {@link BaseSettings} instance that contains configuration
@@ -32,246 +31,6 @@
implements ClassIntrospector.MixInResolver
{
/**
- * Enumeration that defines simple on/off features to set
- * for {@link ObjectMapper}, and accessible (but NOT mutable!)
- * via {@link SerializationConfig} and {@link DeserializationConfig}.
- * Note that in addition to being only mutable via {@link ObjectMapper},
- * changes only take effect when done <b>before any serialization or
- * deserialization</b> calls -- that is, caller must follow
- * "configure-then-use" pattern.
- */
- public enum Feature implements ConfigFeature
- {
- /*
- /******************************************************
- /* Introspection features
- /******************************************************
- */
-
- /**
- * Feature that determines whether annotation introspection
- * is used for configuration; if enabled, configured
- * {@link AnnotationIntrospector} will be used: if disabled,
- * no annotations are considered.
- *<p>
- * Feature is enabled by default.
- */
- USE_ANNOTATIONS(true),
-
- /**
- * Feature that determines whether "creator" methods are
- * automatically detected by consider public constructors,
- * and static single argument methods with name "valueOf".
- * If disabled, only methods explicitly annotated are considered
- * creator methods (except for the no-arg default constructor which
- * is always considered a factory method).
- *<p>
- * Note that this feature has lower precedence than per-class
- * annotations, and is only used if there isn't more granular
- * configuration available.
- *<P>
- * Feature is enabled by default.
- */
- AUTO_DETECT_CREATORS(true),
-
- /**
- * Feature that determines whether non-static fields are recognized as
- * properties.
- * If yes, then all public member fields
- * are considered as properties. If disabled, only fields explicitly
- * annotated are considered property fields.
- *<p>
- * Note that this feature has lower precedence than per-class
- * annotations, and is only used if there isn't more granular
- * configuration available.
- *<p>
- * Feature is enabled by default.
- */
- AUTO_DETECT_FIELDS(true),
-
- /**
- * Feature that determines whether regualr "getter" methods are
- * automatically detected based on standard Bean naming convention
- * or not. If yes, then all public zero-argument methods that
- * start with prefix "get"
- * are considered as getters.
- * If disabled, only methods explicitly annotated are considered getters.
- *<p>
- * Note that since version 1.3, this does <b>NOT</b> include
- * "is getters" (see {@link #AUTO_DETECT_IS_GETTERS} for details)
- *<p>
- * Note that this feature has lower precedence than per-class
- * annotations, and is only used if there isn't more granular
- * configuration available.
- *<p>
- * Feature is enabled by default.
- */
- AUTO_DETECT_GETTERS(true),
-
- /**
- * Feature that determines whether "is getter" methods are
- * automatically detected based on standard Bean naming convention
- * or not. If yes, then all public zero-argument methods that
- * start with prefix "is", and whose return type is boolean
- * are considered as "is getters".
- * If disabled, only methods explicitly annotated are considered getters.
- *<p>
- * Note that this feature has lower precedence than per-class
- * annotations, and is only used if there isn't more granular
- * configuration available.
- *<p>
- * Feature is enabled by default.
- */
- AUTO_DETECT_IS_GETTERS(true),
-
- /**
- * Feature that determines whether "setter" methods are
- * automatically detected based on standard Bean naming convention
- * or not. If yes, then all public one-argument methods that
- * start with prefix "set"
- * are considered setters. If disabled, only methods explicitly
- * annotated are considered setters.
- *<p>
- * Note that this feature has lower precedence than per-class
- * annotations, and is only used if there isn't more granular
- * configuration available.
- *<P>
- * Feature is enabled by default.
- */
- AUTO_DETECT_SETTERS(true),
-
- /**
- * Feature that determines whether getters (getter methods)
- * can be auto-detected if there is no matching mutator (setter,
- * constructor parameter or field) or not: if set to true,
- * only getters that match a mutator are auto-discovered; if
- * false, all auto-detectable getters can be discovered.
- *<p>
- * Feature is disabled by default.
- */
- REQUIRE_SETTERS_FOR_GETTERS(false),
-
- /**
- * Feature that determines whether otherwise regular "getter"
- * methods (but only ones that handle Collections and Maps,
- * not getters of other type)
- * can be used for purpose of getting a reference to a Collection
- * and Map to modify the property, without requiring a setter
- * method.
- * This is similar to how JAXB framework sets Collections and
- * Maps: no setter is involved, just setter.
- *<p>
- * Note that such getters-as-setters methods have lower
- * precedence than setters, so they are only used if no
- * setter is found for the Map/Collection property.
- *<p>
- * Feature is enabled by default.
- */
- USE_GETTERS_AS_SETTERS(true),
-
- /**
- * Feature that determines whether method and field access
- * modifier settings can be overridden when accessing
- * properties. If enabled, method
- * {@link java.lang.reflect.AccessibleObject#setAccessible}
- * may be called to enable access to otherwise unaccessible
- * objects.
- *<p>
- * Feature is enabled by default.
- */
- CAN_OVERRIDE_ACCESS_MODIFIERS(true),
-
- /*
- /******************************************************
- /* Type-handling features
- /******************************************************
- */
-
- /**
- * Feature that determines whether the type detection for
- * serialization should be using actual dynamic runtime type,
- * or declared static type.
- * Note that deserialization always uses declared static types
- * since no runtime types are available (as we are creating
- * instances after using type information).
- *<p>
- * This global default value can be overridden at class, method
- * or field level by using {@link JsonSerialize#typing} annotation
- * property.
- *<p>
- * Feature is disabled by default which means that dynamic runtime types
- * are used (instead of declared static types) for serialization.
- */
- USE_STATIC_TYPING(false),
-
- /*
- /******************************************************
- /* View-related features
- /******************************************************
- */
-
- /**
- * Feature that determines whether properties that have no view
- * annotations are included in JSON serialization views (see
- * {@link com.fasterxml.jackson.annotation.JsonView} for more
- * details on JSON Views).
- * If enabled, non-annotated properties will be included;
- * when disabled, they will be excluded. So this feature
- * changes between "opt-in" (feature disabled) and
- * "opt-out" (feature enabled) modes.
- *<p>
- * Default value is enabled, meaning that non-annotated
- * properties are included in all views if there is no
- * {@link com.fasterxml.jackson.annotation.JsonView} annotation.
- *<p>
- * Feature is enabled by default.
- */
- DEFAULT_VIEW_INCLUSION(true),
-
- /*
- /******************************************************
- /* Generic output features
- /******************************************************
- */
-
- /**
- * Feature that defines default property serialization order used
- * for POJO fields (note: does <b>not</b> apply to {@link java.util.Map}
- * serialization!):
- * if enabled, default ordering is alphabetic (similar to
- * how {@link com.fasterxml.jackson.annotation.JsonPropertyOrder#alphabetic()}
- * works); if disabled, order is unspecified (based on what JDK gives
- * us, which may be declaration order, but is not guaranteed).
- *<p>
- * Note that this is just the default behavior, and can be overridden by
- * explicit overrides in classes.
- *<p>
- * Feature is disabled by default.
- */
- SORT_PROPERTIES_ALPHABETICALLY(false)
-
- ;
-
- private final boolean _defaultState;
-
- private Feature(boolean defaultState) {
- _defaultState = defaultState;
- }
-
- @Override
- public boolean enabledByDefault() { return _defaultState; }
-
- @Override
- public int getMask() { return (1 << ordinal()); }
- }
-
- /*
- /**********************************************************
- /* Simple immutable basic settings
- /**********************************************************
- */
-
- /**
* Set of shared mapper features enabled.
*/
protected final int _mapperFeatures;
@@ -323,13 +82,13 @@
* Method for constructing and returning a new instance with specified
* mapper features enabled.
*/
- public abstract T with(MapperConfig.Feature... features);
+ public abstract T with(MapperFeature... features);
/**
* Method for constructing and returning a new instance with specified
* mapper features disabled.
*/
- public abstract T without(MapperConfig.Feature... features);
+ public abstract T without(MapperFeature... features);
/*
/**********************************************************
@@ -341,7 +100,7 @@
* Accessor for simple mapper features (which are shared for
* serialization, deserialization)
*/
- public final boolean isEnabled(MapperConfig.Feature f) {
+ public final boolean isEnabled(MapperFeature f) {
return (_mapperFeatures & f.getMask()) != 0;
}
@@ -352,7 +111,7 @@
* @return True if annotation processing is enabled; false if not
*/
public final boolean isAnnotationProcessingEnabled() {
- return isEnabled(MapperConfig.Feature.USE_ANNOTATIONS);
+ return isEnabled(MapperFeature.USE_ANNOTATIONS);
}
/**
@@ -367,7 +126,7 @@
* to override.
*/
public final boolean canOverrideAccessModifiers() {
- return isEnabled(MapperConfig.Feature.CAN_OVERRIDE_ACCESS_MODIFIERS);
+ return isEnabled(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS);
}
/**
@@ -375,7 +134,7 @@
* indicate that properties should be alphabetically ordered or not.
*/
public final boolean shouldSortPropertiesAlphabetically() {
- return isEnabled(MapperConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY);
+ return isEnabled(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY);
}
/**
diff --git a/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfigBase.java b/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfigBase.java
index 4b458dd..a52b3d9 100644
--- a/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfigBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/MapperConfigBase.java
@@ -6,7 +6,7 @@
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.HandlerInstantiator;
+import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
@@ -19,7 +19,7 @@
T extends MapperConfigBase<CFG,T>>
extends MapperConfig<T>
{
- private final static int DEFAULT_MAPPER_FEATURES = collectFeatureDefaults(MapperConfig.Feature.class);
+ private final static int DEFAULT_MAPPER_FEATURES = collectFeatureDefaults(MapperFeature.class);
/*
/**********************************************************
@@ -204,7 +204,7 @@
* Note that when a root name is set to a non-Empty String, this will automatically force use
* of root element wrapping with given name. If empty String passed, will
* disable root name wrapping; and if null used, will instead use
- * <code>Feature</code> to determine if to use wrapping, and annotation
+ * <code>SerializationFeature</code> to determine if to use wrapping, and annotation
* (or default name) for actual root name to use.
*
* @param rootName to use: if null, means "use default" (clear setting);
diff --git a/src/main/java/com/fasterxml/jackson/databind/cfg/SerializationConfig.java b/src/main/java/com/fasterxml/jackson/databind/cfg/SerializationConfig.java
new file mode 100644
index 0000000..c9e9f4a
--- /dev/null
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/SerializationConfig.java
@@ -0,0 +1,475 @@
+package com.fasterxml.jackson.databind.cfg;
+
+import java.text.DateFormat;
+import java.util.*;
+
+import com.fasterxml.jackson.annotation.*;
+import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
+import com.fasterxml.jackson.databind.BeanDescription;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.introspect.ClassIntrospector;
+import com.fasterxml.jackson.databind.introspect.VisibilityChecker;
+import com.fasterxml.jackson.databind.jsontype.SubtypeResolver;
+import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
+import com.fasterxml.jackson.databind.ser.FilterProvider;
+import com.fasterxml.jackson.databind.ser.SerializerFactory;
+import com.fasterxml.jackson.databind.type.ClassKey;
+import com.fasterxml.jackson.databind.type.TypeFactory;
+
+/**
+ * Object that contains baseline configuration for serialization
+ * process. An instance is owned by {@link ObjectMapper}, which
+ * passes an immutable instance for serialization process to
+ * {@link SerializerProvider} and {@link SerializerFactory}
+ * (either directly, or through {@link ObjectWriter}.
+ *<p>
+ * Note that instances are considered immutable and as such no copies
+ * should need to be created (there are some implementation details
+ * with respect to mix-in annotations; where this is guaranteed as
+ * long as caller follow "copy-then-use" pattern)
+ */
+public final class SerializationConfig
+ extends MapperConfigBase<SerializationFeature, SerializationConfig>
+{
+ /**
+ * Set of features enabled; actual type (kind of features)
+ * depends on sub-classes.
+ */
+ protected final int _serFeatures;
+
+ /**
+ * Which Bean/Map properties are to be included in serialization?
+ * Default settings is to include all regardless of value; can be
+ * changed to only include non-null properties, or properties
+ * with non-default values.
+ */
+ protected JsonInclude.Include _serializationInclusion = null;
+
+ /**
+ * Object used for resolving filter ids to filter instances.
+ * Non-null if explicitly defined; null by default.
+ */
+ protected final FilterProvider _filterProvider;
+
+ /*
+ /**********************************************************
+ /* Life-cycle, constructors
+ /**********************************************************
+ */
+
+ /**
+ * Constructor used by ObjectMapper to create default configuration object instance.
+ */
+ public SerializationConfig(BaseSettings base,
+ SubtypeResolver str, Map<ClassKey,Class<?>> mixins)
+ {
+ super(base, str, mixins);
+ _serFeatures = collectFeatureDefaults(SerializationFeature.class);
+ _filterProvider = null;
+ }
+
+ private SerializationConfig(SerializationConfig src, SubtypeResolver str)
+ {
+ super(src, str);
+ _serFeatures = src._serFeatures;
+ _serializationInclusion = src._serializationInclusion;
+ _filterProvider = src._filterProvider;
+ }
+
+ private SerializationConfig(SerializationConfig src,
+ int mapperFeatures, int serFeatures)
+ {
+ super(src, mapperFeatures);
+ _serFeatures = serFeatures;
+ _serializationInclusion = src._serializationInclusion;
+ _filterProvider = src._filterProvider;
+ }
+
+ private SerializationConfig(SerializationConfig src, BaseSettings base)
+ {
+ super(src, base);
+ _serFeatures = src._serFeatures;
+ _serializationInclusion = src._serializationInclusion;
+ _filterProvider = src._filterProvider;
+ }
+
+ private SerializationConfig(SerializationConfig src, FilterProvider filters)
+ {
+ super(src);
+ _serFeatures = src._serFeatures;
+ _serializationInclusion = src._serializationInclusion;
+ _filterProvider = filters;
+ }
+
+ private SerializationConfig(SerializationConfig src, Class<?> view)
+ {
+ super(src, view);
+ _serFeatures = src._serFeatures;
+ _serializationInclusion = src._serializationInclusion;
+ _filterProvider = src._filterProvider;
+ }
+
+ private SerializationConfig(SerializationConfig src, JsonInclude.Include incl)
+ {
+ super(src);
+ _serFeatures = src._serFeatures;
+ _serializationInclusion = incl;
+ _filterProvider = src._filterProvider;
+ }
+
+ private SerializationConfig(SerializationConfig src, String rootName)
+ {
+ super(src, rootName);
+ _serFeatures = src._serFeatures;
+ _serializationInclusion = src._serializationInclusion;
+ _filterProvider = src._filterProvider;
+ }
+
+ /*
+ /**********************************************************
+ /* Life-cycle, factory methods from MapperConfig
+ /**********************************************************
+ */
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features enabled.
+ */
+ @Override
+ public SerializationConfig with(MapperFeature... features)
+ {
+ int newMapperFlags = _mapperFeatures;
+ for (MapperFeature f : features) {
+ newMapperFlags |= f.getMask();
+ }
+ return (newMapperFlags == _mapperFeatures) ? this
+ : new SerializationConfig(this, newMapperFlags, _serFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features disabled.
+ */
+ @Override
+ public SerializationConfig without(MapperFeature... features)
+ {
+ int newMapperFlags = _mapperFeatures;
+ for (MapperFeature f : features) {
+ newMapperFlags &= ~f.getMask();
+ }
+ return (newMapperFlags == _mapperFeatures) ? this
+ : new SerializationConfig(this, newMapperFlags, _serFeatures);
+ }
+
+ @Override
+ public SerializationConfig withAnnotationIntrospector(AnnotationIntrospector ai) {
+ return _withBase(_base.withAnnotationIntrospector(ai));
+ }
+
+ @Override
+ public SerializationConfig withAppendedAnnotationIntrospector(AnnotationIntrospector ai) {
+ return _withBase(_base.withAppendedAnnotationIntrospector(ai));
+ }
+
+ @Override
+ public SerializationConfig withInsertedAnnotationIntrospector(AnnotationIntrospector ai) {
+ return _withBase(_base.withInsertedAnnotationIntrospector(ai));
+ }
+
+ @Override
+ public SerializationConfig withClassIntrospector(ClassIntrospector ci) {
+ return _withBase(_base.withClassIntrospector(ci));
+ }
+
+ /**
+ * In addition to constructing instance with specified date format,
+ * will enable or disable <code>SerializationFeature.WRITE_DATES_AS_TIMESTAMPS</code>
+ * (enable if format set as null; disable if non-null)
+ */
+ @Override
+ public SerializationConfig withDateFormat(DateFormat df) {
+ SerializationConfig cfg = new SerializationConfig(this, _base.withDateFormat(df));
+ // Also need to toggle this feature based on existence of date format:
+ if (df == null) {
+ cfg = cfg.with(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+ } else {
+ cfg = cfg.without(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+ }
+ return cfg;
+ }
+
+ @Override
+ public SerializationConfig withHandlerInstantiator(HandlerInstantiator hi) {
+ return _withBase(_base.withHandlerInstantiator(hi));
+ }
+
+ @Override
+ public SerializationConfig withPropertyNamingStrategy(PropertyNamingStrategy pns) {
+ return _withBase(_base.withPropertyNamingStrategy(pns));
+ }
+
+ @Override
+ public SerializationConfig withRootName(String rootName) {
+ if (rootName == null) {
+ if (_rootName == null) {
+ return this;
+ }
+ } else if (rootName.equals(_rootName)) {
+ return this;
+ }
+ return new SerializationConfig(this, rootName);
+ }
+
+ @Override
+ public SerializationConfig withSubtypeResolver(SubtypeResolver str) {
+ return (str == _subtypeResolver)? this : new SerializationConfig(this, str);
+ }
+
+ @Override
+ public SerializationConfig withTypeFactory(TypeFactory tf) {
+ return _withBase(_base.withTypeFactory(tf));
+ }
+
+ @Override
+ public SerializationConfig withTypeResolverBuilder(TypeResolverBuilder<?> trb) {
+ return _withBase(_base.withTypeResolverBuilder(trb));
+ }
+
+ public SerializationConfig withView(Class<?> view) {
+ return (_view == view) ? this : new SerializationConfig(this, view);
+ }
+
+ @Override
+ public SerializationConfig withVisibilityChecker(VisibilityChecker<?> vc) {
+ return _withBase(_base.withVisibilityChecker(vc));
+ }
+
+ @Override
+ public SerializationConfig withVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility) {
+ return _withBase(_base.withVisibility(forMethod, visibility));
+ }
+
+ private final SerializationConfig _withBase(BaseSettings newBase) {
+ return (_base == newBase) ? this : new SerializationConfig(this, newBase);
+ }
+
+ /*
+ /**********************************************************
+ /* Life-cycle, SerializationConfig specific factory methods
+ /**********************************************************
+ */
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified feature enabled.
+ */
+ public SerializationConfig with(SerializationFeature feature)
+ {
+ int newSerFeatures = _serFeatures | feature.getMask();
+ return (newSerFeatures == _serFeatures) ? this
+ : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features enabled.
+ */
+ public SerializationConfig with(SerializationFeature first, SerializationFeature... features)
+ {
+ int newSerFeatures = _serFeatures | first.getMask();
+ for (SerializationFeature f : features) {
+ newSerFeatures |= f.getMask();
+ }
+ return (newSerFeatures == _serFeatures) ? this
+ : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features enabled.
+ */
+ public SerializationConfig withFeatures(SerializationFeature... features)
+ {
+ int newSerFeatures = _serFeatures;
+ for (SerializationFeature f : features) {
+ newSerFeatures |= f.getMask();
+ }
+ return (newSerFeatures == _serFeatures) ? this
+ : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified feature disabled.
+ */
+ public SerializationConfig without(SerializationFeature feature)
+ {
+ int newSerFeatures = _serFeatures & ~feature.getMask();
+ return (newSerFeatures == _serFeatures) ? this
+ : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features disabled.
+ */
+ public SerializationConfig without(SerializationFeature first, SerializationFeature... features)
+ {
+ int newSerFeatures = _serFeatures & ~first.getMask();
+ for (SerializationFeature f : features) {
+ newSerFeatures &= ~f.getMask();
+ }
+ return (newSerFeatures == _serFeatures) ? this
+ : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
+ }
+
+ /**
+ * Fluent factory method that will construct and return a new configuration
+ * object instance with specified features disabled.
+ */
+ public SerializationConfig withoutFeatures(SerializationFeature... features)
+ {
+ int newSerFeatures = _serFeatures;
+ for (SerializationFeature f : features) {
+ newSerFeatures &= ~f.getMask();
+ }
+ return (newSerFeatures == _serFeatures) ? this
+ : new SerializationConfig(this, _mapperFeatures, newSerFeatures);
+ }
+
+ public SerializationConfig withFilters(FilterProvider filterProvider) {
+ return (filterProvider == _filterProvider) ? this : new SerializationConfig(this, filterProvider);
+ }
+
+ public SerializationConfig withSerializationInclusion(JsonInclude.Include incl) {
+ return (_serializationInclusion == incl) ? this: new SerializationConfig(this, incl);
+ }
+
+ /*
+ /**********************************************************
+ /* MapperConfig implementation/overrides
+ /**********************************************************
+ */
+
+ @Override
+ public boolean useRootWrapping()
+ {
+ if (_rootName != null) { // empty String disables wrapping; non-empty enables
+ return (_rootName.length() > 0);
+ }
+ return isEnabled(SerializationFeature.WRAP_ROOT_VALUE);
+ }
+
+ @Override
+ public AnnotationIntrospector getAnnotationIntrospector()
+ {
+ /* 29-Jul-2009, tatu: it's now possible to disable use of
+ * annotations; can be done using "no-op" introspector
+ */
+ if (isEnabled(MapperFeature.USE_ANNOTATIONS)) {
+ return super.getAnnotationIntrospector();
+ }
+ return AnnotationIntrospector.nopInstance();
+ }
+
+ /**
+ * Accessor for getting bean description that only contains class
+ * annotations: useful if no getter/setter/creator information is needed.
+ */
+ @Override
+ public BeanDescription introspectClassAnnotations(JavaType type) {
+ return getClassIntrospector().forClassAnnotations(this, type, this);
+ }
+
+ /**
+ * Accessor for getting bean description that only contains immediate class
+ * annotations: ones from the class, and its direct mix-in, if any, but
+ * not from super types.
+ */
+ @Override
+ public BeanDescription introspectDirectClassAnnotations(JavaType type) {
+ return getClassIntrospector().forDirectClassAnnotations(this, type, this);
+ }
+
+ @Override
+ public VisibilityChecker<?> getDefaultVisibilityChecker()
+ {
+ VisibilityChecker<?> vchecker = super.getDefaultVisibilityChecker();
+ if (!isEnabled(MapperFeature.AUTO_DETECT_GETTERS)) {
+ vchecker = vchecker.withGetterVisibility(Visibility.NONE);
+ }
+ // then global overrides (disabling)
+ if (!isEnabled(MapperFeature.AUTO_DETECT_IS_GETTERS)) {
+ vchecker = vchecker.withIsGetterVisibility(Visibility.NONE);
+ }
+ if (!isEnabled(MapperFeature.AUTO_DETECT_FIELDS)) {
+ vchecker = vchecker.withFieldVisibility(Visibility.NONE);
+ }
+ return vchecker;
+ }
+
+ /*
+ /**********************************************************
+ /* Configuration: other
+ /**********************************************************
+ */
+
+ public final boolean isEnabled(SerializationFeature f) {
+ return (_serFeatures & f.getMask()) != 0;
+ }
+
+ public final int getSerializationFeatures() {
+ return _serFeatures;
+ }
+
+ public JsonInclude.Include getSerializationInclusion()
+ {
+ if (_serializationInclusion != null) {
+ return _serializationInclusion;
+ }
+ return JsonInclude.Include.ALWAYS;
+ }
+
+ /**
+ * Method for getting provider used for locating filters given
+ * id (which is usually provided with filter annotations).
+ * Will be null if no provided was set for {@link ObjectWriter}
+ * (or if serialization directly called from {@link ObjectMapper})
+ */
+ public FilterProvider getFilterProvider() {
+ return _filterProvider;
+ }
+
+ /*
+ /**********************************************************
+ /* Introspection methods
+ /**********************************************************
+ */
+
+ /**
+ * Method that will introspect full bean properties for the purpose
+ * of building a bean serializer
+ */
+ @SuppressWarnings("unchecked")
+ public <T extends BeanDescription> T introspect(JavaType type) {
+ return (T) getClassIntrospector().forSerialization(this, type, this);
+ }
+
+ /*
+ /**********************************************************
+ /* Debug support
+ /**********************************************************
+ */
+
+ @Override public String toString()
+ {
+ return "[SerializationConfig: flags=0x"+Integer.toHexString(_serFeatures)+"]";
+ }
+}
diff --git a/src/main/java/com/fasterxml/jackson/databind/cfg/package-info.java b/src/main/java/com/fasterxml/jackson/databind/cfg/package-info.java
new file mode 100644
index 0000000..5afd53a
--- /dev/null
+++ b/src/main/java/com/fasterxml/jackson/databind/cfg/package-info.java
@@ -0,0 +1,8 @@
+/**
+Package that contains most of configuration-related classes;
+exception being couple of most-commonly used configuration
+things (like Feature enumerations) that are at the
+main level (<code>com.fasterxml.jackson.databind</code>).
+*/
+
+package com.fasterxml.jackson.databind.cfg;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BasicDeserializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/deser/BasicDeserializerFactory.java
index 016c7d7..efa4e17 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/BasicDeserializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/BasicDeserializerFactory.java
@@ -6,7 +6,9 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.NoClass;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.cfg.DeserializerFactoryConfig;
+import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
import com.fasterxml.jackson.databind.deser.impl.CreatorCollector;
import com.fasterxml.jackson.databind.deser.std.*;
import com.fasterxml.jackson.databind.ext.OptionalHandlerFactory;
@@ -1421,7 +1423,7 @@
return EnumResolver.constructUnsafeUsingMethod(enumClass, accessor);
}
// [JACKSON-212]: may need to use Enum.toString()
- if (config.isEnabled(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING)) {
+ if (config.isEnabled(DeserializationFeature.READ_ENUMS_USING_TO_STRING)) {
return EnumResolver.constructUnsafeUsingToString(enumClass);
}
return EnumResolver.constructUnsafe(enumClass, config.getAnnotationIntrospector());
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializer.java
index b20fbfd..42c1a22 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializer.java
@@ -1582,7 +1582,7 @@
if (t instanceof Error) {
throw (Error) t;
}
- boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationConfig.Feature.WRAP_EXCEPTIONS);
+ boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationFeature.WRAP_EXCEPTIONS);
// Ditto for IOExceptions; except we may want to wrap mapping exceptions
if (t instanceof IOException) {
if (!wrap || !(t instanceof JsonMappingException)) {
@@ -1607,7 +1607,7 @@
if (t instanceof Error) {
throw (Error) t;
}
- boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationConfig.Feature.WRAP_EXCEPTIONS);
+ boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationFeature.WRAP_EXCEPTIONS);
// Ditto for IOExceptions; except we may want to wrap mapping exceptions
if (t instanceof IOException) {
if (!wrap || !(t instanceof JsonMappingException)) {
@@ -1632,7 +1632,7 @@
if (t instanceof Error) {
throw (Error) t;
}
- boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationConfig.Feature.WRAP_EXCEPTIONS);
+ boolean wrap = (ctxt == null) || ctxt.isEnabled(DeserializationFeature.WRAP_EXCEPTIONS);
if (t instanceof IOException) {
// Since we have no more information to add, let's not actually wrap..
throw (IOException) t;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java
index 025d793..04c0543 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBuilder.java
@@ -4,7 +4,7 @@
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap;
import com.fasterxml.jackson.databind.deser.impl.ValueInjector;
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
@@ -83,7 +83,7 @@
DeserializationConfig config)
{
_beanDesc = beanDesc;
- _defaultViewInclusion = config.isEnabled(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION);
+ _defaultViewInclusion = config.isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION);
}
/**
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java
index 7ecbc2c..fb1c061 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerFactory.java
@@ -5,8 +5,8 @@
import java.util.concurrent.atomic.AtomicReference;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.cfg.DeserializerFactoryConfig;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.deser.impl.DeserializerCache;
import com.fasterxml.jackson.databind.deser.std.JdkDeserializers;
import com.fasterxml.jackson.databind.deser.std.ThrowableDeserializer;
@@ -395,8 +395,8 @@
}
}
}
- final boolean useGettersAsSetters = (ctxt.isEnabled(MapperConfig.Feature.USE_GETTERS_AS_SETTERS)
- && ctxt.isEnabled(MapperConfig.Feature.AUTO_DETECT_GETTERS));
+ final boolean useGettersAsSetters = (ctxt.isEnabled(MapperFeature.USE_GETTERS_AS_SETTERS)
+ && ctxt.isEnabled(MapperFeature.AUTO_DETECT_GETTERS));
// Ok: let's then filter out property definitions
List<BeanPropertyDefinition> propDefs = filterBeanProps(ctxt,
@@ -444,7 +444,7 @@
Class<?>[] views = propDef.findViews();
if (views == null) {
// one more twist: if default inclusion disabled, need to force empty set of views
- if (!ctxt.isEnabled(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION)) {
+ if (!ctxt.isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)) {
views = NO_VIEWS;
}
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerModifier.java b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerModifier.java
index 705d539..55e10fb 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerModifier.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerModifier.java
@@ -3,6 +3,7 @@
import java.util.List;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.BeanDeserializer;
import com.fasterxml.jackson.databind.deser.BeanDeserializerFactory;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializationProblemHandler.java b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializationProblemHandler.java
index 015b2f6..3ff4da3 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializationProblemHandler.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializationProblemHandler.java
@@ -4,10 +4,10 @@
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
/**
* This is the class that can be registered (via
@@ -40,7 +40,7 @@
*</pre>
*<p>
* Note: version 1.2 added new deserialization feature
- * (<code>DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES</code>).
+ * (<code>DeserializationConfig.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES</code>).
* It will only have effect <b>after</b> handler is called, and only
* if handler did <b>not</b> handle the problem.
*
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java
index b709252..00a76f7 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerFactory.java
@@ -1,6 +1,7 @@
package com.fasterxml.jackson.databind.deser;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.type.*;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/Deserializers.java b/src/main/java/com/fasterxml/jackson/databind/deser/Deserializers.java
index e83f940..90e9a3b 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/Deserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/Deserializers.java
@@ -1,7 +1,7 @@
package com.fasterxml.jackson.databind.deser;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.KeyDeserializer;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.type.*;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/KeyDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/deser/KeyDeserializers.java
index 652170b..b9d7fec 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/KeyDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/KeyDeserializers.java
@@ -1,6 +1,7 @@
package com.fasterxml.jackson.databind.deser;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
/**
* Interface that defines API for simple extensions that can provide additional deserializers
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/SettableBeanProperty.java b/src/main/java/com/fasterxml/jackson/databind/deser/SettableBeanProperty.java
index 298db33..2c2a627 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/SettableBeanProperty.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/SettableBeanProperty.java
@@ -876,9 +876,9 @@
public Object nullValue(DeserializationContext ctxt) throws JsonProcessingException
{
- if (_isPrimitive && ctxt.isEnabled(DeserializationConfig.Feature.FAIL_ON_NULL_FOR_PRIMITIVES)) {
+ if (_isPrimitive && ctxt.isEnabled(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES)) {
throw ctxt.mappingException("Can not map JSON null into type "+_rawType.getName()
- +" (set DeserializationConfig.Feature.FAIL_ON_NULL_FOR_PRIMITIVES to 'false' to allow)");
+ +" (set DeserializationConfig.DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES to 'false' to allow)");
}
return _nullValue;
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiator.java b/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiator.java
index d952af3..b61c40a 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiator.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiator.java
@@ -3,10 +3,10 @@
import java.io.IOException;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.introspect.AnnotatedWithParams;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiators.java b/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiators.java
index 59e5eac..ba1e429 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiators.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/ValueInstantiators.java
@@ -1,6 +1,7 @@
package com.fasterxml.jackson.databind.deser;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
/**
* Interface for providers of {@link ValueInstantiator} instances.
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/impl/CreatorCollector.java b/src/main/java/com/fasterxml/jackson/databind/deser/impl/CreatorCollector.java
index 57a80c4..f61832c 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/impl/CreatorCollector.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/impl/CreatorCollector.java
@@ -5,8 +5,8 @@
import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.CreatorProperty;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.deser.std.StdValueInstantiator;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/impl/DeserializerCache.java b/src/main/java/com/fasterxml/jackson/databind/deser/impl/DeserializerCache.java
index 301c478..44ecdae 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/impl/DeserializerCache.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/impl/DeserializerCache.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.NoClass;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.DeserializerFactory;
import com.fasterxml.jackson.databind.deser.ResolvableDeserializer;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/CollectionDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/CollectionDeserializer.java
index a5bbab5..3219026 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/CollectionDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/CollectionDeserializer.java
@@ -251,7 +251,7 @@
throws IOException, JsonProcessingException
{
// [JACKSON-526]: implicit arrays from single values?
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_collectionType.getRawClass());
}
JsonDeserializer<Object> valueDes = _valueDeserializer;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java
index c3089ed..dc7c54e 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumDeserializer.java
@@ -5,9 +5,10 @@
import com.fasterxml.jackson.core.*;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonDeserializer;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
import com.fasterxml.jackson.databind.util.ClassUtil;
import com.fasterxml.jackson.databind.util.EnumResolver;
@@ -80,8 +81,8 @@
/* ... unless told not to do that. :-)
* (as per [JACKSON-412]
*/
- if (ctxt.isEnabled(DeserializationConfig.Feature.FAIL_ON_NUMBERS_FOR_ENUMS)) {
- throw ctxt.mappingException("Not allowed to deserialize Enum value out of JSON number (disable DeserializationConfig.Feature.FAIL_ON_NUMBERS_FOR_ENUMS to allow)");
+ if (ctxt.isEnabled(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS)) {
+ throw ctxt.mappingException("Not allowed to deserialize Enum value out of JSON number (disable DeserializationConfig.DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS to allow)");
}
int index = jp.getIntValue();
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/JacksonDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/JacksonDeserializers.java
index 2fbf85e..383c526 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/JacksonDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/JacksonDeserializers.java
@@ -7,10 +7,10 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.CreatorProperty;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.util.TokenBuffer;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.java
index 24e87ca..058bc8e 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/JsonNodeDeserializer.java
@@ -262,7 +262,7 @@
{
JsonParser.NumberType nt = jp.getNumberType();
if (nt == JsonParser.NumberType.BIG_INTEGER
- || ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
+ || ctxt.isEnabled(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS)) {
return nodeFactory.numberNode(jp.getBigIntegerValue());
}
if (nt == JsonParser.NumberType.INT) {
@@ -275,7 +275,7 @@
{
JsonParser.NumberType nt = jp.getNumberType();
if (nt == JsonParser.NumberType.BIG_DECIMAL
- || ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
+ || ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
return nodeFactory.numberNode(jp.getDecimalValue());
}
return nodeFactory.numberNode(jp.getDoubleValue());
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/NumberDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/NumberDeserializers.java
index 83b422b..bd45246 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/NumberDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/NumberDeserializers.java
@@ -7,8 +7,8 @@
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
@@ -293,7 +293,7 @@
{
JsonToken t = jp.getCurrentToken();
if (t == JsonToken.VALUE_NUMBER_INT) {
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS)) {
return jp.getBigIntegerValue();
}
return jp.getNumberValue();
@@ -301,7 +301,7 @@
/* [JACKSON-72]: need to allow overriding the behavior
* regarding which type to use
*/
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
return jp.getDecimalValue();
}
return Double.valueOf(jp.getDoubleValue());
@@ -315,13 +315,13 @@
try {
if (text.indexOf('.') >= 0) { // floating point
// as per [JACKSON-72]:
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
return new BigDecimal(text);
}
return new Double(text);
}
// as per [JACKSON-100]:
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS)) {
return new BigInteger(text);
}
long value = Long.parseLong(text);
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/ObjectArrayDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/ObjectArrayDeserializer.java
index 0130250..30b1cc3 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/ObjectArrayDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/ObjectArrayDeserializer.java
@@ -201,7 +201,7 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
String str = jp.getText();
if (str.length() == 0) {
return null;
@@ -209,7 +209,7 @@
}
// Can we do implicit coercion to a single-element array still?
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
/* 04-Oct-2009, tatu: One exception; byte arrays are generally
* serialized as base64, so that should be handled
*/
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/PrimitiveArrayDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/PrimitiveArrayDeserializers.java
index 96e94dd..faa38e3 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/PrimitiveArrayDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/PrimitiveArrayDeserializers.java
@@ -140,10 +140,10 @@
throws IOException, JsonProcessingException
{
// [JACKSON-526]: implicit arrays from single values?
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
String str = jp.getText();
if (str.length() == 0) {
return null;
@@ -255,12 +255,12 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
if (jp.getText().length() == 0) {
return null;
}
}
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_valueClass);
}
return new boolean[] { _parseBooleanPrimitive(jp, ctxt) };
@@ -329,12 +329,12 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
if (jp.getText().length() == 0) {
return null;
}
}
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_valueClass);
}
byte value;
@@ -386,12 +386,12 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
if (jp.getText().length() == 0) {
return null;
}
}
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_valueClass);
}
return new short[] { _parseShortPrimitive(jp, ctxt) };
@@ -432,12 +432,12 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
if (jp.getText().length() == 0) {
return null;
}
}
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_valueClass);
}
return new int[] { _parseIntPrimitive(jp, ctxt) };
@@ -477,12 +477,12 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
if (jp.getText().length() == 0) {
return null;
}
}
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_valueClass);
}
return new long[] { _parseLongPrimitive(jp, ctxt) };
@@ -523,12 +523,12 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
if (jp.getText().length() == 0) {
return null;
}
}
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_valueClass);
}
return new float[] { _parseFloatPrimitive(jp, ctxt) };
@@ -568,12 +568,12 @@
{
// [JACKSON-620] Empty String can become null...
if ((jp.getCurrentToken() == JsonToken.VALUE_STRING)
- && ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
+ && ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) {
if (jp.getText().length() == 0) {
return null;
}
}
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_valueClass);
}
return new double[] { _parseDoublePrimitive(jp, ctxt) };
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDeserializer.java
index c8ba717..071c908 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDeserializer.java
@@ -660,7 +660,7 @@
throws IOException, JsonProcessingException
{
// throw exception if that's what we are expected to do
- if (ctxt.isEnabled(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES)) {
+ if (ctxt.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)) {
throw ctxt.unknownFieldException(instanceOrClass, fieldName);
}
// ... or if not, just ignore
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdKeyDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdKeyDeserializers.java
index da35d26..76bbcfa 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdKeyDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdKeyDeserializers.java
@@ -5,6 +5,7 @@
import java.util.*;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
import com.fasterxml.jackson.databind.type.*;
import com.fasterxml.jackson.databind.util.ClassUtil;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdValueInstantiator.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdValueInstantiator.java
index 5e209ec..7f4f407 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdValueInstantiator.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdValueInstantiator.java
@@ -3,10 +3,11 @@
import java.io.IOException;
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.CreatorProperty;
import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
@@ -68,14 +69,14 @@
public StdValueInstantiator(DeserializationConfig config, Class<?> valueType)
{
_cfgEmptyStringsAsObjects = (config == null) ? false
- : config.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
+ : config.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
_valueTypeDesc = (valueType == null) ? "UNKNOWN TYPE" : valueType.getName();
}
public StdValueInstantiator(DeserializationConfig config, JavaType valueType)
{
_cfgEmptyStringsAsObjects = (config == null) ? false
- : config.isEnabled(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
+ : config.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
_valueTypeDesc = (valueType == null) ? "UNKNOWN TYPE" : valueType.toString();
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer.java
index 64f31bf..50bb0ae 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/StringCollectionDeserializer.java
@@ -212,7 +212,7 @@
throws IOException, JsonProcessingException
{
// [JACKSON-526]: implicit arrays from single values?
- if (!ctxt.isEnabled(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
+ if (!ctxt.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)) {
throw ctxt.mappingException(_collectionType.getRawClass());
}
// Strings are one of "native" (intrinsic) types, so there's never type deserializer involved
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/UntypedObjectDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/UntypedObjectDeserializer.java
index f776932..7e47682 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/UntypedObjectDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/UntypedObjectDeserializer.java
@@ -5,8 +5,8 @@
import com.fasterxml.jackson.core.*;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.util.ObjectBuffer;
@@ -59,7 +59,7 @@
/* [JACKSON-100]: caller may want to get all integral values
* returned as BigInteger, for consistency
*/
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS)) {
return jp.getBigIntegerValue(); // should be optimal, whatever it is
}
return jp.getNumberValue(); // should be optimal, whatever it is
@@ -68,7 +68,7 @@
/* [JACKSON-72]: need to allow overriding the behavior regarding
* which type to use
*/
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
return jp.getDecimalValue();
}
return Double.valueOf(jp.getDoubleValue());
@@ -110,14 +110,14 @@
case VALUE_NUMBER_INT:
// For [JACKSON-100], see above:
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS)) {
return jp.getBigIntegerValue();
}
return jp.getIntValue();
case VALUE_NUMBER_FLOAT:
// For [JACKSON-72], see above
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS)) {
return jp.getDecimalValue();
}
return Double.valueOf(jp.getDoubleValue());
@@ -147,7 +147,7 @@
protected Object mapArray(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
- if (ctxt.isEnabled(DeserializationConfig.Feature.USE_JAVA_ARRAY_FOR_JSON_ARRAY)) {
+ if (ctxt.isEnabled(DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY)) {
return mapArrayToArray(jp, ctxt);
}
// Minor optimization to handle small lists (default size for ArrayList is 10)
diff --git a/src/main/java/com/fasterxml/jackson/databind/ext/JodaSerializers.java b/src/main/java/com/fasterxml/jackson/databind/ext/JodaSerializers.java
index 5ba7822..648e7af 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ext/JodaSerializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ext/JodaSerializers.java
@@ -89,7 +89,7 @@
public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException
{
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
jgen.writeNumber(value.getMillis());
} else {
jgen.writeString(value.toString());
@@ -99,7 +99,7 @@
@Override
public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type typeHint)
{
- return createSchemaNode(provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)
+ return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
? "number" : "string", true);
}
}
@@ -113,7 +113,7 @@
public void serialize(LocalDateTime dt, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException
{
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
// Timestamp here actually means an array of values
jgen.writeStartArray();
jgen.writeNumber(dt.year().get());
@@ -132,7 +132,7 @@
@Override
public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type typeHint)
{
- return createSchemaNode(provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)
+ return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
? "array" : "string", true);
}
}
@@ -146,7 +146,7 @@
public void serialize(LocalDate dt, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException
{
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
// Timestamp here actually means an array of values
jgen.writeStartArray();
jgen.writeNumber(dt.year().get());
@@ -161,7 +161,7 @@
@Override
public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type typeHint)
{
- return createSchemaNode(provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)
+ return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
? "array" : "string", true);
}
}
@@ -175,7 +175,7 @@
public void serialize(DateMidnight dt, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonGenerationException
{
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)) {
// same as with other date-only values
jgen.writeStartArray();
jgen.writeNumber(dt.year().get());
@@ -190,7 +190,7 @@
@Override
public JsonNode getSchema(SerializerProvider provider, java.lang.reflect.Type typeHint)
{
- return createSchemaNode(provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)
+ return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
? "array" : "string", true);
}
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ext/OptionalHandlerFactory.java b/src/main/java/com/fasterxml/jackson/databind/ext/OptionalHandlerFactory.java
index e373d26..89f7dfe 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ext/OptionalHandlerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ext/OptionalHandlerFactory.java
@@ -4,6 +4,8 @@
import java.util.Map;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.util.Provider;
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/BasicClassIntrospector.java b/src/main/java/com/fasterxml/jackson/databind/introspect/BasicClassIntrospector.java
index 5b32333..03d210f 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/BasicClassIntrospector.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/BasicClassIntrospector.java
@@ -1,10 +1,10 @@
package com.fasterxml.jackson.databind.introspect;
import com.fasterxml.jackson.databind.AnnotationIntrospector;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.type.SimpleType;
public class BasicClassIntrospector
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/ClassIntrospector.java b/src/main/java/com/fasterxml/jackson/databind/introspect/ClassIntrospector.java
index a54d5fb..51fe2c9 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/ClassIntrospector.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/ClassIntrospector.java
@@ -1,10 +1,10 @@
package com.fasterxml.jackson.databind.introspect;
import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
/**
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java b/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java
index 8ef2832..e110208 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java
@@ -9,6 +9,7 @@
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.databind.cfg.DatabindVersion;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.jsontype.NamedType;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/NopAnnotationIntrospector.java b/src/main/java/com/fasterxml/jackson/databind/introspect/NopAnnotationIntrospector.java
index 7697edf..2a9cd8e 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/NopAnnotationIntrospector.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/NopAnnotationIntrospector.java
@@ -2,6 +2,7 @@
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DatabindVersion;
/**
* Dummy, "no-operation" implementation of {@link AnnotationIntrospector}.
diff --git a/src/main/java/com/fasterxml/jackson/databind/jsontype/TypeResolverBuilder.java b/src/main/java/com/fasterxml/jackson/databind/jsontype/TypeResolverBuilder.java
index 58a801b..cefd909 100644
--- a/src/main/java/com/fasterxml/jackson/databind/jsontype/TypeResolverBuilder.java
+++ b/src/main/java/com/fasterxml/jackson/databind/jsontype/TypeResolverBuilder.java
@@ -4,9 +4,9 @@
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
/**
* Interface that defines builders that are configured based on
diff --git a/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/StdTypeResolverBuilder.java b/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/StdTypeResolverBuilder.java
index 1d51a13..4eacf30 100644
--- a/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/StdTypeResolverBuilder.java
+++ b/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/StdTypeResolverBuilder.java
@@ -4,7 +4,9 @@
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.jsontype.NamedType;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
diff --git a/src/main/java/com/fasterxml/jackson/databind/module/SimpleAbstractTypeResolver.java b/src/main/java/com/fasterxml/jackson/databind/module/SimpleAbstractTypeResolver.java
index e564e9d..fe7627c 100644
--- a/src/main/java/com/fasterxml/jackson/databind/module/SimpleAbstractTypeResolver.java
+++ b/src/main/java/com/fasterxml/jackson/databind/module/SimpleAbstractTypeResolver.java
@@ -5,8 +5,8 @@
import com.fasterxml.jackson.databind.AbstractTypeResolver;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.type.ClassKey;
/**
diff --git a/src/main/java/com/fasterxml/jackson/databind/module/SimpleDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/module/SimpleDeserializers.java
index 9448ec6..0c524ff 100644
--- a/src/main/java/com/fasterxml/jackson/databind/module/SimpleDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/module/SimpleDeserializers.java
@@ -3,6 +3,7 @@
import java.util.*;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.Deserializers;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.type.*;
diff --git a/src/main/java/com/fasterxml/jackson/databind/module/SimpleKeyDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/module/SimpleKeyDeserializers.java
index 8bc32c4..4523900 100644
--- a/src/main/java/com/fasterxml/jackson/databind/module/SimpleKeyDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/module/SimpleKeyDeserializers.java
@@ -6,6 +6,7 @@
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.KeyDeserializers;
import com.fasterxml.jackson.databind.type.ClassKey;
diff --git a/src/main/java/com/fasterxml/jackson/databind/module/SimpleSerializers.java b/src/main/java/com/fasterxml/jackson/databind/module/SimpleSerializers.java
index b844c92..19b1489 100644
--- a/src/main/java/com/fasterxml/jackson/databind/module/SimpleSerializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/module/SimpleSerializers.java
@@ -4,6 +4,7 @@
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.Serializers;
import com.fasterxml.jackson.databind.type.ArrayType;
diff --git a/src/main/java/com/fasterxml/jackson/databind/module/SimpleValueInstantiators.java b/src/main/java/com/fasterxml/jackson/databind/module/SimpleValueInstantiators.java
index d53acd3..af2f208 100644
--- a/src/main/java/com/fasterxml/jackson/databind/module/SimpleValueInstantiators.java
+++ b/src/main/java/com/fasterxml/jackson/databind/module/SimpleValueInstantiators.java
@@ -3,7 +3,7 @@
import java.util.HashMap;
import com.fasterxml.jackson.databind.BeanDescription;
-import com.fasterxml.jackson.databind.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.deser.ValueInstantiators;
import com.fasterxml.jackson.databind.type.ClassKey;
diff --git a/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java b/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java
index ec3c15d..8e34ce7 100644
--- a/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java
+++ b/src/main/java/com/fasterxml/jackson/databind/node/TreeTraversingParser.java
@@ -7,8 +7,8 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.core.base.ParserMinimalBase;
-import com.fasterxml.jackson.databind.DatabindVersion;
import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.cfg.DatabindVersion;
/**
* Facade over {@link JsonNode} that implements {@link JsonParser} to allow
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java
index 8afb1b1..c6e4ae1 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/BasicSerializerFactory.java
@@ -9,7 +9,7 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.annotation.NoClass;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
import com.fasterxml.jackson.databind.ext.OptionalHandlerFactory;
import com.fasterxml.jackson.databind.introspect.*;
@@ -750,7 +750,7 @@
return true;
}
} else {
- if (config.isEnabled(MapperConfig.Feature.USE_STATIC_TYPING)) {
+ if (config.isEnabled(MapperFeature.USE_STATIC_TYPING)) {
return true;
}
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java
index 8e406d0..aad1555 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerFactory.java
@@ -3,7 +3,7 @@
import java.util.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig;
import com.fasterxml.jackson.databind.introspect.*;
import com.fasterxml.jackson.databind.jsontype.NamedType;
@@ -309,7 +309,7 @@
}
JavaType type = anyGetter.getType(beanDesc.bindingsForBeanType());
// copied from BasicSerializerFactory.buildMapSerializer():
- boolean staticTyping = config.isEnabled(MapperConfig.Feature.USE_STATIC_TYPING);
+ boolean staticTyping = config.isEnabled(MapperFeature.USE_STATIC_TYPING);
JavaType valueType = type.getContentType();
TypeSerializer typeSer = createTypeSerializer(config, valueType);
// last 2 nulls; don't know key, value serializers (yet)
@@ -408,7 +408,7 @@
removeIgnorableTypes(config, beanDesc, properties);
// and possibly remove ones without matching mutator...
- if (config.isEnabled(MapperConfig.Feature.REQUIRE_SETTERS_FOR_GETTERS)) {
+ if (config.isEnabled(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS)) {
removeSetterlessGetters(config, beanDesc, properties);
}
@@ -480,7 +480,7 @@
{
// [JACKSON-232]: whether non-annotated fields are included by default or not is configurable
List<BeanPropertyWriter> props = builder.getProperties();
- boolean includeByDefault = config.isEnabled(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION);
+ boolean includeByDefault = config.isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION);
final int propCount = props.size();
int viewsFound = 0;
BeanPropertyWriter[] filtered = new BeanPropertyWriter[propCount];
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerModifier.java b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerModifier.java
index a0dc468..ed1115e 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerModifier.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/BeanSerializerModifier.java
@@ -4,7 +4,7 @@
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
/**
* Abstract class that defines API for objects that can be registered (for {@link BeanSerializerFactory}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/PropertyBuilder.java b/src/main/java/com/fasterxml/jackson/databind/ser/PropertyBuilder.java
index 37e3798..0cd9743 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/PropertyBuilder.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/PropertyBuilder.java
@@ -4,6 +4,7 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize.Inclusion;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.introspect.*;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.util.*;
@@ -113,7 +114,7 @@
case ALWAYS: // default
// we may still want to suppress empty collections, as per [JACKSON-254]:
if (declaredType.isContainerType()
- && !_config.isEnabled(SerializationConfig.Feature.WRITE_EMPTY_JSON_ARRAYS)) {
+ && !_config.isEnabled(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS)) {
valueToSuppress = BeanPropertyWriter.MARKER_FOR_EMPTY;
}
break;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/SerializerFactory.java b/src/main/java/com/fasterxml/jackson/databind/ser/SerializerFactory.java
index e6f331d..222e5f6 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/SerializerFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/SerializerFactory.java
@@ -1,6 +1,7 @@
package com.fasterxml.jackson.databind.ser;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
/**
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/Serializers.java b/src/main/java/com/fasterxml/jackson/databind/ser/Serializers.java
index 5246b87..3e6fa35 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/Serializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/Serializers.java
@@ -1,7 +1,7 @@
package com.fasterxml.jackson.databind.ser;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.type.*;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnknownSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnknownSerializer.java
index 12b7832..392d09a 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnknownSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/impl/UnknownSerializer.java
@@ -21,7 +21,7 @@
throws IOException, JsonMappingException
{
// 27-Nov-2009, tatu: As per [JACKSON-201] may or may not fail...
- if (provider.isEnabled(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) {
+ if (provider.isEnabled(SerializationFeature.FAIL_ON_EMPTY_BEANS)) {
failForEmpty(value);
}
// But if it's fine, we'll just output empty JSON Object:
@@ -34,7 +34,7 @@
TypeSerializer typeSer)
throws IOException, JsonGenerationException
{
- if (provider.isEnabled(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)) {
+ if (provider.isEnabled(SerializationFeature.FAIL_ON_EMPTY_BEANS)) {
failForEmpty(value);
}
typeSer.writeTypePrefixForObject(value, jgen);
@@ -48,6 +48,6 @@
protected void failForEmpty(Object value) throws JsonMappingException
{
- throw new JsonMappingException("No serializer found for class "+value.getClass().getName()+" and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) )");
+ throw new JsonMappingException("No serializer found for class "+value.getClass().getName()+" and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.SerializationFeature.FAIL_ON_EMPTY_BEANS) )");
}
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/CalendarSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/CalendarSerializer.java
index 959cb25..1e11520 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/CalendarSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/CalendarSerializer.java
@@ -7,7 +7,7 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
@@ -41,7 +41,7 @@
public JsonNode getSchema(SerializerProvider provider, Type typeHint)
{
//TODO: (ryan) add a format for the date in the schema?
- return createSchemaNode(provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)
+ return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
? "number" : "string", true);
}
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/DateSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/DateSerializer.java
index a7f6133..3fc14b0 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/DateSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/DateSerializer.java
@@ -7,7 +7,7 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
@@ -40,7 +40,7 @@
public JsonNode getSchema(SerializerProvider provider, Type typeHint)
{
//todo: (ryan) add a format for the date in the schema?
- return createSchemaNode(provider.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS)
+ return createSchemaNode(provider.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
? "number" : "string", true);
}
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/EnumSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/EnumSerializer.java
index 5642ccc..734be0c 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/EnumSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/EnumSerializer.java
@@ -9,6 +9,7 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.util.EnumValues;
@@ -42,7 +43,7 @@
{
// [JACKSON-212]: If toString() is to be used instead, leave EnumValues null
AnnotationIntrospector intr = config.getAnnotationIntrospector();
- EnumValues v = config.isEnabled(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING)
+ EnumValues v = config.isEnabled(SerializationFeature.WRITE_ENUMS_USING_TO_STRING)
? EnumValues.constructFromToString(enumClass, intr) : EnumValues.constructFromName(enumClass, intr);
return new EnumSerializer(v);
}
@@ -52,7 +53,7 @@
throws IOException, JsonGenerationException
{
// [JACKSON-684]: serialize as index?
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_ENUMS_USING_INDEX)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_ENUMS_USING_INDEX)) {
jgen.writeNumber(en.ordinal());
return;
}
@@ -63,7 +64,7 @@
public JsonNode getSchema(SerializerProvider provider, Type typeHint)
{
// [JACKSON-684]: serialize as index?
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_ENUMS_USING_INDEX)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_ENUMS_USING_INDEX)) {
return createSchemaNode("integer", true);
}
ObjectNode objectNode = createSchemaNode("string", true);
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/JsonValueSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/JsonValueSerializer.java
index 59aaedc..5634f1f 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/JsonValueSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/JsonValueSerializer.java
@@ -10,7 +10,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.jsonschema.JsonSchema;
import com.fasterxml.jackson.databind.jsonschema.SchemaAware;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
@@ -111,7 +110,7 @@
* if not, we don't really know the actual type until we get the instance.
*/
// 10-Mar-2010, tatu: Except if static typing is to be used
- if (provider.isEnabled(MapperConfig.Feature.USE_STATIC_TYPING)
+ if (provider.isEnabled(MapperFeature.USE_STATIC_TYPING)
|| Modifier.isFinal(_accessorMethod.getReturnType().getModifiers())) {
JavaType t = provider.constructType(_accessorMethod.getGenericReturnType());
// false -> no need to cache
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java
index a15bbe9..27ee6f0 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/MapSerializer.java
@@ -287,7 +287,7 @@
final JsonSerializer<Object> keySerializer = _keySerializer;
final HashSet<String> ignored = _ignoredEntries;
- final boolean skipNulls = !provider.isEnabled(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES);
+ final boolean skipNulls = !provider.isEnabled(SerializationFeature.WRITE_NULL_MAP_VALUES);
PropertySerializerMap serializers = _dynamicValueSerializers;
@@ -343,7 +343,7 @@
final JsonSerializer<Object> keySerializer = _keySerializer;
final HashSet<String> ignored = _ignoredEntries;
final TypeSerializer typeSer = _valueTypeSerializer;
- final boolean skipNulls = !provider.isEnabled(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES);
+ final boolean skipNulls = !provider.isEnabled(SerializationFeature.WRITE_NULL_MAP_VALUES);
for (Map.Entry<?,?> entry : value.entrySet()) {
Object valueElem = entry.getValue();
@@ -381,7 +381,7 @@
JsonSerializer<Object> prevValueSerializer = null;
Class<?> prevValueClass = null;
final HashSet<String> ignored = _ignoredEntries;
- final boolean skipNulls = !provider.isEnabled(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES);
+ final boolean skipNulls = !provider.isEnabled(SerializationFeature.WRITE_NULL_MAP_VALUES);
for (Map.Entry<?,?> entry : value.entrySet()) {
Object valueElem = entry.getValue();
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/StdArraySerializers.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/StdArraySerializers.java
index 9199483..49ce211 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/StdArraySerializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/StdArraySerializers.java
@@ -239,7 +239,7 @@
throws IOException, JsonGenerationException
{
// [JACKSON-289] allows serializing as 'sparse' char array too:
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS)) {
jgen.writeStartArray();
_writeArrayContents(jgen, value);
jgen.writeEndArray();
@@ -254,7 +254,7 @@
throws IOException, JsonGenerationException
{
// [JACKSON-289] allows serializing as 'sparse' char array too:
- if (provider.isEnabled(SerializationConfig.Feature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS)) {
+ if (provider.isEnabled(SerializationFeature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS)) {
typeSer.writeTypePrefixForArray(value, jgen);
_writeArrayContents(jgen, value);
typeSer.writeTypeSuffixForArray(value, jgen);
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/StdSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/StdSerializer.java
index 3854d83..77d4911 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/StdSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/StdSerializer.java
@@ -141,7 +141,7 @@
throw (Error) t;
}
// Ditto for IOExceptions... except for mapping exceptions!
- boolean wrap = (provider == null) || provider.isEnabled(SerializationConfig.Feature.WRAP_EXCEPTIONS);
+ boolean wrap = (provider == null) || provider.isEnabled(SerializationFeature.WRAP_EXCEPTIONS);
if (t instanceof IOException) {
if (!wrap || !(t instanceof JsonMappingException)) {
throw (IOException) t;
@@ -167,7 +167,7 @@
throw (Error) t;
}
// Ditto for IOExceptions... except for mapping exceptions!
- boolean wrap = (provider == null) || provider.isEnabled(SerializationConfig.Feature.WRAP_EXCEPTIONS);
+ boolean wrap = (provider == null) || provider.isEnabled(SerializationFeature.WRAP_EXCEPTIONS);
if (t instanceof IOException) {
if (!wrap || !(t instanceof JsonMappingException)) {
throw (IOException) t;
diff --git a/src/main/java/com/fasterxml/jackson/databind/type/TypeFactory.java b/src/main/java/com/fasterxml/jackson/databind/type/TypeFactory.java
index c5b4680..17b9160 100644
--- a/src/main/java/com/fasterxml/jackson/databind/type/TypeFactory.java
+++ b/src/main/java/com/fasterxml/jackson/databind/type/TypeFactory.java
@@ -15,8 +15,8 @@
*<p>
* Instances of this class are accessible using {@link com.fasterxml.jackson.databind.ObjectMapper}
* as well as many objects it constructs (like
-* {@link com.fasterxml.jackson.databind.DeserializationConfig} and
- * {@link com.fasterxml.jackson.databind.SerializationConfig})),
+* {@link com.fasterxml.jackson.databind.cfg.DeserializationConfig} and
+ * {@link com.fasterxml.jackson.databind.cfg.SerializationConfig})),
* but usually those objects also
* expose convenience methods (<code>constructType</code>).
* So, you can do for example:
diff --git a/src/main/java/com/fasterxml/jackson/databind/util/TokenBuffer.java b/src/main/java/com/fasterxml/jackson/databind/util/TokenBuffer.java
index ec09470..f788fe8 100644
--- a/src/main/java/com/fasterxml/jackson/databind/util/TokenBuffer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/util/TokenBuffer.java
@@ -10,7 +10,7 @@
import com.fasterxml.jackson.core.json.JsonWriteContext;
import com.fasterxml.jackson.core.util.ByteArrayBuilder;
-import com.fasterxml.jackson.databind.DatabindVersion;
+import com.fasterxml.jackson.databind.cfg.DatabindVersion;
/**
* Utility class used for efficient storage of {@link JsonToken}
@@ -328,7 +328,7 @@
return this;
}
- //public JsonGenerator configure(Feature f, boolean state) { }
+ //public JsonGenerator configure(SerializationFeature f, boolean state) { }
@Override
public boolean isEnabled(Feature f) {
diff --git a/src/main/resources/com/fasterxml/jackson/databind/VERSION.txt b/src/main/resources/com/fasterxml/jackson/databind/cfg/VERSION.txt
similarity index 100%
rename from src/main/resources/com/fasterxml/jackson/databind/VERSION.txt
rename to src/main/resources/com/fasterxml/jackson/databind/cfg/VERSION.txt
diff --git a/src/test/java/com/fasterxml/jackson/databind/TestHandlerInstantiation.java b/src/test/java/com/fasterxml/jackson/databind/TestHandlerInstantiation.java
index 5458ea3..c6fc826 100644
--- a/src/test/java/com/fasterxml/jackson/databind/TestHandlerInstantiation.java
+++ b/src/test/java/com/fasterxml/jackson/databind/TestHandlerInstantiation.java
@@ -8,17 +8,17 @@
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.core.*;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.HandlerInstantiator;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.KeyDeserializer;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.introspect.Annotated;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
diff --git a/src/test/java/com/fasterxml/jackson/databind/TestNamingStrategy.java b/src/test/java/com/fasterxml/jackson/databind/TestNamingStrategy.java
index 6d5db41..3e47a08 100644
--- a/src/test/java/com/fasterxml/jackson/databind/TestNamingStrategy.java
+++ b/src/test/java/com/fasterxml/jackson/databind/TestNamingStrategy.java
@@ -222,7 +222,7 @@
{
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new LcStrategy());
-// mapper.disable(DeserializationConfig.Feature.USE_GETTERS_AS_SETTERS);
+// mapper.disable(DeserializationConfig.DeserializationFeature.USE_GETTERS_AS_SETTERS);
RenamedCollectionBean foo = mapper.readValue("{\"thevalues\":[\"a\"]}", RenamedCollectionBean.class);
assertNotNull(foo.getTheVALUEs());
assertEquals(1, foo.getTheVALUEs().size());
diff --git a/src/test/java/com/fasterxml/jackson/databind/TestObjectMapper.java b/src/test/java/com/fasterxml/jackson/databind/TestObjectMapper.java
index ea2b016..02e20d4 100644
--- a/src/test/java/com/fasterxml/jackson/databind/TestObjectMapper.java
+++ b/src/test/java/com/fasterxml/jackson/databind/TestObjectMapper.java
@@ -4,10 +4,9 @@
import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationConfig;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.node.*;
import com.fasterxml.jackson.databind.type.TypeFactory;
@@ -57,21 +56,21 @@
ObjectMapper m = new ObjectMapper();
// sort-alphabetically is disabled by default:
- assertFalse(m.isEnabled(MapperConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY));
+ assertFalse(m.isEnabled(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY));
SerializationConfig sc = m.getSerializationConfig();
- assertFalse(sc.isEnabled(MapperConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY));
+ assertFalse(sc.isEnabled(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY));
assertFalse(sc.shouldSortPropertiesAlphabetically());
DeserializationConfig dc = m.getDeserializationConfig();
assertFalse(dc.shouldSortPropertiesAlphabetically());
// but when enabled, should be visible:
- m.enable(MapperConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY);
+ m.enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY);
sc = m.getSerializationConfig();
- assertTrue(sc.isEnabled(MapperConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY));
+ assertTrue(sc.isEnabled(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY));
assertTrue(sc.shouldSortPropertiesAlphabetically());
dc = m.getDeserializationConfig();
// and not just via SerializationConfig, but also via DeserializationConfig
- assertTrue(dc.isEnabled(MapperConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY));
+ assertTrue(dc.isEnabled(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY));
assertTrue(dc.shouldSortPropertiesAlphabetically());
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/TestRootName.java b/src/test/java/com/fasterxml/jackson/databind/TestRootName.java
index 906e41a..87e096b 100644
--- a/src/test/java/com/fasterxml/jackson/databind/TestRootName.java
+++ b/src/test/java/com/fasterxml/jackson/databind/TestRootName.java
@@ -2,9 +2,7 @@
import com.fasterxml.jackson.annotation.*;
-import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationConfig;
/**
* Unit tests dealing with handling of "root element wrapping",
@@ -49,7 +47,7 @@
String jsonUnwrapped = mapper.writeValueAsString(input);
assertEquals("{\"a\":3}", jsonUnwrapped);
// secondary: wrapping
- String jsonWrapped = mapper.writer(SerializationConfig.Feature.WRAP_ROOT_VALUE)
+ String jsonWrapped = mapper.writer(SerializationFeature.WRAP_ROOT_VALUE)
.writeValueAsString(input);
assertEquals("{\"rudy\":{\"a\":3}}", jsonWrapped);
@@ -57,14 +55,14 @@
Bean result = mapper.readValue(jsonUnwrapped, Bean.class);
assertNotNull(result);
try { // must not have extra wrapping
- result = mapper.reader(Bean.class).with(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE)
+ result = mapper.reader(Bean.class).with(DeserializationFeature.UNWRAP_ROOT_VALUE)
.readValue(jsonUnwrapped);
fail("Should have failed");
} catch (JsonMappingException e) {
verifyException(e, "Root name 'a'");
}
// except wrapping may be expected:
- result = mapper.reader(Bean.class).with(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE)
+ result = mapper.reader(Bean.class).with(DeserializationFeature.UNWRAP_ROOT_VALUE)
.readValue(jsonWrapped);
assertNotNull(result);
}
@@ -81,7 +79,7 @@
Bean bean = reader.readValue(json);
assertNotNull(bean);
- // also: verify that we can override Feature as well:
+ // also: verify that we can override SerializationFeature as well:
ObjectMapper wrapping = rootMapper();
json = wrapping.writer().withRootName("something").writeValueAsString(new Bean());
assertEquals("{\"something\":{\"a\":3}}", json);
@@ -101,8 +99,8 @@
private ObjectMapper rootMapper()
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
- mapper.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
+ mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
return mapper;
}
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/convert/TestBeanConversions.java b/src/test/java/com/fasterxml/jackson/databind/convert/TestBeanConversions.java
index eedb723..85fcc67 100644
--- a/src/test/java/com/fasterxml/jackson/databind/convert/TestBeanConversions.java
+++ b/src/test/java/com/fasterxml/jackson/databind/convert/TestBeanConversions.java
@@ -101,8 +101,8 @@
public void testWrapping() throws Exception
{
ObjectMapper wrappingMapper = new ObjectMapper();
- wrappingMapper.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
- wrappingMapper.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ wrappingMapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
+ wrappingMapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
// conversion is ok, even if it's bogus one
_convertAndVerifyPoint(wrappingMapper);
@@ -110,13 +110,13 @@
// also: ok to have mismatched settings, since as per [JACKSON-710], should
// not actually use wrapping internally in these cases
wrappingMapper = new ObjectMapper();
- wrappingMapper.enable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
- wrappingMapper.disable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ wrappingMapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE);
+ wrappingMapper.disable(SerializationFeature.WRAP_ROOT_VALUE);
_convertAndVerifyPoint(wrappingMapper);
wrappingMapper = new ObjectMapper();
- wrappingMapper.disable(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE);
- wrappingMapper.enable(SerializationConfig.Feature.WRAP_ROOT_VALUE);
+ wrappingMapper.disable(DeserializationFeature.UNWRAP_ROOT_VALUE);
+ wrappingMapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
_convertAndVerifyPoint(wrappingMapper);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestAnyProperties.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestAnyProperties.java
index 34a1aa4..3c02b12 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestAnyProperties.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestAnyProperties.java
@@ -144,14 +144,14 @@
public void testIgnored() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(com.fasterxml.jackson.databind.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, true);
+ mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
_testIgnorals(mapper);
}
public void testIgnored383() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(com.fasterxml.jackson.databind.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
_testIgnorals(mapper);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestArrayDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestArrayDeserialization.java
index 521a84d..d4672d6 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestArrayDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestArrayDeserialization.java
@@ -181,7 +181,7 @@
public void testFromEmptyString() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
+ m.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
assertNull(m.readValue(quote(""), Object[].class));
assertNull( m.readValue(quote(""), String[].class));
assertNull( m.readValue(quote(""), int[].class));
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestBeanDeserializer.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestBeanDeserializer.java
index bb18938..c113e66 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestBeanDeserializer.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestBeanDeserializer.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.BeanDeserializer;
import com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder;
import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier;
@@ -188,7 +189,7 @@
// should be ok to enable dynamically:
mapper = new ObjectMapper();
- mapper.configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
+ mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
Bean result = mapper.readValue(quote(""), Bean.class);
assertNull(result);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestCollectionDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestCollectionDeserialization.java
index 8ecdbe9..2e466c0 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestCollectionDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestCollectionDeserialization.java
@@ -114,7 +114,7 @@
public void testImplicitArrays() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
+ mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
// first with simple scalar types (numbers), with collections
List<Integer> ints = mapper.readValue("4", List.class);
@@ -146,7 +146,7 @@
public void testFromEmptyString() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
+ m.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
List<?> result = m.readValue(quote(""), List.class);
assertNull(result);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestConfig.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestConfig.java
index e21d06a..6eef338 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestConfig.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestConfig.java
@@ -4,7 +4,7 @@
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
/**
* Unit tests for checking handling of DeserializationConfig.
@@ -36,17 +36,17 @@
DeserializationConfig cfg = m.getDeserializationConfig();
// Expected defaults:
- assertTrue(cfg.isEnabled(MapperConfig.Feature.USE_ANNOTATIONS));
- assertTrue(cfg.isEnabled(MapperConfig.Feature.AUTO_DETECT_SETTERS));
- assertTrue(cfg.isEnabled(MapperConfig.Feature.AUTO_DETECT_CREATORS));
- assertTrue(cfg.isEnabled(MapperConfig.Feature.USE_GETTERS_AS_SETTERS));
- assertTrue(cfg.isEnabled(MapperConfig.Feature.CAN_OVERRIDE_ACCESS_MODIFIERS));
+ assertTrue(cfg.isEnabled(MapperFeature.USE_ANNOTATIONS));
+ assertTrue(cfg.isEnabled(MapperFeature.AUTO_DETECT_SETTERS));
+ assertTrue(cfg.isEnabled(MapperFeature.AUTO_DETECT_CREATORS));
+ assertTrue(cfg.isEnabled(MapperFeature.USE_GETTERS_AS_SETTERS));
+ assertTrue(cfg.isEnabled(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS));
- assertFalse(cfg.isEnabled(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS));
- assertFalse(cfg.isEnabled(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS));
+ assertFalse(cfg.isEnabled(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS));
+ assertFalse(cfg.isEnabled(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS));
- assertTrue(cfg.isEnabled(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES));
+ assertTrue(cfg.isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES));
}
public void testOverrideIntrospectors()
@@ -63,13 +63,13 @@
{
// first: verify that annotation introspection is enabled by default
ObjectMapper m = new ObjectMapper();
- assertTrue(m.getDeserializationConfig().isEnabled(MapperConfig.Feature.USE_ANNOTATIONS));
+ assertTrue(m.getDeserializationConfig().isEnabled(MapperFeature.USE_ANNOTATIONS));
// with annotations, property is renamed
AnnoBean bean = m.readValue("{ \"y\" : 0 }", AnnoBean.class);
assertEquals(0, bean.value);
m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_ANNOTATIONS, false);
+ m.configure(MapperFeature.USE_ANNOTATIONS, false);
// without annotations, should default to default bean-based name...
bean = m.readValue("{ \"x\" : 0 }", AnnoBean.class);
assertEquals(0, bean.value);
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestCreators2.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestCreators2.java
index d288f01..7e67f1d 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestCreators2.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestCreators2.java
@@ -109,7 +109,7 @@
}
}
- // For [JACKSON-541]: should not need @JsonCreator if Feature.AUTO_DETECT_CREATORS is on.
+ // For [JACKSON-541]: should not need @JsonCreator if SerializationFeature.AUTO_DETECT_CREATORS is on.
static class AutoDetectConstructorBean
{
protected final String foo;
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java
index aff52e3..2580ae5 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestEnumDeserialization.java
@@ -161,7 +161,7 @@
{
// can't reuse global one due to reconfig
ObjectMapper m = new ObjectMapper();
- m.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING, true);
+ m.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
LowerCaseEnum value = m.readValue("\"c\"", LowerCaseEnum.class);
assertEquals(LowerCaseEnum.C, value);
}
@@ -171,7 +171,7 @@
{
// can't reuse global one due to reconfig
ObjectMapper m = new ObjectMapper();
- m.configure(DeserializationConfig.Feature.READ_ENUMS_USING_TO_STRING, true);
+ m.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
EnumMap<LowerCaseEnum,String> value = m.readValue("{\"a\":\"value\"}",
new TypeReference<EnumMap<LowerCaseEnum,String>>() { });
assertEquals("value", value.get(LowerCaseEnum.A));
@@ -181,13 +181,13 @@
public void testNumbersToEnums() throws Exception
{
// by default numbers are fine:
- assertFalse(mapper.getDeserializationConfig().isEnabled(DeserializationConfig.Feature.FAIL_ON_NUMBERS_FOR_ENUMS));
+ assertFalse(mapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS));
TestEnum value = mapper.readValue("1", TestEnum.class);
assertSame(TestEnum.RULES, value);
// but can also be changed to errors:
ObjectMapper m = new ObjectMapper();
- m.configure(DeserializationConfig.Feature.FAIL_ON_NUMBERS_FOR_ENUMS, true);
+ m.configure(DeserializationFeature.FAIL_ON_NUMBERS_FOR_ENUMS, true);
try {
value = m.readValue("1", TestEnum.class);
fail("Expected an error");
@@ -200,7 +200,7 @@
public void testEnumsWithIndex() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.enable(SerializationConfig.Feature.WRITE_ENUMS_USING_INDEX);
+ m.enable(SerializationFeature.WRITE_ENUMS_USING_INDEX);
String json = m.writeValueAsString(TestEnum.RULES);
assertEquals(String.valueOf(TestEnum.RULES.ordinal()), json);
TestEnum result = m.readValue(json, TestEnum.class);
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestGenericNumber.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestGenericNumber.java
index 3851e25..0e90ac4 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestGenericNumber.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestGenericNumber.java
@@ -46,7 +46,7 @@
* to BigInteger even if value would fit in Integer
*/
ObjectMapper m = new ObjectMapper();
- m.enable(DeserializationConfig.Feature.USE_BIG_INTEGER_FOR_INTS);
+ m.enable(DeserializationFeature.USE_BIG_INTEGER_FOR_INTS);
BigInteger exp = BigInteger.valueOf(123L);
// first test as any Number
@@ -76,7 +76,7 @@
public void testFpTypeOverrideSimple() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.enable(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS);
+ m.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
BigDecimal dec = new BigDecimal("0.1");
// First test generic stand-alone Number
@@ -95,7 +95,7 @@
ObjectMapper m = new ObjectMapper();
BigDecimal dec = new BigDecimal("-19.37");
- m.enable(DeserializationConfig.Feature.USE_BIG_DECIMAL_FOR_FLOATS);
+ m.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
// List element types
@SuppressWarnings("unchecked")
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestJdkTypes.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestJdkTypes.java
index a9af7ef..27836e8 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestJdkTypes.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestJdkTypes.java
@@ -135,7 +135,7 @@
// but not when enabled
final ObjectMapper mapper2 = new ObjectMapper();
- mapper2.configure(DeserializationConfig.Feature.FAIL_ON_NULL_FOR_PRIMITIVES, true);
+ mapper2.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES, true);
// boolean
try {
@@ -300,7 +300,7 @@
assertTrue(ob instanceof List<?>);
// but can change to produce Object[]:
- mapper.configure(DeserializationConfig.Feature.USE_JAVA_ARRAY_FOR_JSON_ARRAY, true);
+ mapper.configure(DeserializationFeature.USE_JAVA_ARRAY_FOR_JSON_ARRAY, true);
ob = mapper.readValue("[1]", Object.class);
assertEquals(Object[].class, ob.getClass());
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestMapDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestMapDeserialization.java
index 12a4112..e01613a 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestMapDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestMapDeserialization.java
@@ -161,7 +161,7 @@
public void testFromEmptyString() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(DeserializationConfig.Feature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
+ m.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
Map<?,?> result = m.readValue(quote(""), Map.class);
assertNull(result);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestSetterlessProperties.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestSetterlessProperties.java
index a8d92c7..471fd85 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestSetterlessProperties.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestSetterlessProperties.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
/**
* Unit tests for verifying that feature requested
@@ -74,9 +73,9 @@
{
ObjectMapper m = new ObjectMapper();
// by default, it should be enabled
- assertTrue(m.isEnabled(MapperConfig.Feature.USE_GETTERS_AS_SETTERS));
- m.configure(MapperConfig.Feature.USE_GETTERS_AS_SETTERS, false);
- assertFalse(m.isEnabled(MapperConfig.Feature.USE_GETTERS_AS_SETTERS));
+ assertTrue(m.isEnabled(MapperFeature.USE_GETTERS_AS_SETTERS));
+ m.configure(MapperFeature.USE_GETTERS_AS_SETTERS, false);
+ assertFalse(m.isEnabled(MapperFeature.USE_GETTERS_AS_SETTERS));
// and now this should fail
try {
@@ -106,7 +105,7 @@
throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_GETTERS_AS_SETTERS, false);
+ m.configure(MapperFeature.USE_GETTERS_AS_SETTERS, false);
// so this should fail now without a setter
try {
m.readValue
@@ -123,7 +122,7 @@
public void testSetterlessPrecedence() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_GETTERS_AS_SETTERS, true);
+ m.configure(MapperFeature.USE_GETTERS_AS_SETTERS, true);
Dual value = m.readValue("{\"list\":[1,2,3]}, valueType)", Dual.class);
assertNotNull(value);
assertEquals(3, value.values.size());
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestUnknownProperties.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestUnknownProperties.java
index ad9f335..935a9f1 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestUnknownProperties.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestUnknownProperties.java
@@ -133,7 +133,7 @@
throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
TestBean result = null;
try {
result = mapper.readValue(new StringReader(JSON_UNKNOWN_FIELD), TestBean.class);
diff --git a/src/test/java/com/fasterxml/jackson/databind/ext/TestCoreXMLTypes.java b/src/test/java/com/fasterxml/jackson/databind/ext/TestCoreXMLTypes.java
index faa44a9..7889af6 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ext/TestCoreXMLTypes.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ext/TestCoreXMLTypes.java
@@ -57,7 +57,7 @@
assertEquals(timestamp, calOut.toGregorianCalendar().getTimeInMillis());
// and then textual variant
- mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
+ mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
// this is ALMOST same as default for XMLGregorianCalendar... just need to unify Z/+0000
String exp = cal.toXMLFormat();
String act = mapper.writeValueAsString(cal);
diff --git a/src/test/java/com/fasterxml/jackson/databind/ext/TestJodaTime.java b/src/test/java/com/fasterxml/jackson/databind/ext/TestJodaTime.java
index b79fab7..ec4fdaa 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ext/TestJodaTime.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ext/TestJodaTime.java
@@ -36,7 +36,7 @@
// but if re-configured, as regular ISO-8601 string
m = new ObjectMapper();
- m.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
+ m.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
assertEquals(quote("1970-01-01T00:00:00.000Z"), serializeAsString(m, dt));
}
@@ -100,7 +100,7 @@
assertEquals("[2001,5,25]", mapper.writeValueAsString(date));
// but we can force it to be a String as well (note: here we assume this is
// dynamically changeable)
- mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
+ mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
assertEquals(quote("2001-05-25"), mapper.writeValueAsString(date));
}
@@ -138,7 +138,7 @@
assertEquals("[2001,5,25]", mapper.writeValueAsString(date));
// but we can force it to be a String as well (note: here we assume this is
// dynamically changeable)
- mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
+ mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
assertEquals(quote("2001-05-25"), mapper.writeValueAsString(date));
}
@@ -177,7 +177,7 @@
assertEquals("[2001,5,25,10,15,30,37]", mapper.writeValueAsString(date));
// but we can force it to be a String as well (note: here we assume this is
// dynamically changeable)
- mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
+ mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
assertEquals(quote("2001-05-25T10:15:30.037"), mapper.writeValueAsString(date));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/introspect/TestJacksonAnnotationIntrospector.java b/src/test/java/com/fasterxml/jackson/databind/introspect/TestJacksonAnnotationIntrospector.java
index b852253..339a7cc 100644
--- a/src/test/java/com/fasterxml/jackson/databind/introspect/TestJacksonAnnotationIntrospector.java
+++ b/src/test/java/com/fasterxml/jackson/databind/introspect/TestJacksonAnnotationIntrospector.java
@@ -155,7 +155,7 @@
public void testSerializeDeserializeWithJaxbAnnotations() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
+ mapper.enable(SerializationFeature.INDENT_OUTPUT);
JacksonExample ex = new JacksonExample();
QName qname = new QName("urn:hi", "hello");
ex.setQname(qname);
diff --git a/src/test/java/com/fasterxml/jackson/databind/introspect/TestPOJOPropertiesCollector.java b/src/test/java/com/fasterxml/jackson/databind/introspect/TestPOJOPropertiesCollector.java
index 039e590..9ced40b 100644
--- a/src/test/java/com/fasterxml/jackson/databind/introspect/TestPOJOPropertiesCollector.java
+++ b/src/test/java/com/fasterxml/jackson/databind/introspect/TestPOJOPropertiesCollector.java
@@ -7,7 +7,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
public class TestPOJOPropertiesCollector
extends BaseMapTest
@@ -301,7 +300,7 @@
public void testGlobalVisibilityForGetters()
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.AUTO_DETECT_GETTERS, false);
+ m.configure(MapperFeature.AUTO_DETECT_GETTERS, false);
POJOPropertiesCollector coll = collector(m, SimpleGetterVisibility.class, true);
// should be 1, expect that we disabled getter auto-detection, so
Map<String, POJOPropertyBuilder> props = coll.getPropertyMap();
@@ -372,7 +371,7 @@
public void testJackson703() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(MapperConfig.Feature.USE_ANNOTATIONS, false);
+ mapper.configure(MapperFeature.USE_ANNOTATIONS, false);
BasicBeanDescription beanDesc = mapper.getSerializationConfig().introspect(mapper.constructType(Jackson703.class));
assertNotNull(beanDesc);
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestAbstractTypeNames.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestAbstractTypeNames.java
index 2710e89..33ec314 100644
--- a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestAbstractTypeNames.java
+++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestAbstractTypeNames.java
@@ -99,7 +99,7 @@
public void testEmptyCollection() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
+ mapper.configure(SerializationFeature.INDENT_OUTPUT, true);
List<User>friends = new ArrayList<User>();
friends.add(new DefaultUser("Joe Hildebrandt", null));
friends.add(new DefaultEmployee("Richard Nasr",null,"MDA"));
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestGenericListSerialization.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestGenericListSerialization.java
index 341d933..365b466 100644
--- a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestGenericListSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestGenericListSerialization.java
@@ -9,7 +9,6 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.type.TypeFactory;
public class TestGenericListSerialization
@@ -66,7 +65,7 @@
embedded.add(new Child1());
embedded.add(new Child2());
input.setResult(embedded);
- mapper.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ mapper.configure(MapperFeature.USE_STATIC_TYPING, true);
JavaType rootType = TypeFactory.defaultInstance().constructType(new TypeReference<JSONResponse<List<Parent>>>() { });
byte[] json = mapper.writerWithType(rootType).writeValueAsBytes(input);
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestSubtypes.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestSubtypes.java
index e63af3f..29f83a5 100644
--- a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestSubtypes.java
+++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestSubtypes.java
@@ -7,7 +7,7 @@
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.jsontype.NamedType;
import com.fasterxml.jackson.databind.module.SimpleModule;
@@ -143,19 +143,19 @@
{
// First, with annotations
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, true);
+ mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true);
String json = mapper.writeValueAsString(new EmptyBean());
assertEquals("{\"@type\":\"TestSubtypes$EmptyBean\"}", json);
mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
+ mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
json = mapper.writeValueAsString(new EmptyBean());
assertEquals("{\"@type\":\"TestSubtypes$EmptyBean\"}", json);
// and then with defaults
mapper = new ObjectMapper();
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
- mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
+ mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
json = mapper.writeValueAsString(new EmptyNonFinal());
assertEquals("[\"com.fasterxml.jackson.databind.jsontype.TestSubtypes$EmptyNonFinal\",{}]", json);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedArraySerialization.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedArraySerialization.java
index 8a44e40..aed0f81 100644
--- a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedArraySerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedArraySerialization.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
/**
* Unit tests for verifying that types that serialize as JSON Arrays
@@ -150,7 +149,7 @@
// then with static typing enabled:
m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ m.configure(MapperFeature.USE_STATIC_TYPING, true);
assertEquals(EXP, m.writeValueAsString(input));
}
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedSerialization.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedSerialization.java
index 9246ad6..cd857f9 100644
--- a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedSerialization.java
@@ -182,7 +182,7 @@
public void testEmptyBean() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
+ m.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
assertEquals("{\"@type\":\"empty\"}", m.writeValueAsString(new Empty()));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestWithGenerics.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestWithGenerics.java
index f17446d..c5e695f 100644
--- a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestWithGenerics.java
+++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestWithGenerics.java
@@ -155,7 +155,7 @@
ObjectMapper om = new ObjectMapper();
om.enableDefaultTyping( ObjectMapper.DefaultTyping.JAVA_LANG_OBJECT, JsonTypeInfo.As.PROPERTY );
om.setSerializationInclusion(JsonInclude.Include.NON_NULL );
- om.enable( SerializationConfig.Feature.INDENT_OUTPUT);
+ om.enable( SerializationFeature.INDENT_OUTPUT);
MyClass mc = new MyClass();
diff --git a/src/test/java/com/fasterxml/jackson/databind/mixins/TestMixinSerWithViews.java b/src/test/java/com/fasterxml/jackson/databind/mixins/TestMixinSerWithViews.java
index 6a5dde0..03a8089 100644
--- a/src/test/java/com/fasterxml/jackson/databind/mixins/TestMixinSerWithViews.java
+++ b/src/test/java/com/fasterxml/jackson/databind/mixins/TestMixinSerWithViews.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
public class TestMixinSerWithViews
extends BaseMapTest
@@ -175,8 +174,8 @@
ObjectMapper mapper = new ObjectMapper();
A a = new A("myname", 29, "mysurname");
- // Property SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION set to false
- mapper.configure(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION, Boolean.FALSE);
+ // Property SerializationConfig.SerializationFeature.DEFAULT_VIEW_INCLUSION set to false
+ mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, Boolean.FALSE);
mapper.addMixInAnnotations(A.class, AMixInAnnotation.class);
String json = mapper.writerWithView(AView.class).writeValueAsString(a);
@@ -192,9 +191,9 @@
private ObjectMapper createObjectMapper( )
{
ObjectMapper objectMapper = new ObjectMapper( );
- objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false );
+ objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false );
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL );
- objectMapper.configure(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION, false );
+ objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false );
Map<Class<?>, Class<?>> sourceMixins = new HashMap<Class<?>, Class<?>>( );
sourceMixins.put( SimpleTestData.class, TestDataJAXBMixin.class );
diff --git a/src/test/java/com/fasterxml/jackson/databind/module/TestTypeModifiers.java b/src/test/java/com/fasterxml/jackson/databind/module/TestTypeModifiers.java
index 5dd6cd5..944d373 100644
--- a/src/test/java/com/fasterxml/jackson/databind/module/TestTypeModifiers.java
+++ b/src/test/java/com/fasterxml/jackson/databind/module/TestTypeModifiers.java
@@ -6,6 +6,8 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.module.SimpleDeserializers;
diff --git a/src/test/java/com/fasterxml/jackson/databind/module/TestValueInstantiator.java b/src/test/java/com/fasterxml/jackson/databind/module/TestValueInstantiator.java
index 248b24c..1f7f312 100644
--- a/src/test/java/com/fasterxml/jackson/databind/module/TestValueInstantiator.java
+++ b/src/test/java/com/fasterxml/jackson/databind/module/TestValueInstantiator.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonValueInstantiator;
+import com.fasterxml.jackson.databind.cfg.DeserializationConfig;
import com.fasterxml.jackson.databind.deser.*;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.type.TypeFactory;
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationAnyGetter.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationAnyGetter.java
index 3013bd0..7074f00 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationAnyGetter.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationAnyGetter.java
@@ -6,7 +6,7 @@
import com.fasterxml.jackson.databind.BaseMapTest;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationConfig;
+import com.fasterxml.jackson.databind.SerializationFeature;
public class TestAnnotationAnyGetter
extends BaseMapTest
@@ -63,13 +63,13 @@
// First, with normal fail settings:
m = new ObjectMapper();
- m.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, true);
+ m.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true);
String json = serializeAsString(m, new AnyOnlyBean());
assertEquals("{\"a\":3}", json);
// then without fail
m = new ObjectMapper();
- m.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
+ m.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
json = serializeAsString(m, new AnyOnlyBean());
assertEquals("{\"a\":3}", json);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonSerialize.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonSerialize.java
index 4750aec..d47246b 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonSerialize.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonSerialize.java
@@ -8,7 +8,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
/**
* This unit test suite tests use of @JsonClass Annotation
@@ -192,7 +191,7 @@
public void testStaticTypingWithMap() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ m.configure(MapperFeature.USE_STATIC_TYPING, true);
ValueMap map = new ValueMap();
map.put("a", new ValueClass());
assertEquals("{\"a\":{\"x\":3}}", serializeAsString(m, map));
@@ -201,7 +200,7 @@
public void testStaticTypingWithArrayList() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ m.configure(MapperFeature.USE_STATIC_TYPING, true);
ValueList list = new ValueList();
list.add(new ValueClass());
assertEquals("[{\"x\":3}]", m.writeValueAsString(list));
@@ -210,7 +209,7 @@
public void testStaticTypingWithLinkedList() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ m.configure(MapperFeature.USE_STATIC_TYPING, true);
ValueLinkedList list = new ValueLinkedList();
list.add(new ValueClass());
assertEquals("[{\"x\":3}]", serializeAsString(m, list));
@@ -219,7 +218,7 @@
public void testStaticTypingWithArray() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ m.configure(MapperFeature.USE_STATIC_TYPING, true);
ValueInterface[] array = new ValueInterface[] { new ValueClass() };
assertEquals("[{\"x\":3}]", serializeAsString(m, array));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonValue.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonValue.java
index 3a1e098..22de7bb 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonValue.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotationJsonValue.java
@@ -7,7 +7,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
/**
@@ -127,7 +126,7 @@
// then static
ObjectMapper staticMapper = new ObjectMapper();
- staticMapper.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ staticMapper.configure(MapperFeature.USE_STATIC_TYPING, true);
assertEquals("{\"a\":\"a\"}", staticMapper.writeValueAsString(new ValueWrapper()));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotations.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotations.java
index 802bad4..95c3706 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotations.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestAnnotations.java
@@ -9,7 +9,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
/**
* This unit test suite tests use of Annotations for
@@ -101,7 +100,7 @@
public int getZ() { return 3; }
}
- // For [JACKSON-666] ("Feature of the Beast!")
+ // For [JACKSON-666] ("SerializationFeature of the Beast!")
@JsonPropertyOrder(alphabetic=true)
static class GettersWithoutSetters
{
@@ -240,14 +239,14 @@
{
ObjectMapper m = new ObjectMapper();
GettersWithoutSetters bean = new GettersWithoutSetters(123);
- assertFalse(m.isEnabled(MapperConfig.Feature.REQUIRE_SETTERS_FOR_GETTERS));
+ assertFalse(m.isEnabled(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS));
// by default, all 4 found:
assertEquals("{\"a\":3,\"b\":4,\"c\":5,\"d\":6}", m.writeValueAsString(bean));
// but 3 if we require mutator:
m = new ObjectMapper();
- m.enable(MapperConfig.Feature.REQUIRE_SETTERS_FOR_GETTERS);
+ m.enable(MapperFeature.REQUIRE_SETTERS_FOR_GETTERS);
assertEquals("{\"a\":3,\"c\":5,\"d\":6}", m.writeValueAsString(bean));
}
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestBeanSerializer.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestBeanSerializer.java
index 60bf590..c1b1636 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestBeanSerializer.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestBeanSerializer.java
@@ -7,6 +7,7 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.introspect.AnnotatedField;
import com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder;
import com.fasterxml.jackson.databind.module.SimpleModule;
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestCollectionSerialization.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestCollectionSerialization.java
index c6a4a96..36f2146 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestCollectionSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestCollectionSerialization.java
@@ -310,13 +310,13 @@
EmptyListBean list = new EmptyListBean();
EmptyArrayBean array = new EmptyArrayBean();
ObjectMapper m = new ObjectMapper();
- assertTrue(m.getSerializationConfig().isEnabled(SerializationConfig.Feature.WRITE_EMPTY_JSON_ARRAYS));
+ assertTrue(m.getSerializationConfig().isEnabled(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS));
assertEquals("{\"empty\":[]}", m.writeValueAsString(list));
assertEquals("{\"empty\":[]}", m.writeValueAsString(array));
// note: value of setting may be cached when constructing serializer, need a new instance
m = new ObjectMapper();
- m.configure(SerializationConfig.Feature.WRITE_EMPTY_JSON_ARRAYS, false);
+ m.configure(SerializationFeature.WRITE_EMPTY_JSON_ARRAYS, false);
assertEquals("{}", m.writeValueAsString(list));
assertEquals("{}", m.writeValueAsString(array));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestConfig.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestConfig.java
index 29cee28..7ca03e7 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestConfig.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestConfig.java
@@ -4,7 +4,7 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
/**
@@ -43,22 +43,22 @@
SerializationConfig cfg = m.getSerializationConfig();
// First, defaults:
- assertTrue(cfg.isEnabled(MapperConfig.Feature.USE_ANNOTATIONS));
- assertTrue(cfg.isEnabled(MapperConfig.Feature.AUTO_DETECT_GETTERS));
- assertTrue(cfg.isEnabled(MapperConfig.Feature.CAN_OVERRIDE_ACCESS_MODIFIERS));
+ assertTrue(cfg.isEnabled(MapperFeature.USE_ANNOTATIONS));
+ assertTrue(cfg.isEnabled(MapperFeature.AUTO_DETECT_GETTERS));
+ assertTrue(cfg.isEnabled(MapperFeature.CAN_OVERRIDE_ACCESS_MODIFIERS));
- assertTrue(cfg.isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS));
+ assertTrue(cfg.isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS));
- assertFalse(cfg.isEnabled(SerializationConfig.Feature.INDENT_OUTPUT));
- assertFalse(cfg.isEnabled(MapperConfig.Feature.USE_STATIC_TYPING));
+ assertFalse(cfg.isEnabled(SerializationFeature.INDENT_OUTPUT));
+ assertFalse(cfg.isEnabled(MapperFeature.USE_STATIC_TYPING));
// since 1.3:
- assertTrue(cfg.isEnabled(MapperConfig.Feature.AUTO_DETECT_IS_GETTERS));
+ assertTrue(cfg.isEnabled(MapperFeature.AUTO_DETECT_IS_GETTERS));
// since 1.4
- assertTrue(cfg.isEnabled(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS));
+ assertTrue(cfg.isEnabled(SerializationFeature.FAIL_ON_EMPTY_BEANS));
// since 1.5
- assertTrue(cfg.isEnabled(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION));
+ assertTrue(cfg.isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION));
}
@@ -82,7 +82,7 @@
public void testIndentation() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
+ m.configure(SerializationFeature.INDENT_OUTPUT, true);
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("a", Integer.valueOf(2));
String result = serializeAsString(m, map).trim();
@@ -95,12 +95,12 @@
{
// first: verify that annotation introspection is enabled by default
ObjectMapper m = new ObjectMapper();
- assertTrue(m.isEnabled(MapperConfig.Feature.USE_ANNOTATIONS));
+ assertTrue(m.isEnabled(MapperFeature.USE_ANNOTATIONS));
Map<String,Object> result = writeAndMap(m, new AnnoBean());
assertEquals(2, result.size());
m = new ObjectMapper();
- m.configure(MapperConfig.Feature.USE_ANNOTATIONS, false);
+ m.configure(MapperFeature.USE_ANNOTATIONS, false);
result = writeAndMap(m, new AnnoBean());
assertEquals(1, result.size());
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestDateSerialization.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestDateSerialization.java
index 19cfb29..12dd1d7 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestDateSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestDateSerialization.java
@@ -31,7 +31,7 @@
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
// default is to output time stamps...
- assertTrue(mapper.getSerializationConfig().isEnabled(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS));
+ assertTrue(mapper.getSerializationConfig().isEnabled(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS));
// shouldn't matter which offset we give...
mapper.writeValue(sw, new Date(199L));
assertEquals("199", sw.toString());
@@ -41,7 +41,7 @@
{
ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
- mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
+ mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
// let's hit epoch start
mapper.writeValue(sw, new Date(0L));
assertEquals("\"1970-01-01T00:00:00.000+0000\"", sw.toString());
@@ -104,13 +104,13 @@
{
ObjectMapper mapper = new ObjectMapper();
Map<Date,Integer> map = new HashMap<Date,Integer>();
- assertFalse(mapper.isEnabled(SerializationConfig.Feature.WRITE_DATE_KEYS_AS_TIMESTAMPS));
+ assertFalse(mapper.isEnabled(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS));
map.put(new Date(0L), Integer.valueOf(1));
// by default will serialize as ISO-8601 values...
assertEquals("{\"1970-01-01T00:00:00.000+0000\":1}", mapper.writeValueAsString(map));
// but can change to use timestamps too
- mapper.configure(SerializationConfig.Feature.WRITE_DATE_KEYS_AS_TIMESTAMPS, true);
+ mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, true);
assertEquals("{\"0\":1}", mapper.writeValueAsString(map));
}
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestEmptyClass.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestEmptyClass.java
index 932ea17..6aa1857 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestEmptyClass.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestEmptyClass.java
@@ -84,8 +84,8 @@
public void testEmptyWithFeature() throws Exception
{
// should be enabled by default
- assertTrue(mapper.getSerializationConfig().isEnabled(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS));
- mapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
+ assertTrue(mapper.getSerializationConfig().isEnabled(SerializationFeature.FAIL_ON_EMPTY_BEANS));
+ mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
assertEquals("{}", serializeAsString(mapper, new Empty()));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java
index e839c2b..3a212c0 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestEnumSerialization.java
@@ -180,7 +180,7 @@
public void testToStringEnum() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING, true);
+ mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
assertEquals("\"b\"", mapper.writeValueAsString(LowerCaseEnum.B));
}
@@ -188,7 +188,7 @@
public void testToStringEnumWithEnumMap() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING, true);
+ mapper.configure(SerializationFeature.WRITE_ENUMS_USING_TO_STRING, true);
EnumMap<LowerCaseEnum,String> m = new EnumMap<LowerCaseEnum,String>(LowerCaseEnum.class);
m.put(LowerCaseEnum.C, "value");
assertEquals("{\"c\":\"value\"}", mapper.writeValueAsString(m));
@@ -208,11 +208,11 @@
{
// By default, serialize using name
ObjectMapper mapper = new ObjectMapper();
- assertFalse(mapper.isEnabled(SerializationConfig.Feature.WRITE_ENUMS_USING_INDEX));
+ assertFalse(mapper.isEnabled(SerializationFeature.WRITE_ENUMS_USING_INDEX));
assertEquals(quote("B"), mapper.writeValueAsString(TestEnum.B));
// but we can change (dynamically, too!) it to be number-based
- mapper.enable(SerializationConfig.Feature.WRITE_ENUMS_USING_INDEX);
+ mapper.enable(SerializationFeature.WRITE_ENUMS_USING_INDEX);
assertEquals("1", mapper.writeValueAsString(TestEnum.B));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestFeatures.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestFeatures.java
index 847e8ab..9f42fba 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestFeatures.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestFeatures.java
@@ -8,7 +8,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
/**
* Unit tests for checking whether JsonSerializerFactory.Feature
@@ -99,7 +98,7 @@
// Then auto-detection disabled. But note: we MUST create a new
// mapper, since old version of serializer may be cached by now
m = new ObjectMapper();
- m.configure(MapperConfig.Feature.AUTO_DETECT_GETTERS, false);
+ m.configure(MapperFeature.AUTO_DETECT_GETTERS, false);
result = writeAndMap(m, new GetterClass());
assertEquals(1, result.size());
assertTrue(result.containsKey("x"));
@@ -114,7 +113,7 @@
assertTrue(result.containsKey("x"));
// And then class-level auto-detection enabling, should override defaults
- m.configure(MapperConfig.Feature.AUTO_DETECT_GETTERS, false);
+ m.configure(MapperFeature.AUTO_DETECT_GETTERS, false);
result = writeAndMap(m, new EnabledGetterClass());
assertEquals(2, result.size());
assertTrue(result.containsKey("x"));
@@ -125,8 +124,8 @@
{
ObjectMapper m = new ObjectMapper();
// class level should override
- m.configure(MapperConfig.Feature.AUTO_DETECT_GETTERS, true);
- m.configure(MapperConfig.Feature.AUTO_DETECT_IS_GETTERS, false);
+ m.configure(MapperFeature.AUTO_DETECT_GETTERS, true);
+ m.configure(MapperFeature.AUTO_DETECT_IS_GETTERS, false);
Map<String,Object> result = writeAndMap(m, new EnabledIsGetterClass());
assertEquals(1, result.size());
assertTrue(result.containsKey("ok"));
@@ -137,12 +136,12 @@
public void testConfigChainability()
{
ObjectMapper m = new ObjectMapper();
- assertTrue(m.isEnabled(MapperConfig.Feature.AUTO_DETECT_SETTERS));
- assertTrue(m.isEnabled(MapperConfig.Feature.AUTO_DETECT_GETTERS));
- m.configure(MapperConfig.Feature.AUTO_DETECT_SETTERS, false)
- .configure(MapperConfig.Feature.AUTO_DETECT_GETTERS, false);
- assertFalse(m.isEnabled(MapperConfig.Feature.AUTO_DETECT_SETTERS));
- assertFalse(m.isEnabled(MapperConfig.Feature.AUTO_DETECT_GETTERS));
+ assertTrue(m.isEnabled(MapperFeature.AUTO_DETECT_SETTERS));
+ assertTrue(m.isEnabled(MapperFeature.AUTO_DETECT_GETTERS));
+ m.configure(MapperFeature.AUTO_DETECT_SETTERS, false)
+ .configure(MapperFeature.AUTO_DETECT_GETTERS, false);
+ assertFalse(m.isEnabled(MapperFeature.AUTO_DETECT_SETTERS));
+ assertFalse(m.isEnabled(MapperFeature.AUTO_DETECT_GETTERS));
}
// Test for [JACKSON-282]
@@ -155,7 +154,7 @@
assertFalse(bean.wasClosed);
// but can enable it:
- m.configure(SerializationConfig.Feature.CLOSE_CLOSEABLE, true);
+ m.configure(SerializationFeature.CLOSE_CLOSEABLE, true);
bean = new CloseableBean();
m.writeValueAsString(bean);
assertTrue(bean.wasClosed);
@@ -175,7 +174,7 @@
assertEquals(quote("abc"), m.writeValueAsString(chars));
// new feature: serialize as JSON array:
- m.configure(SerializationConfig.Feature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS, true);
+ m.configure(SerializationFeature.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS, true);
assertEquals("[\"a\",\"b\",\"c\"]", m.writeValueAsString(chars));
}
@@ -183,7 +182,7 @@
public void testFlushingAutomatic() throws IOException
{
ObjectMapper mapper = new ObjectMapper();
- assertTrue(mapper.getSerializationConfig().isEnabled(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE));
+ assertTrue(mapper.getSerializationConfig().isEnabled(SerializationFeature.FLUSH_AFTER_WRITE_VALUE));
// default is to flush after writeValue()
StringWriter sw = new StringWriter();
JsonGenerator jgen = mapper.getJsonFactory().createJsonGenerator(sw);
@@ -205,7 +204,7 @@
{
// but should not occur if configured otherwise
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.FLUSH_AFTER_WRITE_VALUE, false);
+ mapper.configure(SerializationFeature.FLUSH_AFTER_WRITE_VALUE, false);
StringWriter sw = new StringWriter();
JsonGenerator jgen = mapper.getJsonFactory().createJsonGenerator(sw);
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestMapSerialization.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestMapSerialization.java
index 332d06f..520ac4e 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestMapSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestMapSerialization.java
@@ -76,7 +76,7 @@
// by default, should output null-valued entries:
assertEquals("{\"a\":null}", m.writeValueAsString(map));
// but not if explicitly asked not to (note: config value is dynamic here)
- m.configure(SerializationConfig.Feature.WRITE_NULL_MAP_VALUES, false);
+ m.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, false);
assertEquals("{}", m.writeValueAsString(map));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestNullSerialization.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestNullSerialization.java
index da98874..c2fc88e 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestNullSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestNullSerialization.java
@@ -4,6 +4,7 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
public class TestNullSerialization
extends BaseMapTest
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestRootType.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestRootType.java
index bee63d0..bd2fc6b 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestRootType.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestRootType.java
@@ -6,12 +6,10 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.annotation.*;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
import com.fasterxml.jackson.databind.type.TypeFactory;
/**
@@ -107,7 +105,7 @@
{
ObjectMapper mapper = new ObjectMapper();
// must force static typing, otherwise won't matter a lot
- mapper.configure(MapperConfig.Feature.USE_STATIC_TYPING, true);
+ mapper.configure(MapperFeature.USE_STATIC_TYPING, true);
SubType[] ob = new SubType[] { new SubType() };
String json = mapper.writerWithType(BaseInterface[].class).writeValueAsString(ob);
// should propagate interface type through due to root declaration; static typing
@@ -160,7 +158,7 @@
public void testRootWrapping() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
String json = mapper.writeValueAsString(new StringWrapper("abc"));
assertEquals("{\"StringWrapper\":{\"str\":\"abc\"}}", json);
}
@@ -182,7 +180,7 @@
public void testRootNameAnnotation() throws Exception
{
ObjectMapper mapper = new ObjectMapper();
- mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
+ mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);
String json = mapper.writeValueAsString(new WithRootName());
assertEquals("{\"root\":{\"a\":3}}", json);
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializationOrder.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializationOrder.java
index a3f8a8b..8b269ae 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializationOrder.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializationOrder.java
@@ -3,7 +3,6 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
/**
* Unit tests for verifying that constraints on ordering of serialized
@@ -114,7 +113,7 @@
public void testOrderWithFeature() throws Exception
{
ObjectMapper m = new ObjectMapper();
- m.configure(MapperConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true);
+ m.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true);
assertEquals("{\"a\":1,\"b\":2,\"c\":3,\"d\":4}", serializeAsString(m, new BeanFor459()));
}
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializerProvider.java b/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializerProvider.java
index 2f263c9..52f3350 100644
--- a/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializerProvider.java
+++ b/src/test/java/com/fasterxml/jackson/databind/ser/TestSerializerProvider.java
@@ -1,6 +1,7 @@
package com.fasterxml.jackson.databind.ser;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.cfg.SerializationConfig;
import com.fasterxml.jackson.databind.ser.BeanSerializerFactory;
public class TestSerializerProvider
diff --git a/src/test/java/com/fasterxml/jackson/databind/views/TestViewDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/views/TestViewDeserialization.java
index 959924b..e5e4edc 100644
--- a/src/test/java/com/fasterxml/jackson/databind/views/TestViewDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/views/TestViewDeserialization.java
@@ -3,7 +3,6 @@
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
public class TestViewDeserialization extends BaseMapTest
{
@@ -92,7 +91,7 @@
assertEquals(9, bean.b);
ObjectMapper myMapper = new ObjectMapper();
- myMapper.disable(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION);
+ myMapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
// but with, say, AA, will not get 'b'
bean = myMapper.readerWithView(ViewAA.class)
diff --git a/src/test/java/com/fasterxml/jackson/databind/views/TestViewSerialization.java b/src/test/java/com/fasterxml/jackson/databind/views/TestViewSerialization.java
index 31e3fbe..b20e12e 100644
--- a/src/test/java/com/fasterxml/jackson/databind/views/TestViewSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/views/TestViewSerialization.java
@@ -6,7 +6,6 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
/**
* Unit tests for verifying JSON view functionality: ability to declaratively
@@ -138,7 +137,7 @@
// but can also change (but not necessarily on the fly...)
mapper = new ObjectMapper();
- mapper.configure(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION, false);
+ mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
// with this setting, only explicit inclusions count:
String json = mapper.writerWithView(ViewA.class).writeValueAsString(bean);
map = mapper.readValue(json, Map.class);
diff --git a/src/test/java/com/fasterxml/jackson/databind/views/TestViewsSerialization2.java b/src/test/java/com/fasterxml/jackson/databind/views/TestViewsSerialization2.java
index e64e43e..eac65b2 100644
--- a/src/test/java/com/fasterxml/jackson/databind/views/TestViewsSerialization2.java
+++ b/src/test/java/com/fasterxml/jackson/databind/views/TestViewsSerialization2.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.cfg.MapperConfig;
public class TestViewsSerialization2 extends BaseMapTest
{
@@ -38,10 +37,10 @@
private ObjectMapper createObjectMapper(Class<?> viewClass)
{
ObjectMapper objectMapper = new ObjectMapper( );
- objectMapper.configure( SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false );
+ objectMapper.configure( SerializationFeature.FAIL_ON_EMPTY_BEANS, false );
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL );
- objectMapper.configure(MapperConfig.Feature.DEFAULT_VIEW_INCLUSION, false );
-// objectMapper.getSerializationConfig( ).disable( SerializationConfig.Feature.DEFAULT_VIEW_INCLUSION );
+ objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false );
+// objectMapper.getSerializationConfig( ).disable( SerializationConfig.SerializationFeature.DEFAULT_VIEW_INCLUSION );
// objectMapper.getSerializationConfig( ).setSerializationView( viewClass );
return objectMapper;
}