package com.fasterxml.jackson.annotation;
import com.fasterxml.jackson.annotation.ObjectIdGenerator.IdKey;
Definition of API used for resolving actual Java object from Object Identifiers (as annotated using JsonIdentityInfo
). Since: 2.4
/**
* Definition of API used for resolving actual Java object from
* Object Identifiers (as annotated using {@link JsonIdentityInfo}).
*
* @since 2.4
*/
public interface ObjectIdResolver {
Method called when a POJO is deserialized and has an Object Identifier.
Method exists so that implementation can keep track of existing object in
JSON stream that could be useful for further resolution.
Params: - id – The Object Identifer
- pojo – The POJO associated to that Identifier
/**
* Method called when a POJO is deserialized and has an Object Identifier.
* Method exists so that implementation can keep track of existing object in
* JSON stream that could be useful for further resolution.
*
* @param id The Object Identifer
* @param pojo The POJO associated to that Identifier
*/
void bindItem(IdKey id, Object pojo);
Method called when deserialization encounters the given Object Identifier
and requires the POJO associated with it.
Params: - id – The Object Identifier
Returns: The POJO, or null if unable to resolve.
/**
* Method called when deserialization encounters the given Object Identifier
* and requires the POJO associated with it.
*
* @param id The Object Identifier
* @return The POJO, or null if unable to resolve.
*/
Object resolveId(IdKey id);
Factory method called to create a new instance to use for
deserialization: needed since resolvers may have state (a pool of
objects).
Note that actual type of 'context' is
com.fasterxml.jackson.databind.DeserializationContext
, but
can not be declared here as type itself (as well as call to this object)
comes from databind package.
Params: - context –
Deserialization context object used (of type
com.fasterxml.jackson.databind.DeserializationContext
; may be needed by more complex resolvers to access contextual
information such as configuration.
/**
* Factory method called to create a new instance to use for
* deserialization: needed since resolvers may have state (a pool of
* objects).
* <p>
* Note that actual type of 'context' is
* <code>com.fasterxml.jackson.databind.DeserializationContext</code>, but
* can not be declared here as type itself (as well as call to this object)
* comes from databind package.
*
* @param context
* Deserialization context object used (of type
* <code>com.fasterxml.jackson.databind.DeserializationContext</code>
* ; may be needed by more complex resolvers to access contextual
* information such as configuration.
*/
ObjectIdResolver newForDeserialization(Object context);
Method called to check whether this resolver instance can be used for Object Ids of specific resolver type; determination is based by passing a configured "blueprint" (prototype) instance; from which the actual instances are created (using newForDeserialization
). Returns: True if this instance can be used as-is; false if not
/**
* Method called to check whether this resolver instance can be used for
* Object Ids of specific resolver type; determination is based by passing a
* configured "blueprint" (prototype) instance; from which the actual
* instances are created (using {@link #newForDeserialization}).
*
* @return True if this instance can be used as-is; false if not
*/
boolean canUseFor(ObjectIdResolver resolverType);
}