Navigation Menu

Skip to content

Commit

Permalink
Config refactoring by demoting shared funcitonality to MapperConfigBase
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Nov 27, 2016
1 parent 52c9ffc commit a3601f5
Show file tree
Hide file tree
Showing 6 changed files with 322 additions and 360 deletions.
134 changes: 16 additions & 118 deletions src/main/java/com/fasterxml/jackson/databind/DeserializationConfig.java
@@ -1,18 +1,14 @@
package com.fasterxml.jackson.databind;

import java.text.DateFormat;
import java.util.*;

import com.fasterxml.jackson.annotation.*;

import com.fasterxml.jackson.core.*;

import com.fasterxml.jackson.databind.cfg.*;
import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
import com.fasterxml.jackson.databind.introspect.*;
import com.fasterxml.jackson.databind.jsontype.*;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.util.LinkedNode;
import com.fasterxml.jackson.databind.util.RootNameLookup;

Expand All @@ -29,8 +25,8 @@ public final class DeserializationConfig
extends MapperConfigBase<DeserializationFeature, DeserializationConfig>
implements java.io.Serializable // since 2.1
{
// since 2.5
private static final long serialVersionUID = 1;
// since 2.9
private static final long serialVersionUID = 2;

/*
/**********************************************************
Expand Down Expand Up @@ -261,86 +257,32 @@ protected DeserializationConfig(DeserializationConfig src, SimpleMixInResolver m

/*
/**********************************************************
/* Life-cycle, factory methods from MapperConfig
/* Life-cycle, general factory methods from MapperConfig(Base)
/**********************************************************
*/

@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,
_parserFeatures, _parserFeaturesToChange,
_formatReadFeatures, _formatReadFeaturesToChange);

}

@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,
_parserFeatures, _parserFeaturesToChange,
_formatReadFeatures, _formatReadFeaturesToChange);
}

@Override
public DeserializationConfig with(MapperFeature feature, boolean state)
{
int newMapperFlags;
if (state) {
newMapperFlags = _mapperFeatures | feature.getMask();
} else {
newMapperFlags = _mapperFeatures & ~feature.getMask();
}
return (newMapperFlags == _mapperFeatures) ? this :
new DeserializationConfig(this, newMapperFlags, _deserFeatures,
_parserFeatures, _parserFeaturesToChange,
_formatReadFeatures, _formatReadFeaturesToChange);
}

@Override
public DeserializationConfig with(ClassIntrospector ci) {
return _withBase(_base.withClassIntrospector(ci));
}

@Override
public DeserializationConfig with(AnnotationIntrospector ai) {
return _withBase(_base.withAnnotationIntrospector(ai));
@Override // since 2.9
protected final DeserializationConfig _withBase(BaseSettings newBase) {
return (_base == newBase) ? this : new DeserializationConfig(this, newBase);
}

@Override
public DeserializationConfig with(VisibilityChecker<?> vc) {
return _withBase(_base.withVisibilityChecker(vc));
@Override // since 2.9
protected final DeserializationConfig _withMapperFeatures(int mapperFeatures) {
return new DeserializationConfig(this, mapperFeatures, _deserFeatures,
_parserFeatures, _parserFeaturesToChange,
_formatReadFeatures, _formatReadFeaturesToChange);
}

@Override
public DeserializationConfig withVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility) {
return _withBase( _base.withVisibility(forMethod, visibility));
}

@Override
public DeserializationConfig with(TypeResolverBuilder<?> trb) {
return _withBase(_base.withTypeResolverBuilder(trb));
}
/*
/**********************************************************
/* Life-cycle, specific factory methods from MapperConfig
/**********************************************************
*/

@Override
public DeserializationConfig with(SubtypeResolver str) {
return (_subtypeResolver == str) ? this : new DeserializationConfig(this, str);
}

@Override
public DeserializationConfig with(PropertyNamingStrategy pns) {
return _withBase(_base.withPropertyNamingStrategy(pns));
}

@Override
public DeserializationConfig withRootName(PropertyName rootName) {
Expand All @@ -354,59 +296,15 @@ public DeserializationConfig withRootName(PropertyName rootName) {
return new DeserializationConfig(this, rootName);
}

@Override
public DeserializationConfig with(TypeFactory tf) {
return _withBase( _base.withTypeFactory(tf));
}

@Override
public DeserializationConfig with(DateFormat df) {
return _withBase(_base.withDateFormat(df));
}

@Override
public DeserializationConfig with(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);
}

@Override
public DeserializationConfig with(Locale l) {
return _withBase(_base.with(l));
}

@Override
public DeserializationConfig with(TimeZone tz) {
return _withBase(_base.with(tz));
}

@Override
public DeserializationConfig with(Base64Variant base64) {
return _withBase(_base.with(base64));
}

@Override
public DeserializationConfig with(ContextAttributes attrs) {
return (attrs == _attributes) ? this : new DeserializationConfig(this, attrs);
}

private final DeserializationConfig _withBase(BaseSettings newBase) {
return (_base == newBase) ? this : new DeserializationConfig(this, newBase);
}

/*
/**********************************************************
Expand Down
Expand Up @@ -1225,12 +1225,13 @@ public void setVisibilityChecker(VisibilityChecker<?> vc) {
*
* @since 2.6
*/
@SuppressWarnings("deprecation")
public ObjectMapper setVisibility(VisibilityChecker<?> vc) {
_deserializationConfig = _deserializationConfig.with(vc);
_serializationConfig = _serializationConfig.with(vc);
return this;
}

/**
* Convenience method that allows changing configuration for
* underlying {@link VisibilityChecker}s, to change details of what kinds of
Expand All @@ -1255,13 +1256,14 @@ public ObjectMapper setVisibility(VisibilityChecker<?> vc) {
* @return Modified mapper instance (that is, "this"), to allow chaining
* of configuration calls
*/
@SuppressWarnings("deprecation")
public ObjectMapper setVisibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility)
{
_deserializationConfig = _deserializationConfig.withVisibility(forMethod, visibility);
_serializationConfig = _serializationConfig.withVisibility(forMethod, visibility);
return this;
}

/**
* Method for accessing subtype resolver in use.
*/
Expand Down

0 comments on commit a3601f5

Please sign in to comment.