All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.facebook.presto.jdbc.internal.jackson.annotation.ObjectIdResolver Maven / Gradle / Ivy

There is a newer version: 0.289
Show newest version
package com.facebook.presto.jdbc.internal.jackson.annotation;

import com.facebook.presto.jdbc.internal.jackson.annotation.ObjectIdGenerator.IdKey;

/**
 * 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.
     * 
     * @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.
     * 
     * @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.facebook.presto.jdbc.internal.jackson.databind.DeserializationContext, 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 * com.facebook.presto.jdbc.internal.jackson.databind.DeserializationContext * ; 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 {@link #newForDeserialization}). * * @return True if this instance can be used as-is; false if not */ boolean canUseFor(ObjectIdResolver resolverType); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy