diff --git a/release-notes/VERSION b/release-notes/VERSION
index e3321369e0..12a556e3e2 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -20,4 +20,6 @@ Versions: 3.x (for earlier see VERSION-2.x)
#1790: Add `createParser` methods in `ObjectMapper`, `ObjectReader`
#1888: Merge `ResolvableSerializer` into `JsonSerializer`, `ResolvableDeserializer`
into `JsonDeserializer`
+#1889: Merge `ContextualSerializer` into `JsonSerializer`, `ContextualDeserializer`
+ into `JsonDeserializer`
- Remove `MappingJsonFactory`
diff --git a/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java b/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java
index 742948974a..31dbdcd487 100644
--- a/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java
+++ b/src/main/java/com/fasterxml/jackson/databind/BeanProperty.java
@@ -25,10 +25,9 @@
*
* 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 (createContextual(...)
method is called).
+ * is known and
+ * {@link JsonSerializer#createContextual} and
+ * {@link JsonDeserializer#createContextual} are called.
* References may (need to) be retained by serializers and deserializers,
* especially when further resolving dependent handlers like value
* serializers/deserializers or structured types.
diff --git a/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java b/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
index d28ba60cac..df4857dc0b 100644
--- a/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
+++ b/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
@@ -151,12 +151,11 @@ public abstract class DeserializationContext
protected transient ContextAttributes _attributes;
/**
- * Type of {@link JsonDeserializer} (or, more specifically,
- * {@link ContextualDeserializer}) that is being
- * contextualized currently.
+ * Type of {@link JsonDeserializer} on which {@link JsonDeserializer#createContextual}
+ * is being called currently.
*/
protected LinkedNode _currentType;
-
+
/*
/**********************************************************
/* Life-cycle
@@ -316,13 +315,13 @@ public DeserializationContext setAttribute(Object key, Object value)
/**
* Accessor to {@link JavaType} of currently contextualized
- * {@link ContextualDeserializer}, if any.
+ * {@link JsonDeserializer}, if any.
* This is sometimes useful for generic {@link JsonDeserializer}s that
* do not get passed (or do not retain) type information when being
* constructed: happens for example for deserializers constructed
* from annotations.
*
- * @return Type of {@link ContextualDeserializer} being contextualized,
+ * @return Type of {@link JsonDeserializer} being contextualized,
* if process is on-going; null if not.
*/
public JavaType getContextualType() {
@@ -755,21 +754,19 @@ public abstract KeyDeserializer keyDeserializerInstance(Annotated annotated,
/**
* Method called for primary property deserializers (ones
* directly created to deserialize values of a POJO property),
- * to handle details of resolving
- * {@link ContextualDeserializer} with given property context.
+ * to handle details of calling
+ * {@link JsonDeserializer#createContextual} with given property context.
*
* @param prop Property for which the given primary deserializer is used; never null.
- *
- * @since 2.5
*/
public JsonDeserializer> handlePrimaryContextualization(JsonDeserializer> deser,
BeanProperty prop, JavaType type)
throws JsonMappingException
{
- if (deser instanceof ContextualDeserializer) {
+ if (deser != null) {
_currentType = new LinkedNode(type, _currentType);
try {
- deser = ((ContextualDeserializer) deser).createContextual(this, prop);
+ deser = deser.createContextual(this, prop);
} finally {
_currentType = _currentType.next();
}
@@ -783,24 +780,22 @@ public JsonDeserializer> handlePrimaryContextualization(JsonDeserializer> de
* but instead created as a component -- such as value deserializers
* for structured types, or deserializers for root values)
* to handle details of resolving
- * {@link ContextualDeserializer} with given property context.
+ * {@link JsonDeserializer#createContextual} with given property context.
* Given that these deserializers are not directly related to given property
* (or, in case of root value property, to any property), annotations
* accessible may or may not be relevant.
*
* @param prop Property for which deserializer is used, if any; null
* when deserializing root values
- *
- * @since 2.5
*/
public JsonDeserializer> handleSecondaryContextualization(JsonDeserializer> deser,
BeanProperty prop, JavaType type)
throws JsonMappingException
{
- if (deser instanceof ContextualDeserializer) {
+ if (deser != null) {
_currentType = new LinkedNode(type, _currentType);
try {
- deser = ((ContextualDeserializer) deser).createContextual(this, prop);
+ deser =deser.createContextual(this, prop);
} finally {
_currentType = _currentType.next();
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/JsonDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/JsonDeserializer.java
index a99121887b..e9df07eda3 100644
--- a/src/main/java/com/fasterxml/jackson/databind/JsonDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/JsonDeserializer.java
@@ -30,11 +30,9 @@
*
* In addition, to support per-property annotations (to configure aspects
* of deserialization on per-property basis), deserializers may want
- * to implement
- * {@link com.fasterxml.jackson.databind.deser.ContextualDeserializer},
- * which allows specialization of deserializers: call to
- * {@link com.fasterxml.jackson.databind.deser.ContextualDeserializer#createContextual}
- * is passed information on property, and can create a newly configured
+ * to override
+ * {@link #createContextual} which allows specialization of deserializers:
+ * it is passed information on property, and can create a newly configured
* deserializer for handling that particular property.
*
* Resolution of deserializers occurs before contextualization.
@@ -44,7 +42,8 @@ public abstract class JsonDeserializer
{
/*
/**********************************************************
- /* Initialization, with former `ResolvableDeserializer`
+ /* Initialization, with former `ResolvableDeserializer`,
+ /* `ContextualDeserializer`
/**********************************************************
*/
@@ -62,6 +61,32 @@ public void resolve(DeserializationContext ctxt) throws JsonMappingException {
// Default implementation does nothing
}
+ /**
+ * Method called to see if a different (or differently configured) deserializer
+ * is needed to deserialize values of specified property.
+ * Note that instance that this method is called on is typically shared one and
+ * as a result method should NOT modify this instance but rather construct
+ * and return a new instance. This instance should only be returned as-is, in case
+ * it is already suitable for use.
+ *
+ * @param ctxt Deserialization context to access configuration, additional
+ * deserializers that may be needed by this deserializer
+ * @param property Method, field or constructor parameter that represents the property
+ * (and is used to assign deserialized value).
+ * Should be available; but there may be cases where caller cannot provide it and
+ * null is passed instead (in which case impls usually pass 'this' deserializer as is)
+ *
+ * @return Deserializer to use for deserializing values of specified property;
+ * may be this instance or a new instance.
+ *
+ * @throws JsonMappingException
+ */
+ public JsonDeserializer> createContextual(DeserializationContext ctxt,
+ BeanProperty property) throws JsonMappingException {
+ // default implementation returns instance unmodified
+ return this;
+ }
+
/*
/**********************************************************
/* Main deserialization methods
diff --git a/src/main/java/com/fasterxml/jackson/databind/JsonSerializer.java b/src/main/java/com/fasterxml/jackson/databind/JsonSerializer.java
index 488d21a5bf..91f6045ed6 100644
--- a/src/main/java/com/fasterxml/jackson/databind/JsonSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/JsonSerializer.java
@@ -16,16 +16,9 @@
* Abstract class that defines API used by {@link ObjectMapper} (and
* other chained {@link JsonSerializer}s too) to serialize Objects of
* arbitrary types into JSON, using provided {@link JsonGenerator}.
- * {@link com.fasterxml.jackson.databind.ser.std.StdSerializer} instead
- * of this class, since it will implement many of optional
- * methods of this class.
- *
- * NOTE: various serialize
methods are never (to be) called
- * with null values -- caller must handle null values, usually
- * by calling {@link SerializerProvider#findNullValueSerializer} to obtain
- * serializer to use.
- * This also means that custom serializers cannot be directly used to change
- * the output to produce when serializing null values.
+ * Note that although API is defined here, custom serializer implementations
+ * should almost always be based on {@link com.fasterxml.jackson.databind.ser.std.StdSerializer}
+ * since it will implement many of optional methods of this class.
*
* If serializer is an aggregate one -- meaning it delegates handling of some
* of its contents by using other serializer(s) -- it typically also needs
@@ -35,23 +28,34 @@
* resolution of secondary serializers (which may have cyclic link back
* to serializer itself, directly or indirectly).
*
- * In addition, to support per-property annotations (to configure aspects
- * of serialization on per-property basis), serializers may want
- * to implement
- * {@link com.fasterxml.jackson.databind.ser.ContextualSerializer},
- * which allows specialization of serializers: call to
- * {@link com.fasterxml.jackson.databind.ser.ContextualSerializer#createContextual}
- * is passed information on property, and can create a newly configured
- * serializer for handling that particular property.
+ * Initialization of serializers is handled by two main methods:
+ *
+ * {@link #resolve}: called after instance is configured to be used for specific type,
+ * but without yet knowing property it will be used for (or, in case of root values, without property).
+ * Method needs to be implemented for serializers that may work on cyclic types, and specifically
+ * is implemented by standard POJO serializer ({@code BeanSerializer}). It is usually not needed for
+ * container types as their type definitions are not cyclic, unlike some POJO types.
+ * {@link #createContextual}: called on resolved instance (whether newly created, or found via cache),
+ * when serializer is to be used for specific property, or as root value serializer (no referring property).
+ * It is used to apply annotations from property accessors (getter, field), and may also be used for resolving
+ * nested types for container serializers (such as ones for {@link java.util.Collection}s).
+ *
+ * Caching of serializers occurs after {@link #resolve} is called: cached instances are not contextual.
*
- * Resolution of serializers occurs before contextualization.
+ * NOTE: various serialize
methods are never (to be) called
+ * with null values -- caller must handle null values, usually
+ * by calling {@link SerializerProvider#findNullValueSerializer} to obtain
+ * serializer to use.
+ * This also means that custom serializers cannot be directly used to change
+ * the output to produce when serializing null values.
*/
public abstract class JsonSerializer
implements JsonFormatVisitable
{
/*
/**********************************************************
- /* Initialization, with former `ResolvableSerializer`
+ /* Initialization, with former `ResolvableSerializer`,
+ /* `ContextualSerializer`.
/**********************************************************
*/
@@ -71,6 +75,35 @@ public void resolve(SerializerProvider provider) throws JsonMappingException {
// Default implementation does nothing
}
+ /**
+ * Method called to see if a different (or differently configured) serializer
+ * is needed to serialize values of specified property (or, for root values, in which
+ * case `null` is passed).
+ * Note that instance that this method is called on is typically shared one and
+ * as a result method should NOT modify this instance but rather construct
+ * and return a new instance. This instance should only be returned as-is, in case
+ * it is already suitable for use.
+ *
+ * Note that method is only called once per POJO property, and for the first usage as root
+ * value serializer; it is not called for every serialization, as doing that would have
+ * significant performance impact; most serializers cache contextual instances for future
+ * use.
+ *
+ * @param prov Serializer provider to use for accessing config, other serializers
+ * @param property Property (defined by one or more accessors - field or method - used
+ * for accessing logical property value) for which serializer is used to be used;
+ * or, `null` for root value (or in cases where caller does not have this information,
+ * which is handled as root value case).
+ *
+ * @return Serializer to use for serializing values of specified property;
+ * may be this instance or a new instance.
+ */
+ public JsonSerializer> createContextual(SerializerProvider prov,
+ BeanProperty property) throws JsonMappingException {
+ // default implementation returns instance unmodified
+ return this;
+ }
+
/*
/**********************************************************
/* Fluent factory methods for constructing decorated versions
diff --git a/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java b/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java
index 56122777e8..3cf493abf0 100644
--- a/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java
+++ b/src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java
@@ -23,7 +23,6 @@
import com.fasterxml.jackson.databind.cfg.ContextAttributes;
import com.fasterxml.jackson.databind.cfg.GeneratorSettings;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.exc.InvalidDefinitionException;
import com.fasterxml.jackson.databind.exc.InvalidTypeIdException;
import com.fasterxml.jackson.databind.introspect.Annotated;
@@ -1021,9 +1020,8 @@ public boolean isUnknownTypeSerializer(JsonSerializer> ser) {
* Method that can be called to construct and configure serializer instance,
* either given a {@link Class} to instantiate (with default constructor),
* or an uninitialized serializer instance.
- * Either way, serialize will be properly resolved
- * (via {@link com.fasterxml.jackson.databind.JsonSerializer#resolve}) and/or contextualized
- * (via {@link com.fasterxml.jackson.databind.ser.ContextualSerializer}) as necessary.
+ * Either way, serializer will be properly resolved
+ * (via {@link com.fasterxml.jackson.databind.JsonSerializer#resolve}).
*
* @param annotated Annotated entity that contained definition
* @param serDef Serializer definition: either an instance or class
@@ -1039,8 +1037,6 @@ public abstract JsonSerializer serializerInstance(Annotated annotated,
*
* @param forProperty (optional) If filter is created for a property, that property;
* `null` if filter created via defaulting, global or per-type.
- *
- * @since 2.9
*/
public abstract Object includeFilterInstance(BeanPropertyDefinition forProperty,
Class> filterClass)
@@ -1049,8 +1045,6 @@ public abstract Object includeFilterInstance(BeanPropertyDefinition forProperty,
/**
* Follow-up method that may be called after calling {@link #includeFilterInstance},
* to check handling of `null` values by the filter.
- *
- * @since 2.9
*/
public abstract boolean includeFilterSuppressNulls(Object filter)
throws JsonMappingException;
@@ -1064,8 +1058,8 @@ public abstract boolean includeFilterSuppressNulls(Object filter)
/**
* Method called for primary property serializers (ones
* directly created to serialize values of a POJO property),
- * to handle details of resolving
- * {@link ContextualSerializer} with given property context.
+ * to handle details of contextualization, calling
+ * {@link JsonSerializer#createContextual(SerializerProvider, BeanProperty)} with given property context.
*
* @param property Property for which the given primary serializer is used; never null.
*/
@@ -1074,9 +1068,7 @@ public JsonSerializer> handlePrimaryContextualization(JsonSerializer> ser,
throws JsonMappingException
{
if (ser != null) {
- if (ser instanceof ContextualSerializer) {
- ser = ((ContextualSerializer) ser).createContextual(this, property);
- }
+ ser = ser.createContextual(this, property);
}
return ser;
}
@@ -1086,29 +1078,25 @@ public JsonSerializer> handlePrimaryContextualization(JsonSerializer> ser,
* NOT directly created to serialize values of a POJO property
* but instead created as a dependant serializer -- such as value serializers
* for structured types, or serializers for root values)
- * to handle details of resolving
- * {@link ContextualDeserializer} with given property context.
+ * to handle details of contextualization, calling
+ * {@link JsonSerializer#createContextual(SerializerProvider, BeanProperty)} with given property context.
* Given that these serializers are not directly related to given property
* (or, in case of root value property, to any property), annotations
* accessible may or may not be relevant.
*
* @param property Property for which serializer is used, if any; null
* when deserializing root values
- *
- * @since 2.3
*/
public JsonSerializer> handleSecondaryContextualization(JsonSerializer> ser,
BeanProperty property)
throws JsonMappingException
{
if (ser != null) {
- if (ser instanceof ContextualSerializer) {
- ser = ((ContextualSerializer) ser).createContextual(this, property);
- }
+ ser = ser.createContextual(this, property);
}
return ser;
}
-
+
/*
/********************************************************
/* Convenience methods for serializing using default methods
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java
index 4937cdfdc3..00287f61d7 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/AbstractDeserializer.java
@@ -25,8 +25,7 @@
*/
public class AbstractDeserializer
extends JsonDeserializer
- implements ContextualDeserializer, // since 2.9
- java.io.Serializable
+ implements java.io.Serializable
{
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBase.java b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBase.java
index aa34f0d90f..0d62e1e664 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/BeanDeserializerBase.java
@@ -25,8 +25,7 @@
*/
public abstract class BeanDeserializerBase
extends StdDeserializer
- implements ContextualDeserializer,
- ValueInstantiator.Gettable,
+ implements ValueInstantiator.Gettable,
java.io.Serializable
{
private static final long serialVersionUID = 1;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/ContextualDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/ContextualDeserializer.java
index 39d0aef2e3..f002c231a0 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/ContextualDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/ContextualDeserializer.java
@@ -3,39 +3,11 @@
import com.fasterxml.jackson.databind.*;
/**
- * Add-on interface that {@link JsonDeserializer}s can implement to get a callback
- * that can be used to create contextual (context-dependent) instances of
- * deserializer to use for handling properties of supported type.
- * This can be useful
- * for deserializers that can be configured by annotations, or should otherwise
- * have differing behavior depending on what kind of property is being deserialized.
- *
- * Note that in cases where deserializer needs both contextualization and
- * resolution -- resolution occurs first, and contextual
- * resolution (via this interface) later on.
+ * @deprecated Since 3.0: method demoted to JsonDeserializer
*/
+@Deprecated
public interface ContextualDeserializer
{
- /**
- * Method called to see if a different (or differently configured) deserializer
- * is needed to deserialize values of specified property.
- * Note that instance that this method is called on is typically shared one and
- * as a result method should NOT modify this instance but rather construct
- * and return a new instance. This instance should only be returned as-is, in case
- * it is already suitable for use.
- *
- * @param ctxt Deserialization context to access configuration, additional
- * deserializers that may be needed by this deserializer
- * @param property Method, field or constructor parameter that represents the property
- * (and is used to assign deserialized value).
- * Should be available; but there may be cases where caller cannot provide it and
- * null is passed instead (in which case impls usually pass 'this' deserializer as is)
- *
- * @return Deserializer to use for deserializing values of specified property;
- * may be this instance or a new instance.
- *
- * @throws JsonMappingException
- */
public JsonDeserializer> createContextual(DeserializationContext ctxt,
BeanProperty property)
throws JsonMappingException;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerCache.java b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerCache.java
index be1569c89a..217a85a370 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerCache.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/DeserializerCache.java
@@ -121,7 +121,7 @@ public void flushCachedDeserializers() {
*
* Note also that deserializer returned is guaranteed to be resolved
* (see {@link JsonDeserializer#resolve}), but
- * not contextualized (wrt {@link ContextualDeserializer}): caller
+ * not contextualized (wrt {@link JsonDeserializer#createContextual}): caller
* has to handle latter if necessary.
*
* @param ctxt Deserialization context
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 a3e23ac4d0..bd72a243e6 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
@@ -27,7 +27,6 @@
@JacksonStdImpl
public class CollectionDeserializer
extends ContainerDeserializerBase>
- implements ContextualDeserializer
{
private static final long serialVersionUID = -1L; // since 2.5
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/DateDeserializers.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/DateDeserializers.java
index 14bddb3ba6..33580df17c 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/DateDeserializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/DateDeserializers.java
@@ -13,7 +13,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.util.ClassUtil;
import com.fasterxml.jackson.databind.util.StdDateFormat;
@@ -68,7 +67,6 @@ public static JsonDeserializer> find(Class> rawType, String clsName)
protected abstract static class DateBasedDeserializer
extends StdScalarDeserializer
- implements ContextualDeserializer
{
/**
* Specific format to use, if non-null; if null will
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/DelegatingDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/DelegatingDeserializer.java
index 92798e271e..5367d455fd 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/DelegatingDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/DelegatingDeserializer.java
@@ -18,7 +18,6 @@
*/
public abstract class DelegatingDeserializer
extends StdDeserializer
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L;
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 9d5ed53f41..c854156533 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
@@ -8,7 +8,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
@@ -20,10 +19,9 @@
* Deserializer class that can deserialize instances of
* specified Enum class from Strings and Integers.
*/
-@JacksonStdImpl // was missing until 2.6
+@JacksonStdImpl
public class EnumDeserializer
extends StdScalarDeserializer
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L;
@@ -83,8 +81,6 @@ public static JsonDeserializer> deserializerForCreator(DeserializationConfig c
* using a zero-/no-args factory method
*
* @return Deserializer based on given no-args factory method
- *
- * @since 2.8
*/
public static JsonDeserializer> deserializerForNoArgsCreator(DeserializationConfig config,
Class> enumClass, AnnotatedMethod factory)
@@ -96,9 +92,6 @@ public static JsonDeserializer> deserializerForNoArgsCreator(DeserializationCo
return new FactoryBasedEnumDeserializer(enumClass, factory);
}
- /**
- * @since 2.9
- */
public EnumDeserializer withResolved(Boolean caseInsensitive) {
if (_caseInsensitive == caseInsensitive) {
return this;
@@ -106,7 +99,7 @@ public EnumDeserializer withResolved(Boolean caseInsensitive) {
return new EnumDeserializer(this, caseInsensitive);
}
- @Override // since 2.9
+ @Override
public JsonDeserializer> createContextual(DeserializationContext ctxt,
BeanProperty property) throws JsonMappingException
{
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java
index a1732b156d..66b0c78ced 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java
@@ -20,7 +20,6 @@
@SuppressWarnings({ "unchecked", "rawtypes" })
public class EnumMapDeserializer
extends ContainerDeserializerBase>
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumSetDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumSetDeserializer.java
index 08ceee8c1a..c5799de859 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumSetDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumSetDeserializer.java
@@ -6,7 +6,6 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
/**
@@ -18,7 +17,6 @@
@SuppressWarnings("rawtypes")
public class EnumSetDeserializer
extends StdDeserializer>
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L; // since 2.5
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/FactoryBasedEnumDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/FactoryBasedEnumDeserializer.java
index 96c6c8d6e8..8b4f1ecfa0 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/FactoryBasedEnumDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/FactoryBasedEnumDeserializer.java
@@ -7,7 +7,6 @@
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator;
@@ -19,12 +18,9 @@
/**
* Deserializer that uses a single-String static factory method
* for locating Enum values by String id.
- *
- * @since 2.8 (as stand-alone class; was static inner class of {@link EnumDeserializer}
*/
class FactoryBasedEnumDeserializer
extends StdDeserializer
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java
index fb5f5175b1..62993b36ba 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/MapDeserializer.java
@@ -29,7 +29,6 @@
@JacksonStdImpl
public class MapDeserializer
extends ContainerDeserializerBase>
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/MapEntryDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/MapEntryDeserializer.java
index 6480416f04..4d4168b328 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/MapEntryDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/MapEntryDeserializer.java
@@ -21,7 +21,6 @@
@JacksonStdImpl
public class MapEntryDeserializer
extends ContainerDeserializerBase>
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1;
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 dbfcf05792..797bab6e6c 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
@@ -9,7 +9,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.NullValueProvider;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.util.AccessPattern;
@@ -21,7 +20,6 @@
@JacksonStdImpl
public class ObjectArrayDeserializer
extends ContainerDeserializerBase
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L;
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 13454ad8db..8e6795f57c 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
@@ -9,7 +9,6 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.NullValueProvider;
import com.fasterxml.jackson.databind.deser.impl.NullsConstantProvider;
import com.fasterxml.jackson.databind.deser.impl.NullsFailProvider;
@@ -23,8 +22,8 @@
* arrays that contain non-object java primitive types.
*/
@SuppressWarnings("serial")
-public abstract class PrimitiveArrayDeserializers extends StdDeserializer
- implements ContextualDeserializer // since 2.7
+public abstract class PrimitiveArrayDeserializers
+ extends StdDeserializer
{
/**
* Specific override for this instance (from proper, or global per-type overrides)
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/ReferenceTypeDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/ReferenceTypeDeserializer.java
index 9819ee31d6..bec3101bce 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/ReferenceTypeDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/ReferenceTypeDeserializer.java
@@ -6,7 +6,6 @@
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.type.ReferenceType;
@@ -19,9 +18,8 @@
*/
public abstract class ReferenceTypeDeserializer
extends StdDeserializer
- implements ContextualDeserializer
{
- private static final long serialVersionUID = 2L; // 2.9
+ private static final long serialVersionUID = 2L;
/**
* Full type of property (or root value) for which this deserializer
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDelegatingDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDelegatingDeserializer.java
index 089311905e..6727a4ed42 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDelegatingDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdDelegatingDeserializer.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.util.ClassUtil;
import com.fasterxml.jackson.databind.util.Converter;
@@ -31,7 +30,6 @@
*/
public class StdDelegatingDeserializer
extends StdDeserializer
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L;
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 509a943b27..6122ce2268 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
@@ -67,7 +67,7 @@ protected StdDeserializer(JavaType valueType) {
/**
* Copy-constructor for sub-classes to use, most often when creating
- * new instances for {@link com.fasterxml.jackson.databind.deser.ContextualDeserializer}.
+ * new instances via {@link com.fasterxml.jackson.databind.JsonDeserializer#createContextual}.
*/
protected StdDeserializer(StdDeserializer> src) {
_valueClass = src._valueClass;
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdNodeBasedDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdNodeBasedDeserializer.java
index 2bd9d1f02a..735820ddc1 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/StdNodeBasedDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/StdNodeBasedDeserializer.java
@@ -37,7 +37,7 @@ protected StdNodeBasedDeserializer(Class targetType) {
/**
* "Copy-constructor" used when creating a modified copies, most often
- * if sub-class implements {@link com.fasterxml.jackson.databind.deser.ContextualDeserializer}.
+ * if sub-class overrides {@link com.fasterxml.jackson.databind.JsonDeserializer#createContextual}.
*/
protected StdNodeBasedDeserializer(StdNodeBasedDeserializer> src) {
super(src);
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/StringArrayDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/StringArrayDeserializer.java
index df8fba83c2..dcefad1e42 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/StringArrayDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/StringArrayDeserializer.java
@@ -6,7 +6,6 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.NullValueProvider;
import com.fasterxml.jackson.databind.deser.impl.NullsConstantProvider;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
@@ -24,7 +23,6 @@ public final class StringArrayDeserializer
// extends ContainerDeserializerBase
// but for now won't:
extends StdDeserializer
- implements ContextualDeserializer
{
private static final long serialVersionUID = 2L;
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 7e5095c9bb..2c82ef8b6f 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
@@ -7,7 +7,6 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.NullValueProvider;
import com.fasterxml.jackson.databind.deser.ValueInstantiator;
import com.fasterxml.jackson.databind.introspect.AnnotatedWithParams;
@@ -21,7 +20,6 @@
@JacksonStdImpl
public final class StringCollectionDeserializer
extends ContainerDeserializerBase>
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L;
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 0c7709d930..8b17c0f2c7 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
@@ -6,7 +6,6 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.util.ClassUtil;
@@ -25,7 +24,6 @@
@JacksonStdImpl
public class UntypedObjectDeserializer
extends StdDeserializer
- implements ContextualDeserializer
{
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ext/XMLGregorianCalendarSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ext/XMLGregorianCalendarSerializer.java
index 1454593407..9483d98724 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ext/XMLGregorianCalendarSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ext/XMLGregorianCalendarSerializer.java
@@ -13,14 +13,12 @@
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.std.CalendarSerializer;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
@SuppressWarnings("serial")
public class XMLGregorianCalendarSerializer
extends StdSerializer
- implements ContextualSerializer
{
final static XMLGregorianCalendarSerializer instance = new XMLGregorianCalendarSerializer();
diff --git a/src/main/java/com/fasterxml/jackson/databind/ext/jdk8/Jdk8StreamSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ext/jdk8/Jdk8StreamSerializer.java
index 7a06c3290f..9646876cf0 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ext/jdk8/Jdk8StreamSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ext/jdk8/Jdk8StreamSerializer.java
@@ -2,7 +2,6 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import java.io.IOException;
@@ -13,7 +12,7 @@
* Common typed stream serializer
*
*/
-public class Jdk8StreamSerializer extends StdSerializer> implements ContextualSerializer
+public class Jdk8StreamSerializer extends StdSerializer>
{
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/AnyGetterWriter.java b/src/main/java/com/fasterxml/jackson/databind/ser/AnyGetterWriter.java
index 045adeaea7..a586a5d92e 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/AnyGetterWriter.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/AnyGetterWriter.java
@@ -96,12 +96,10 @@ public void getAndFilter(Object bean, JsonGenerator gen, SerializerProvider prov
public void resolve(SerializerProvider provider) throws JsonMappingException
{
// 05-Sep-2013, tatu: I _think_ this can be considered a primary property...
- if (_serializer instanceof ContextualSerializer) {
- JsonSerializer> ser = provider.handlePrimaryContextualization(_serializer, _property);
- _serializer = (JsonSerializer) ser;
- if (ser instanceof MapSerializer) {
- _mapSerializer = (MapSerializer) ser;
- }
+ JsonSerializer> ser = provider.handlePrimaryContextualization(_serializer, _property);
+ _serializer = (JsonSerializer) ser;
+ if (ser instanceof MapSerializer) {
+ _mapSerializer = (MapSerializer) ser;
}
}
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/ContextualSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/ContextualSerializer.java
index 2ace93b9e2..0cd974f36d 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/ContextualSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/ContextualSerializer.java
@@ -3,37 +3,11 @@
import com.fasterxml.jackson.databind.*;
/**
- * Add-on interface that {@link JsonSerializer}s can implement to get a callback
- * that can be used to create contextual instances of serializer to use for
- * handling properties of supported type. This can be useful
- * for serializers that can be configured by annotations, or should otherwise
- * have differing behavior depending on what kind of property is being serialized.
- *
- * Note that in cases where serializer needs both contextualization and
- * resolution, resolution occurs first, and contextual
- * resolution (via this interface) later on.
+ * @deprecated Since 3.0: method demoted to JsonSerializer
*/
+@Deprecated
public interface ContextualSerializer
{
- /**
- * Method called to see if a different (or differently configured) serializer
- * is needed to serialize values of specified property.
- * Note that instance that this method is called on is typically shared one and
- * as a result method should NOT modify this instance but rather construct
- * and return a new instance. This instance should only be returned as-is, in case
- * it is already suitable for use.
- *
- * @param prov Serializer provider to use for accessing config, other serializers
- * @param property Method or field that represents the property
- * (and is used to access value to serialize).
- * Should be available; but there may be cases where caller cannot provide it and
- * null is passed instead (in which case impls usually pass 'this' serializer as is)
- *
- * @return Serializer to use for serializing values of specified property;
- * may be this instance or a new instance.
- *
- * @throws JsonMappingException
- */
public JsonSerializer> createContextual(SerializerProvider prov, BeanProperty property)
throws JsonMappingException;
}
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/impl/MapEntrySerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/impl/MapEntrySerializer.java
index 93b93812e2..84270031d4 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/impl/MapEntrySerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/impl/MapEntrySerializer.java
@@ -14,18 +14,13 @@
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.util.ArrayBuilders;
import com.fasterxml.jackson.databind.util.BeanUtil;
-/**
- * @since 2.5
- */
@SuppressWarnings("serial")
@JacksonStdImpl
public class MapEntrySerializer
extends ContainerSerializer>
- implements ContextualSerializer
{
public final static Object MARKER_FOR_EMPTY = JsonInclude.Include.NON_EMPTY;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/impl/StringArraySerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/impl/StringArraySerializer.java
index e528a55817..4901ab2ce1 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/impl/StringArraySerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/impl/StringArraySerializer.java
@@ -11,7 +11,6 @@
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.std.ArraySerializerBase;
import com.fasterxml.jackson.databind.type.TypeFactory;
@@ -22,7 +21,6 @@
@SuppressWarnings("serial")
public class StringArraySerializer
extends ArraySerializerBase
- implements ContextualSerializer
{
/* Note: not clean in general, but we are betting against
* anyone re-defining properties of String.class here...
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/impl/TypeWrappedSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/impl/TypeWrappedSerializer.java
index 62ad61d6c4..1a0ae87415 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/impl/TypeWrappedSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/impl/TypeWrappedSerializer.java
@@ -5,7 +5,6 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
/**
* Simple serializer that will call configured type serializer, passing
@@ -14,7 +13,6 @@
*/
public final class TypeWrappedSerializer
extends JsonSerializer
- implements ContextualSerializer // since 2.9
{
final protected TypeSerializer _typeSerializer;
final protected JsonSerializer _serializer;
@@ -56,7 +54,7 @@ public JsonSerializer> createContextual(SerializerProvider provider, BeanPrope
{
// 13-Mar-2017, tatu: Should we call `TypeSerializer.forProperty()`?
JsonSerializer> ser = _serializer;
- if (ser instanceof ContextualSerializer) {
+ if (ser != null) {
ser = provider.handleSecondaryContextualization(ser, property);
}
if (ser == _serializer) {
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/ArraySerializerBase.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/ArraySerializerBase.java
index 5ddada7d1b..49d92900e1 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/ArraySerializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/ArraySerializerBase.java
@@ -18,7 +18,6 @@
@SuppressWarnings("serial")
public abstract class ArraySerializerBase
extends ContainerSerializer
- implements ContextualSerializer // for 'unwrapSingleElemArray'
{
protected final BeanProperty _property;
@@ -72,27 +71,6 @@ public JsonSerializer> createContextual(SerializerProvider serializers,
}
return this;
}
-
- /*
- // NOTE: as of 2.5, sub-classes SHOULD override (in 2.4 and before, was final),
- // at least if they can provide access to actual size of value and use `writeStartArray()`
- // variant that passes size of array to output, which is helpful with some data formats
- @Override
- public void serialize(T value, JsonGenerator gen, SerializerProvider provider) throws IOException
- {
- if (_shouldUnwrapSingle(provider)) {
- if (hasSingleElement(value)) {
- serializeContents(value, gen, provider);
- return;
- }
- }
- gen.setCurrentValue(value);
- gen.writeStartArray();
- // [databind#631]: Assign current value, to be accessible by custom serializers
- serializeContents(value, gen, provider);
- gen.writeEndArray();
- }
- */
@Override
public final void serializeWithType(T value, JsonGenerator g, SerializerProvider provider,
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/AsArraySerializerBase.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/AsArraySerializerBase.java
index 3f1021a00b..ce48681643 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/AsArraySerializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/AsArraySerializerBase.java
@@ -11,7 +11,6 @@
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
/**
@@ -22,7 +21,6 @@
@SuppressWarnings("serial")
public abstract class AsArraySerializerBase
extends ContainerSerializer
- implements ContextualSerializer
{
protected final JavaType _elementType;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java
index 3d6ac38b67..9151a08f38 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/BeanSerializerBase.java
@@ -11,7 +11,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
import com.fasterxml.jackson.databind.introspect.ObjectIdInfo;
-import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonObjectFormatVisitor;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
@@ -32,8 +31,6 @@
@SuppressWarnings("serial")
public abstract class BeanSerializerBase
extends StdSerializer
- implements ContextualSerializer,
- JsonFormatVisitable
{
protected final static PropertyName NAME_FOR_OBJECT_REF = new PropertyName("#object-ref");
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/BooleanSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/BooleanSerializer.java
index 281ed93e24..2e1bfbd7c9 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/BooleanSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/BooleanSerializer.java
@@ -13,7 +13,6 @@
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
/**
* Serializer used for primitive boolean, as well as java.util.Boolean
@@ -25,7 +24,6 @@
@JacksonStdImpl
public final class BooleanSerializer
extends StdScalarSerializer
- implements ContextualSerializer
{
private static final long serialVersionUID = 1L;
@@ -75,12 +73,9 @@ public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType t
/**
* Alternate implementation that is used when values are to be serialized
* as numbers 0
(false) or 1
(true).
- *
- * @since 2.9
*/
final static class AsNumber
extends StdScalarSerializer
- implements ContextualSerializer
{
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/DateTimeSerializerBase.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/DateTimeSerializerBase.java
index 6402f1a395..463ad341f1 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/DateTimeSerializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/DateTimeSerializerBase.java
@@ -15,13 +15,11 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.jsonFormatVisitors.*;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.util.StdDateFormat;
@SuppressWarnings("serial")
public abstract class DateTimeSerializerBase
extends StdScalarSerializer
- implements ContextualSerializer
{
/**
* Flag that indicates that serialization must be done as the
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 2f3ee73c52..4813edfeff 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
@@ -12,7 +12,6 @@
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonStringFormatVisitor;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.util.EnumValues;
/**
@@ -24,7 +23,6 @@
@JacksonStdImpl
public class EnumSerializer
extends StdScalarSerializer>
- implements ContextualSerializer
{
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/InetAddressSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/InetAddressSerializer.java
index 2bc0e14c10..a7c39ca25d 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/InetAddressSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/InetAddressSerializer.java
@@ -11,7 +11,6 @@
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
/**
* Simple serializer for {@link java.net.InetAddress}. Main complexity is
@@ -25,7 +24,6 @@
@SuppressWarnings("serial")
public class InetAddressSerializer
extends StdScalarSerializer
- implements ContextualSerializer
{
/**
* @since 2.9
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 f0808591a2..40e21ef977 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
@@ -11,13 +11,11 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.introspect.AnnotatedMember;
-import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonStringFormatVisitor;
import com.fasterxml.jackson.databind.jsontype.TypeIdResolver;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.BeanSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.util.ClassUtil;
/**
@@ -36,11 +34,7 @@
@JacksonStdImpl
public class JsonValueSerializer
extends StdSerializer
- implements ContextualSerializer, JsonFormatVisitable
{
- /**
- * @since 2.9
- */
protected final AnnotatedMember _accessor;
protected final JsonSerializer _valueSerializer;
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 8521a5fc73..015fb0d44c 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
@@ -17,7 +17,6 @@
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonMapFormatVisitor;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.PropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
import com.fasterxml.jackson.databind.type.TypeFactory;
@@ -34,7 +33,6 @@
@JacksonStdImpl
public class MapSerializer
extends ContainerSerializer>
- implements ContextualSerializer
{
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/NumberSerializers.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/NumberSerializers.java
index 3cca59b101..e05e17ede1 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/NumberSerializers.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/NumberSerializers.java
@@ -11,7 +11,6 @@
import com.fasterxml.jackson.databind.annotation.JacksonStdImpl;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
/**
* Container class for serializers used for handling standard JDK-provided
@@ -46,7 +45,7 @@ public static void addAll(Map> allDeserializers) {
*/
protected abstract static class Base extends StdScalarSerializer
- implements ContextualSerializer {
+ {
protected final JsonParser.NumberType _numberType;
protected final String _schemaType;
protected final boolean _isInt;
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/ObjectArraySerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/ObjectArraySerializer.java
index 1d0c2c47bc..c4f6289156 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/ObjectArraySerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/ObjectArraySerializer.java
@@ -13,7 +13,6 @@
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
import com.fasterxml.jackson.databind.ser.ContainerSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
/**
@@ -23,7 +22,6 @@
@SuppressWarnings("serial")
public class ObjectArraySerializer
extends ArraySerializerBase
- implements ContextualSerializer
{
/**
* Whether we are using static typing (using declared types, ignoring
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/ReferenceTypeSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/ReferenceTypeSerializer.java
index 6fd17451b8..eabf8fe73b 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/ReferenceTypeSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/ReferenceTypeSerializer.java
@@ -9,7 +9,6 @@
import com.fasterxml.jackson.databind.introspect.Annotated;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap;
import com.fasterxml.jackson.databind.type.ReferenceType;
import com.fasterxml.jackson.databind.util.ArrayBuilders;
@@ -23,13 +22,9 @@
*/
public abstract class ReferenceTypeSerializer
extends StdSerializer
- implements ContextualSerializer
{
private static final long serialVersionUID = 1L;
- /**
- * @since 2.9
- */
public final static Object MARKER_FOR_EMPTY = JsonInclude.Include.NON_EMPTY;
/**
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/StaticListSerializerBase.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/StaticListSerializerBase.java
index eb9b3e8b29..db48211d25 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/StaticListSerializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/StaticListSerializerBase.java
@@ -10,7 +10,6 @@
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonArrayFormatVisitor;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
/**
* Intermediate base class for Lists, Collections and Arrays
@@ -19,14 +18,11 @@
@SuppressWarnings("serial")
public abstract class StaticListSerializerBase>
extends StdSerializer
- implements ContextualSerializer
{
/**
* Setting for specific local override for "unwrap single element arrays":
* true for enable unwrapping, false for preventing it, `null` for using
* global configuration.
- *
- * @since 2.6
*/
protected final Boolean _unwrapSingle;
@@ -35,18 +31,12 @@ protected StaticListSerializerBase(Class> cls) {
_unwrapSingle = null;
}
- /**
- * @since 2.9
- */
protected StaticListSerializerBase(StaticListSerializerBase> src,
Boolean unwrapSingle) {
super(src);
_unwrapSingle = unwrapSingle;
}
- /**
- * @since 2.9
- */
public abstract JsonSerializer> _withResolved(BeanProperty prop,
Boolean unwrapSingle);
diff --git a/src/main/java/com/fasterxml/jackson/databind/ser/std/StdDelegatingSerializer.java b/src/main/java/com/fasterxml/jackson/databind/ser/std/StdDelegatingSerializer.java
index 53b76ec394..cc5a2fef51 100644
--- a/src/main/java/com/fasterxml/jackson/databind/ser/std/StdDelegatingSerializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/ser/std/StdDelegatingSerializer.java
@@ -5,10 +5,8 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable;
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.util.ClassUtil;
import com.fasterxml.jackson.databind.util.Converter;
@@ -23,8 +21,6 @@
@SuppressWarnings("serial")
public class StdDelegatingSerializer
extends StdSerializer
- implements ContextualSerializer,
- JsonFormatVisitable
{
protected final Converter _converter;
@@ -115,7 +111,7 @@ public JsonSerializer> createContextual(SerializerProvider provider, BeanPrope
delSer = provider.findValueSerializer(delegateType);
}
}
- if (delSer instanceof ContextualSerializer) {
+ if (delSer != null) {
delSer = provider.handleSecondaryContextualization(delSer, property);
}
if (delSer == _delegateSerializer && delegateType == _delegateType) {
diff --git a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualDeserialization.java
index 19ab6df333..0a0fd43c12 100644
--- a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualDeserialization.java
@@ -12,7 +12,6 @@
import com.fasterxml.jackson.core.Version;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
@@ -88,7 +87,6 @@ static class ContextualMapBean
static class MyContextualDeserializer
extends JsonDeserializer
- implements ContextualDeserializer
{
protected final String _fieldName;
@@ -118,7 +116,6 @@ public JsonDeserializer> createContextual(DeserializationContext ctxt,
*/
static class AnnotatedContextualDeserializer
extends JsonDeserializer
- implements ContextualDeserializer
{
protected final String _fieldName;
@@ -149,7 +146,6 @@ public JsonDeserializer> createContextual(DeserializationContext ctxt,
static class GenericStringDeserializer
extends StdScalarDeserializer
- implements ContextualDeserializer
{
final String _value;
diff --git a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualKeyTypes.java b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualKeyTypes.java
index 6705e2cc33..b2aa43b90b 100644
--- a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualKeyTypes.java
+++ b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualKeyTypes.java
@@ -10,7 +10,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.deser.ContextualKeyDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import com.fasterxml.jackson.databind.type.TypeFactory;
/**
@@ -27,7 +26,6 @@ public class TestContextualKeyTypes extends BaseMapTest
static class ContextualKeySerializer
extends JsonSerializer
- implements ContextualSerializer
{
protected final String _prefix;
diff --git a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualSerialization.java b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualSerialization.java
index c16472e30d..480c7dd7e5 100644
--- a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualSerialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualSerialization.java
@@ -10,7 +10,6 @@
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.module.SimpleModule;
-import com.fasterxml.jackson.databind.ser.ContextualSerializer;
/**
* Test cases to verify that it is possible to define serializers
@@ -123,7 +122,6 @@ static class BeanWithClassConfig
*/
static class AnnotatedContextualSerializer
extends JsonSerializer
- implements ContextualSerializer
{
protected final String _prefix;
@@ -159,7 +157,6 @@ public JsonSerializer> createContextual(SerializerProvider prov, BeanProperty
static class ContextualAndResolvable
extends JsonSerializer
- implements ContextualSerializer
{
protected int isContextual;
protected int isResolved;
diff --git a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualWithAnnDeserializer.java b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualWithAnnDeserializer.java
index e019014b95..4682f5fd49 100644
--- a/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualWithAnnDeserializer.java
+++ b/src/test/java/com/fasterxml/jackson/databind/contextual/TestContextualWithAnnDeserializer.java
@@ -10,7 +10,6 @@
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
public class TestContextualWithAnnDeserializer extends BaseMapTest
{
@@ -36,7 +35,6 @@ static class AnnotatedContextualClassBean
static class AnnotatedContextualDeserializer
extends JsonDeserializer
- implements ContextualDeserializer
{
protected final String _fieldName;
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 cf7fb59bc5..f2121425c2 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestBeanDeserializer.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestBeanDeserializer.java
@@ -103,7 +103,6 @@ static class Issue476Type {
public String name, value;
}
static class Issue476Deserializer extends BeanDeserializer
- implements ContextualDeserializer
{
protected static int propCount;
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/TestCustomDeserializers.java b/src/test/java/com/fasterxml/jackson/databind/deser/TestCustomDeserializers.java
index f947adda80..cc1ff212d4 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/TestCustomDeserializers.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/TestCustomDeserializers.java
@@ -167,7 +167,6 @@ static class Bean375Inner {
}
static class Bean375OuterDeserializer extends StdDeserializer
- implements ContextualDeserializer
{
protected BeanProperty prop;
@@ -191,7 +190,6 @@ public JsonDeserializer> createContextual(DeserializationContext ctxt, BeanPro
}
static class Bean375InnerDeserializer extends StdDeserializer
- implements ContextualDeserializer
{
protected boolean negative;
diff --git a/src/test/java/com/fasterxml/jackson/databind/deser/jdk/UntypedDeserializationTest.java b/src/test/java/com/fasterxml/jackson/databind/deser/jdk/UntypedDeserializationTest.java
index 90eca04b84..d50a1f07ba 100644
--- a/src/test/java/com/fasterxml/jackson/databind/deser/jdk/UntypedDeserializationTest.java
+++ b/src/test/java/com/fasterxml/jackson/databind/deser/jdk/UntypedDeserializationTest.java
@@ -11,7 +11,6 @@
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
-import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
import com.fasterxml.jackson.databind.module.SimpleModule;
@@ -53,7 +52,6 @@ public Number deserialize(JsonParser p, DeserializationContext ctxt) throws IOEx
// Let's make this Contextual, to tease out cyclic resolution issues, if any
static class ListDeserializer extends StdDeserializer>
- implements ContextualDeserializer
{
public ListDeserializer() { super(List.class); }