diff --git a/src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java b/src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java
index ebf8a8039c..706daa1de2 100644
--- a/src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java
+++ b/src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java
@@ -61,11 +61,6 @@ public final class DeserializationConfig
*/
protected final int _parserFeatures;
- /**
- * Bitflag of {@link com.fasterxml.jackson.core.JsonParser.Feature}s to enable/disable
- */
- protected final int _parserFeaturesToChange;
-
/**
* States of {@link com.fasterxml.jackson.core.FormatFeature}s to enable/disable.
*/
@@ -93,7 +88,6 @@ protected DeserializationConfig(DeserializationConfig src,
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -102,7 +96,7 @@ protected DeserializationConfig(DeserializationConfig src,
* @since 3.0
*/
public DeserializationConfig(MapperBuilder,?> b,
- int mapperFeatures, int deserFeatures,
+ int mapperFeatures, int deserFeatures, int parserFeatures,
SimpleMixInResolver mixins, RootNameLookup rootNames,
ConfigOverrides configOverrides)
{
@@ -111,8 +105,7 @@ public DeserializationConfig(MapperBuilder,?> b,
mixins, rootNames, configOverrides);
_deserFeatures = deserFeatures;
_problemHandlers = null;
- _parserFeatures = 0;
- _parserFeaturesToChange = 0;
+ _parserFeatures = parserFeatures;
_formatReadFeatures = 0;
_formatReadFeaturesToChange = 0;
}
@@ -125,15 +118,13 @@ public DeserializationConfig(MapperBuilder,?> b,
*/
private DeserializationConfig(DeserializationConfig src,
- int mapperFeatures, int deserFeatures,
- int parserFeatures, int parserFeatureMask,
+ int mapperFeatures, int deserFeatures, int parserFeatures,
int formatFeatures, int formatFeatureMask)
{
super(src, mapperFeatures);
_deserFeatures = deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = parserFeatures;
- _parserFeaturesToChange = parserFeatureMask;
_formatReadFeatures = formatFeatures;
_formatReadFeaturesToChange = formatFeatureMask;
}
@@ -148,7 +139,6 @@ private DeserializationConfig(DeserializationConfig src, SubtypeResolver str)
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -159,7 +149,6 @@ private DeserializationConfig(DeserializationConfig src, BaseSettings base)
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -170,7 +159,6 @@ private DeserializationConfig(DeserializationConfig src, JsonNodeFactory f)
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -182,7 +170,6 @@ private DeserializationConfig(DeserializationConfig src,
_deserFeatures = src._deserFeatures;
_problemHandlers = problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -193,7 +180,6 @@ private DeserializationConfig(DeserializationConfig src, PropertyName rootName)
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -204,7 +190,6 @@ private DeserializationConfig(DeserializationConfig src, Class> view)
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -215,7 +200,6 @@ protected DeserializationConfig(DeserializationConfig src, ContextAttributes att
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -226,7 +210,6 @@ protected DeserializationConfig(DeserializationConfig src, SimpleMixInResolver m
_deserFeatures = src._deserFeatures;
_problemHandlers = src._problemHandlers;
_parserFeatures = src._parserFeatures;
- _parserFeaturesToChange = src._parserFeaturesToChange;
_formatReadFeatures = src._formatReadFeatures;
_formatReadFeaturesToChange = src._formatReadFeaturesToChange;
}
@@ -247,9 +230,8 @@ protected final DeserializationConfig _withBase(BaseSettings newBase) {
@Override
protected final DeserializationConfig _withMapperFeatures(int mapperFeatures) {
- return new DeserializationConfig(this, mapperFeatures, _deserFeatures,
- _parserFeatures, _parserFeaturesToChange,
- _formatReadFeatures, _formatReadFeaturesToChange);
+ return new DeserializationConfig(this, mapperFeatures, _deserFeatures, _parserFeatures,
+ _formatReadFeatures, _formatReadFeaturesToChange);
}
/*
@@ -299,8 +281,7 @@ public DeserializationConfig with(DeserializationFeature feature)
{
int newDeserFeatures = (_deserFeatures | feature.getMask());
return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures, _parserFeatures,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -316,8 +297,7 @@ public DeserializationConfig with(DeserializationFeature first,
newDeserFeatures |= f.getMask();
}
return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures, _parserFeatures,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -333,7 +313,7 @@ public DeserializationConfig withFeatures(DeserializationFeature... features)
}
return (newDeserFeatures == _deserFeatures) ? this :
new DeserializationConfig(this, _mapperFeatures, newDeserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ _parserFeatures,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -346,7 +326,7 @@ public DeserializationConfig without(DeserializationFeature feature)
int newDeserFeatures = _deserFeatures & ~feature.getMask();
return (newDeserFeatures == _deserFeatures) ? this :
new DeserializationConfig(this, _mapperFeatures, newDeserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ _parserFeatures,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -362,8 +342,7 @@ public DeserializationConfig without(DeserializationFeature first,
newDeserFeatures &= ~f.getMask();
}
return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures, _parserFeatures,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -378,8 +357,7 @@ public DeserializationConfig withoutFeatures(DeserializationFeature... features)
newDeserFeatures &= ~f.getMask();
}
return (newDeserFeatures == _deserFeatures) ? this :
- new DeserializationConfig(this, _mapperFeatures, newDeserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ new DeserializationConfig(this, _mapperFeatures, newDeserFeatures, _parserFeatures,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -396,10 +374,8 @@ public DeserializationConfig withoutFeatures(DeserializationFeature... features)
public DeserializationConfig with(JsonParser.Feature feature)
{
int newSet = _parserFeatures | feature.getMask();
- int newMask = _parserFeaturesToChange | feature.getMask();
- return ((_parserFeatures == newSet) && (_parserFeaturesToChange == newMask)) ? this :
- new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- newSet, newMask,
+ return (_parserFeatures == newSet)? this :
+ new DeserializationConfig(this, _mapperFeatures, _deserFeatures, newSet,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -410,15 +386,11 @@ public DeserializationConfig with(JsonParser.Feature feature)
public DeserializationConfig withFeatures(JsonParser.Feature... features)
{
int newSet = _parserFeatures;
- int newMask = _parserFeaturesToChange;
for (JsonParser.Feature f : features) {
- int mask = f.getMask();
- newSet |= mask;
- newMask |= mask;
+ newSet |= f.getMask();
}
- return ((_parserFeatures == newSet) && (_parserFeaturesToChange == newMask)) ? this :
- new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- newSet, newMask,
+ return (_parserFeatures == newSet) ? this :
+ new DeserializationConfig(this, _mapperFeatures, _deserFeatures, newSet,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -429,31 +401,23 @@ public DeserializationConfig withFeatures(JsonParser.Feature... features)
public DeserializationConfig without(JsonParser.Feature feature)
{
int newSet = _parserFeatures & ~feature.getMask();
- int newMask = _parserFeaturesToChange | feature.getMask();
- return ((_parserFeatures == newSet) && (_parserFeaturesToChange == newMask)) ? this :
- new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- newSet, newMask,
+ return (_parserFeatures == newSet) ? this :
+ new DeserializationConfig(this, _mapperFeatures, _deserFeatures, newSet,
_formatReadFeatures, _formatReadFeaturesToChange);
}
/**
* Fluent factory method that will construct and return a new configuration
* object instance with specified features disabled.
- *
- * @since 2.5
*/
public DeserializationConfig withoutFeatures(JsonParser.Feature... features)
{
int newSet = _parserFeatures;
- int newMask = _parserFeaturesToChange;
for (JsonParser.Feature f : features) {
- int mask = f.getMask();
- newSet &= ~mask;
- newMask |= mask;
+ newSet &= ~f.getMask();
}
- return ((_parserFeatures == newSet) && (_parserFeaturesToChange == newMask)) ? this :
- new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- newSet, newMask,
+ return (_parserFeatures == newSet)? this :
+ new DeserializationConfig(this, _mapperFeatures, _deserFeatures, newSet,
_formatReadFeatures, _formatReadFeaturesToChange);
}
@@ -476,7 +440,7 @@ public DeserializationConfig with(FormatFeature feature)
return this;
}
return new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ _parserFeatures,
newSet, newMask);
}
@@ -495,7 +459,7 @@ public DeserializationConfig withFeatures(FormatFeature... features)
}
return ((_formatReadFeatures == newSet) && (_formatReadFeaturesToChange == newMask)) ? this :
new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ _parserFeatures,
newSet, newMask);
}
@@ -509,7 +473,7 @@ public DeserializationConfig without(FormatFeature feature)
int newMask = _formatReadFeaturesToChange | feature.getMask();
return ((_formatReadFeatures == newSet) && (_formatReadFeaturesToChange == newMask)) ? this :
new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ _parserFeatures,
newSet, newMask);
}
@@ -528,7 +492,7 @@ public DeserializationConfig withoutFeatures(FormatFeature... features)
}
return ((_formatReadFeatures == newSet) && (_formatReadFeaturesToChange == newMask)) ? this :
new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
- _parserFeatures, _parserFeaturesToChange,
+ _parserFeatures,
newSet, newMask);
}
@@ -574,7 +538,7 @@ public DeserializationConfig withNoProblemHandlers() {
* @since 3.0
*/
public int getParserFeatures(int defaults) {
- return (defaults & ~_parserFeaturesToChange) | _parserFeatures;
+ return _parserFeatures;
}
/**
@@ -603,19 +567,13 @@ public final boolean isEnabled(DeserializationFeature f) {
return (_deserFeatures & f.getMask()) != 0;
}
- public final boolean isEnabled(JsonParser.Feature f, TokenStreamFactory factory) {
- int mask = f.getMask();
- if ((_parserFeaturesToChange & mask) != 0) {
- return (_parserFeatures & f.getMask()) != 0;
- }
- return factory.isEnabled(f);
+ public final boolean isEnabled(JsonParser.Feature f) {
+ return (_parserFeatures & f.getMask()) != 0;
}
/**
* Bulk access method for checking that all features specified by
* mask are enabled.
- *
- * @since 2.3
*/
public final boolean hasDeserializationFeatures(int featureMask) {
return (_deserFeatures & featureMask) == featureMask;
@@ -624,8 +582,6 @@ public final boolean hasDeserializationFeatures(int featureMask) {
/**
* Bulk access method for checking that at least one of features specified by
* mask is enabled.
- *
- * @since 2.6
*/
public final boolean hasSomeOfFeatures(int featureMask) {
return (_deserFeatures & featureMask) != 0;
@@ -640,12 +596,10 @@ public final int getDeserializationFeatures() {
}
/**
- * Convenience method equivalant to:
+ * Convenience method equivalent to:
*
* isEnabled(DeserializationFeature.FAIL_ON_TRAILING_TOKENS)
*
- *
- * @since 2.9
*/
public final boolean requiresFullValue() {
return DeserializationFeature.FAIL_ON_TRAILING_TOKENS.enabledIn(_deserFeatures);
diff --git a/src/main/java/com/fasterxml/jackson/databind/MapperBuilder.java b/src/main/java/com/fasterxml/jackson/databind/MapperBuilder.java
index 2c69132827..7cd162e38c 100644
--- a/src/main/java/com/fasterxml/jackson/databind/MapperBuilder.java
+++ b/src/main/java/com/fasterxml/jackson/databind/MapperBuilder.java
@@ -5,6 +5,7 @@
import java.util.TimeZone;
import com.fasterxml.jackson.core.*;
+import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.databind.cfg.BaseSettings;
import com.fasterxml.jackson.databind.cfg.ConfigOverrides;
import com.fasterxml.jackson.databind.cfg.HandlerInstantiator;
@@ -34,6 +35,8 @@ public abstract class MapperBuilder base)
_streamFactory = base._streamFactory;
_baseSettings = base._baseSettings;
+ _parserFeatures = base._parserFeatures;
+ _generatorFeatures = base._deserFeatures;
+
_mapperFeatures = base._mapperFeatures;
_serFeatures = base._serFeatures;
_deserFeatures = base._deserFeatures;
@@ -202,14 +203,16 @@ protected MapperBuilder(MapperBuilder,?> base)
public SerializationConfig buildSerializationConfig(SimpleMixInResolver mixins,
RootNameLookup rootNames, ConfigOverrides configOverrides)
{
- return new SerializationConfig(this, _mapperFeatures, _serFeatures,
+ return new SerializationConfig(this,
+ _mapperFeatures, _serFeatures, _generatorFeatures,
mixins, rootNames, configOverrides);
}
public DeserializationConfig buildDeserializationConfig(SimpleMixInResolver mixins,
RootNameLookup rootNames, ConfigOverrides configOverrides)
{
- return new DeserializationConfig(this, _mapperFeatures, _deserFeatures,
+ return new DeserializationConfig(this,
+ _mapperFeatures, _deserFeatures, _parserFeatures,
mixins, rootNames, configOverrides);
}
@@ -289,6 +292,17 @@ public FilterProvider filterProvider() {
return _filterProvider;
}
+ public PrettyPrinter defaultPrettyPrinter() {
+ if (_defaultPrettyPrinter == null) {
+ _defaultPrettyPrinter = _defaultPrettyPrinter();
+ }
+ return _defaultPrettyPrinter;
+ }
+
+ protected PrettyPrinter _defaultPrettyPrinter() {
+ return DEFAULT_PRETTY_PRINTER;
+ }
+
/*
/**********************************************************
/* Accessors, deserialization
@@ -368,7 +382,7 @@ public B configure(SerializationFeature feature, boolean state)
}
return _this();
}
-
+
public B enable(DeserializationFeature... features) {
for (DeserializationFeature f : features) {
_deserFeatures |= f.getMask();
@@ -393,6 +407,58 @@ public B configure(DeserializationFeature feature, boolean state)
return _this();
}
+ /*
+ /**********************************************************
+ /* Changing features: parser, generator
+ /**********************************************************
+ */
+
+ public B enable(JsonParser.Feature... features) {
+ for (JsonParser.Feature f : features) {
+ _parserFeatures |= f.getMask();
+ }
+ return _this();
+ }
+
+ public B disable(JsonParser.Feature... features) {
+ for (JsonParser.Feature f : features) {
+ _parserFeatures &= ~f.getMask();
+ }
+ return _this();
+ }
+
+ public B configure(JsonParser.Feature feature, boolean state) {
+ if (state) {
+ _parserFeatures |= feature.getMask();
+ } else {
+ _parserFeatures &= ~feature.getMask();
+ }
+ return _this();
+ }
+
+ public B enable(JsonGenerator.Feature... features) {
+ for (JsonGenerator.Feature f : features) {
+ _generatorFeatures |= f.getMask();
+ }
+ return _this();
+ }
+
+ public B disable(JsonGenerator.Feature... features) {
+ for (JsonGenerator.Feature f : features) {
+ _generatorFeatures &= ~f.getMask();
+ }
+ return _this();
+ }
+
+ public B configure(JsonGenerator.Feature feature, boolean state) {
+ if (state) {
+ _generatorFeatures |= feature.getMask();
+ } else {
+ _generatorFeatures &= ~feature.getMask();
+ }
+ return _this();
+ }
+
/*
/**********************************************************
/* Changing factories, general
@@ -460,6 +526,11 @@ public B filterProvider(FilterProvider prov) {
return _this();
}
+ public B defaultPrettyPrinter(PrettyPrinter pp) {
+ _defaultPrettyPrinter = pp;
+ return _this();
+ }
+
/*
/**********************************************************
/* Changing factories, deserialization
diff --git a/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java b/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java
index ed4f88c60c..83ca006969 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ObjectMapper.java
@@ -1631,11 +1631,11 @@ public boolean isEnabled(JsonFactory.Feature f) {
}
public boolean isEnabled(JsonParser.Feature f) {
- return _deserializationConfig.isEnabled(f, _streamFactory);
+ return _deserializationConfig.isEnabled(f);
}
public boolean isEnabled(JsonGenerator.Feature f) {
- return _serializationConfig.isEnabled(f, _streamFactory);
+ return _serializationConfig.isEnabled(f);
}
/*
diff --git a/src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java b/src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java
index ec153fe201..d9b725b7bc 100644
--- a/src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java
+++ b/src/main/java/com/fasterxml/jackson/databind/SerializationConfig.java
@@ -3,7 +3,6 @@
import java.text.DateFormat;
import com.fasterxml.jackson.core.*;
-import com.fasterxml.jackson.core.util.DefaultPrettyPrinter;
import com.fasterxml.jackson.core.util.Instantiatable;
import com.fasterxml.jackson.databind.cfg.*;
@@ -30,8 +29,6 @@ public final class SerializationConfig
{
private static final long serialVersionUID = 3L;
- protected final static PrettyPrinter DEFAULT_PRETTY_PRINTER = new DefaultPrettyPrinter();
-
/*
/**********************************************************
/* Configured helper objects
@@ -66,16 +63,12 @@ public final class SerializationConfig
/* Generator features: generic, format-specific
/**********************************************************
*/
+
/**
* States of {@link com.fasterxml.jackson.core.JsonGenerator.Feature}s to enable/disable.
*/
protected final int _generatorFeatures;
- /**
- * Bitflag of {@link com.fasterxml.jackson.core.JsonGenerator.Feature}s to enable/disable
- */
- protected final int _generatorFeaturesToChange;
-
/**
* States of {@link com.fasterxml.jackson.core.FormatFeature}s to enable/disable.
*/
@@ -104,7 +97,6 @@ protected SerializationConfig(SerializationConfig src,
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -113,7 +105,7 @@ protected SerializationConfig(SerializationConfig src,
* @since 3.0
*/
public SerializationConfig(MapperBuilder,?> b,
- int mapperFeatures, int serFeatures,
+ int mapperFeatures, int serFeatures, int genFeatures,
SimpleMixInResolver mixins, RootNameLookup rootNames, ConfigOverrides configOverrides)
{
super(b.baseSettings(), mapperFeatures,
@@ -121,9 +113,8 @@ public SerializationConfig(MapperBuilder,?> b,
mixins, rootNames, configOverrides);
_serFeatures = serFeatures;
_filterProvider = b.filterProvider();
- _defaultPrettyPrinter = DEFAULT_PRETTY_PRINTER;
- _generatorFeatures = 0;
- _generatorFeaturesToChange = 0;
+ _defaultPrettyPrinter = b.defaultPrettyPrinter();
+ _generatorFeatures = genFeatures;
_formatWriteFeatures = 0;
_formatWriteFeaturesToChange = 0;
}
@@ -142,14 +133,12 @@ private SerializationConfig(SerializationConfig src, SubtypeResolver str)
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
private SerializationConfig(SerializationConfig src,
- int mapperFeatures, int serFeatures,
- int generatorFeatures, int generatorFeatureMask,
+ int mapperFeatures, int serFeatures, int generatorFeatures,
int formatFeatures, int formatFeaturesMask)
{
super(src, mapperFeatures);
@@ -157,7 +146,6 @@ private SerializationConfig(SerializationConfig src,
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = generatorFeatures;
- _generatorFeaturesToChange = generatorFeatureMask;
_formatWriteFeatures = formatFeatures;
_formatWriteFeaturesToChange = formatFeaturesMask;
}
@@ -169,7 +157,6 @@ private SerializationConfig(SerializationConfig src, BaseSettings base)
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -181,7 +168,6 @@ private SerializationConfig(SerializationConfig src, FilterProvider filters)
_filterProvider = filters;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -193,7 +179,6 @@ private SerializationConfig(SerializationConfig src, Class> view)
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -205,7 +190,6 @@ private SerializationConfig(SerializationConfig src, PropertyName rootName)
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -217,7 +201,6 @@ protected SerializationConfig(SerializationConfig src, ContextAttributes attrs)
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -229,7 +212,6 @@ protected SerializationConfig(SerializationConfig src, SimpleMixInResolver mixin
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = src._defaultPrettyPrinter;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -241,7 +223,6 @@ protected SerializationConfig(SerializationConfig src, PrettyPrinter defaultPP)
_filterProvider = src._filterProvider;
_defaultPrettyPrinter = defaultPP;
_generatorFeatures = src._generatorFeatures;
- _generatorFeaturesToChange = src._generatorFeaturesToChange;
_formatWriteFeatures = src._formatWriteFeatures;
_formatWriteFeaturesToChange = src._formatWriteFeaturesToChange;
}
@@ -260,7 +241,7 @@ protected final SerializationConfig _withBase(BaseSettings newBase) {
@Override
protected final SerializationConfig _withMapperFeatures(int mapperFeatures) {
return new SerializationConfig(this, mapperFeatures, _serFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ _generatorFeatures,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -326,8 +307,8 @@ public SerializationConfig with(SerializationFeature feature)
{
int newSerFeatures = _serFeatures | feature.getMask();
return (newSerFeatures == _serFeatures) ? this
- : new SerializationConfig(this, _mapperFeatures, newSerFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ : new SerializationConfig(this,
+ _mapperFeatures, newSerFeatures, _generatorFeatures,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -343,7 +324,7 @@ public SerializationConfig with(SerializationFeature first, SerializationFeature
}
return (newSerFeatures == _serFeatures) ? this
: new SerializationConfig(this, _mapperFeatures, newSerFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ _generatorFeatures,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -359,7 +340,7 @@ public SerializationConfig withFeatures(SerializationFeature... features)
}
return (newSerFeatures == _serFeatures) ? this
: new SerializationConfig(this, _mapperFeatures, newSerFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ _generatorFeatures,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -372,7 +353,7 @@ public SerializationConfig without(SerializationFeature feature)
int newSerFeatures = _serFeatures & ~feature.getMask();
return (newSerFeatures == _serFeatures) ? this
: new SerializationConfig(this, _mapperFeatures, newSerFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ _generatorFeatures,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -388,8 +369,7 @@ public SerializationConfig without(SerializationFeature first, SerializationFeat
}
return (newSerFeatures == _serFeatures) ? this
: new SerializationConfig(this, _mapperFeatures, newSerFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
- _formatWriteFeatures, _formatWriteFeaturesToChange);
+ _generatorFeatures, _formatWriteFeatures, _formatWriteFeaturesToChange);
}
/**
@@ -404,8 +384,7 @@ public SerializationConfig withoutFeatures(SerializationFeature... features)
}
return (newSerFeatures == _serFeatures) ? this
: new SerializationConfig(this, _mapperFeatures, newSerFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
- _formatWriteFeatures, _formatWriteFeaturesToChange);
+ _generatorFeatures, _formatWriteFeatures, _formatWriteFeaturesToChange);
}
/*
@@ -421,10 +400,8 @@ public SerializationConfig withoutFeatures(SerializationFeature... features)
public SerializationConfig with(JsonGenerator.Feature feature)
{
int newSet = _generatorFeatures | feature.getMask();
- int newMask = _generatorFeaturesToChange | feature.getMask();
- return ((_generatorFeatures == newSet) && (_generatorFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- newSet, newMask,
+ return (_generatorFeatures == newSet) ? this :
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, newSet,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -435,15 +412,11 @@ public SerializationConfig with(JsonGenerator.Feature feature)
public SerializationConfig withFeatures(JsonGenerator.Feature... features)
{
int newSet = _generatorFeatures;
- int newMask = _generatorFeaturesToChange;
for (JsonGenerator.Feature f : features) {
- int mask = f.getMask();
- newSet |= mask;
- newMask |= mask;
+ newSet |= f.getMask();
}
- return ((_generatorFeatures == newSet) && (_generatorFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- newSet, newMask,
+ return (_generatorFeatures == newSet) ? this :
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, newSet,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -454,10 +427,8 @@ public SerializationConfig withFeatures(JsonGenerator.Feature... features)
public SerializationConfig without(JsonGenerator.Feature feature)
{
int newSet = _generatorFeatures & ~feature.getMask();
- int newMask = _generatorFeaturesToChange | feature.getMask();
- return ((_generatorFeatures == newSet) && (_generatorFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- newSet, newMask,
+ return (_generatorFeatures == newSet) ? this :
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, newSet,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -468,15 +439,11 @@ public SerializationConfig without(JsonGenerator.Feature feature)
public SerializationConfig withoutFeatures(JsonGenerator.Feature... features)
{
int newSet = _generatorFeatures;
- int newMask = _generatorFeaturesToChange;
for (JsonGenerator.Feature f : features) {
- int mask = f.getMask();
- newSet &= ~mask;
- newMask |= mask;
+ newSet &= ~f.getMask();
}
- return ((_generatorFeatures == newSet) && (_generatorFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- newSet, newMask,
+ return (_generatorFeatures == newSet) ? this :
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, newSet,
_formatWriteFeatures, _formatWriteFeaturesToChange);
}
@@ -495,8 +462,7 @@ public SerializationConfig with(FormatFeature feature)
int newSet = _formatWriteFeatures | feature.getMask();
int newMask = _formatWriteFeaturesToChange | feature.getMask();
return ((_formatWriteFeatures == newSet) && (_formatWriteFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, _generatorFeatures,
newSet, newMask);
}
@@ -514,8 +480,7 @@ public SerializationConfig withFeatures(FormatFeature... features)
newMask |= mask;
}
return ((_formatWriteFeatures == newSet) && (_formatWriteFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, _generatorFeatures,
newSet, newMask);
}
@@ -528,8 +493,7 @@ public SerializationConfig without(FormatFeature feature)
int newSet = _formatWriteFeatures & ~feature.getMask();
int newMask = _formatWriteFeaturesToChange | feature.getMask();
return ((_formatWriteFeatures == newSet) && (_formatWriteFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, _generatorFeatures,
newSet, newMask);
}
@@ -547,11 +511,10 @@ public SerializationConfig withoutFeatures(FormatFeature... features)
newMask |= mask;
}
return ((_formatWriteFeatures == newSet) && (_formatWriteFeaturesToChange == newMask)) ? this :
- new SerializationConfig(this, _mapperFeatures, _serFeatures,
- _generatorFeatures, _generatorFeaturesToChange,
+ new SerializationConfig(this, _mapperFeatures, _serFeatures, _generatorFeatures,
newSet, newMask);
}
-
+
/*
/**********************************************************
/* Factory methods, other
@@ -590,7 +553,7 @@ public PrettyPrinter constructDefaultPrettyPrinter() {
* @since 3.0
*/
public int getGeneratorFeatures(int defaults) {
- return (defaults & ~_generatorFeaturesToChange) | _generatorFeatures;
+ return _generatorFeatures;
}
/**
@@ -624,12 +587,8 @@ public final boolean isEnabled(SerializationFeature f) {
* for feature, and only if not, checks state of passed-in
* factory.
*/
- public final boolean isEnabled(JsonGenerator.Feature f, TokenStreamFactory factory) {
- int mask = f.getMask();
- if ((_generatorFeaturesToChange & mask) != 0) {
- return (_generatorFeatures & f.getMask()) != 0;
- }
- return factory.isEnabled(f);
+ public final boolean isEnabled(JsonGenerator.Feature f) {
+ return (_generatorFeatures & f.getMask()) != 0;
}
/**
diff --git a/src/test/java/com/fasterxml/jackson/databind/cfg/DeserializationConfigTest.java b/src/test/java/com/fasterxml/jackson/databind/cfg/DeserializationConfigTest.java
index 4b0f31331b..85e0f6a0bd 100644
--- a/src/test/java/com/fasterxml/jackson/databind/cfg/DeserializationConfigTest.java
+++ b/src/test/java/com/fasterxml/jackson/databind/cfg/DeserializationConfigTest.java
@@ -56,12 +56,13 @@ public void testBasicFeatures() throws Exception
public void testParserFeatures() throws Exception
{
DeserializationConfig config = MAPPER.getDeserializationConfig();
+
assertNotSame(config, config.with(JsonParser.Feature.ALLOW_COMMENTS));
assertNotSame(config, config.withFeatures(JsonParser.Feature.ALLOW_COMMENTS,
JsonParser.Feature.ALLOW_MISSING_VALUES));
- assertNotSame(config, config.without(JsonParser.Feature.ALLOW_COMMENTS));
- assertNotSame(config, config.withoutFeatures(JsonParser.Feature.ALLOW_COMMENTS,
+ assertSame(config, config.without(JsonParser.Feature.ALLOW_COMMENTS));
+ assertSame(config, config.withoutFeatures(JsonParser.Feature.ALLOW_COMMENTS,
JsonParser.Feature.ALLOW_MISSING_VALUES));
}
diff --git a/src/test/java/com/fasterxml/jackson/databind/cfg/SerConfigTest.java b/src/test/java/com/fasterxml/jackson/databind/cfg/SerConfigTest.java
index f0084e3285..22beaf66ee 100644
--- a/src/test/java/com/fasterxml/jackson/databind/cfg/SerConfigTest.java
+++ b/src/test/java/com/fasterxml/jackson/databind/cfg/SerConfigTest.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.TokenStreamFactory;
import com.fasterxml.jackson.databind.*;
@@ -52,16 +51,16 @@ public void testSerConfig() throws Exception
public void testGeneratorFeatures() throws Exception
{
SerializationConfig config = MAPPER.getSerializationConfig();
- TokenStreamFactory f = MAPPER.tokenStreamFactory();
- assertFalse(config.isEnabled(JsonGenerator.Feature.ESCAPE_NON_ASCII, f));
+ assertFalse(config.isEnabled(JsonGenerator.Feature.ESCAPE_NON_ASCII));
assertNotSame(config, config.with(JsonGenerator.Feature.ESCAPE_NON_ASCII));
SerializationConfig newConfig = config.withFeatures(JsonGenerator.Feature.ESCAPE_NON_ASCII,
JsonGenerator.Feature.IGNORE_UNKNOWN);
assertNotSame(config, newConfig);
- assertTrue(newConfig.isEnabled(JsonGenerator.Feature.ESCAPE_NON_ASCII, f));
+ assertTrue(newConfig.isEnabled(JsonGenerator.Feature.ESCAPE_NON_ASCII));
- assertNotSame(config, config.without(JsonGenerator.Feature.ESCAPE_NON_ASCII));
- assertNotSame(config, config.withoutFeatures(JsonGenerator.Feature.ESCAPE_NON_ASCII,
+ // no change to settings, same object:
+ assertSame(config, config.without(JsonGenerator.Feature.ESCAPE_NON_ASCII));
+ assertSame(config, config.withoutFeatures(JsonGenerator.Feature.ESCAPE_NON_ASCII,
JsonGenerator.Feature.IGNORE_UNKNOWN));
}