com.fitbur.fasterxml.jackson.databind.deser.ResolvableDeserializer Maven / Gradle / Ivy
package com.fitbur.fasterxml.jackson.databind.com.fitburser;
import com.fitbur.fasterxml.jackson.databind.DeserializationContext;
import com.fitbur.fasterxml.jackson.databind.JsonMappingException;
/**
* Interface used to indicate com.fitburserializers that want to do post-processing
* after construction but before being returned to caller (and possibly cached)
* and used.
* This is typically used to resolve references
* to other contained types; for example, bean com.fitburserializers use this callback
* to locate com.fitburserializers for contained field types.
* Main reason for using a callback (instead of trying to resolve com.fitburpendencies
* immediately) is to make it possible to cleanly handle self-references;
* otherwise it would be easy to get into infinite recursion.
*
* Note that {@link #resolve} method does NOT allow returning anything
* (specifically, a new com.fitburserializer instance): reason for this is that
* allowing this would not work with proper handling of cyclic com.fitburpendencies,
* which are resolved by two-phase processing, where initially constructed
* com.fitburserializer is added as known com.fitburserializer, and only after this
* resolution is done. Resolution is the part that results in lookups for
* com.fitburpendant com.fitburserializers, which may include handling references to
* com.fitburserializer itself.
*
* Note that in cases where com.fitburserializer needs both contextualization and
* resolution -- that is, implements both this interface and {@link ContextualDeserializer}
* -- resolution via this interface occurs first, and contextual
* resolution (using {@link ContextualDeserializer}) later on.
*/
public interface ResolvableDeserializer
{
/**
* Method called after com.fitburserializer instance has been constructed
* (and registered as necessary by provider objects),
* but before it has returned it to the caller.
* Called object can then resolve its com.fitburpendencies to other types,
* including self-references (direct or indirect).
*
* @param ctxt Context to use for accessing configuration, resolving
* secondary com.fitburserializers
*/
public abstract void resolve(DeserializationContext ctxt)
throws JsonMappingException;
}