Trying to straighten out resolution/contextualization of 'untyped' deserializer
diff --git a/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java b/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
index 72d6dd8..866be42 100644
--- a/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
+++ b/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java
@@ -349,7 +349,7 @@
/**
* Method for checking whether we could find a deserializer
* for given type.
- *
+ *
* @param type
* @since 2.3
*/
@@ -385,6 +385,25 @@
}
/**
+ * Variant that will try to locate deserializer for current type, but without
+ * performing any contextualization (unlike {@link #findContextualValueDeserializer})
+ * or checking for need to create a {@link TypeDeserializer} (unlike
+ * {@link #findRootValueDeserializer(JavaType)}.
+ * This method is usually called from within {@link ResolvableDeserializer#resolve},
+ * and expectation is that caller then calls either
+ * {@link #handlePrimaryContextualization(JsonDeserializer, BeanProperty)} or
+ * {@link #handleSecondaryContextualization(JsonDeserializer, BeanProperty)} at a
+ * later point, as necessary.
+ *
+ * @since 2.5
+ */
+ public final JsonDeserializer<Object> findNonContextualValueDeserializer(JavaType type)
+ throws JsonMappingException
+ {
+ return _cache.findValueDeserializer(this, _factory, type);
+ }
+
+ /**
* Method for finding a deserializer for root-level value.
*/
@SuppressWarnings("unchecked")
@@ -563,10 +582,8 @@
BeanProperty prop)
throws JsonMappingException
{
- if (deser != null) {
- if (deser instanceof ContextualDeserializer) {
- deser = ((ContextualDeserializer) deser).createContextual(this, prop);
- }
+ if (deser instanceof ContextualDeserializer) {
+ deser = ((ContextualDeserializer) deser).createContextual(this, prop);
}
return deser;
}
@@ -589,8 +606,9 @@
*/
public JsonDeserializer<?> handleSecondaryContextualization(JsonDeserializer<?> deser,
BeanProperty prop)
- throws JsonMappingException {
- if (deser != null && (deser instanceof ContextualDeserializer)) {
+ throws JsonMappingException
+ {
+ if (deser instanceof ContextualDeserializer) {
deser = ((ContextualDeserializer) deser).createContextual(this, prop);
}
return deser;