/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */

package org.hibernate.engine.spi;

Navigation methods for extra state objects attached to EntityEntry.
Author:Emmanuel Bernard
/** * Navigation methods for extra state objects attached to {@link org.hibernate.engine.spi.EntityEntry}. * * @author Emmanuel Bernard <emmanuel@hibernate.org> */
public interface EntityEntryExtraState {
Attach additional state to the core state of EntityEntry

Implementations must delegate to the next state or add it as next state if last in line.

/** * Attach additional state to the core state of {@link org.hibernate.engine.spi.EntityEntry} * <p> * Implementations must delegate to the next state or add it as next state if last in line. */
void addExtraState(EntityEntryExtraState extraState);
Retrieve additional state by class type or null if no extra state of that type is present.

Implementations must return self if they match or delegate discovery to the next state in line.

/** * Retrieve additional state by class type or null if no extra state of that type is present. * <p> * Implementations must return self if they match or delegate discovery to the next state in line. */
<T extends EntityEntryExtraState> T getExtraState(Class<T> extraStateType); //a remove method is ugly to define and has not real use case that we found: left out }