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); }