001package io.ebean.text.json;
002
003import io.ebean.bean.PersistenceContext;
004import com.fasterxml.jackson.core.JsonParser;
005
006/**
007 * Provides a JSON reader that can hold a persistence context and load context while reading JSON.
008 * <p>
009 * This provides a mechanism such that an object loaded from JSON can have unique instances
010 * by using a persistence context and also support further lazy loading (via a load context).
011 * </p>
012 */
013public interface JsonBeanReader<T> {
014
015  /**
016   * Read the JSON returning a bean.
017   */
018  T read();
019
020  /**
021   * Create a new reader taking the context from the existing one but using a new JsonParser.
022   */
023  JsonBeanReader<T> forJson(JsonParser moreJson, boolean resetContext);
024
025  /**
026   * Add a bean explicitly to the persistence context.
027   */
028  void persistenceContextPut(Object beanId, T currentBean);
029
030  /**
031   * Return the persistence context if one is being used.
032   */
033  PersistenceContext getPersistenceContext();
034
035}