org.hibernate.tuple.entity

Class AbstractEntityTuplizer

Implemented Interfaces:
EntityTuplizer, Tuplizer
Known Direct Subclasses:
Dom4jEntityTuplizer, DynamicMapEntityTuplizer, PojoEntityTuplizer

public abstract class AbstractEntityTuplizer
extends java.lang.Object
implements EntityTuplizer

Support for tuplizers relating to entities.
Authors:
Steve Ebersole
Gavin King

Field Summary

protected Getter[]
getters
protected boolean
hasCustomAccessors
protected int
propertySpan
protected Setter[]
setters

Constructor Summary

AbstractEntityTuplizer(EntityMetamodel entityMetamodel, PersistentClass mappingInfo)
Constructs a new AbstractEntityTuplizer instance.

Method Summary

void
afterInitialize(Object entity, boolean lazyPropertiesAreUnfetched, SessionImplementor session)
Called just after the entities properties have been initialized.
protected abstract Instantiator
buildInstantiator(PersistentClass mappingInfo)
Build an appropriate Instantiator for the given mapped entity.
protected abstract Getter
buildPropertyGetter(Property mappedProperty, PersistentClass mappedEntity)
Build an appropriate Getter for the given property.
protected abstract Setter
buildPropertySetter(Property mappedProperty, PersistentClass mappedEntity)
Build an appropriate Setter for the given property.
protected abstract ProxyFactory
buildProxyFactory(PersistentClass mappingInfo, Getter idGetter, Setter idSetter)
Build an appropriate ProxyFactory for the given mapped entity.
Object
createProxy(Serializable id, SessionImplementor session)
Generates an appropriate proxy representation of this entity for this entity-mode.
protected Object
getComponentValue(ComponentType type, Object component, String propertyPath)
Extract a component property value.
protected EntityMetamodel
getEntityMetamodel()
protected abstract EntityMode
getEntityMode()
Return the entity-mode handled by this tuplizer instance.
protected String
getEntityName()
Retreives the defined entity-name for the tuplized entity.
protected SessionFactoryImplementor
getFactory()
Serializable
getIdentifier(Object entity)
Extract the identifier value from the given entity.
protected Instantiator
getInstantiator()
Object
getPropertyValue(Object entity, String propertyPath)
Extract the value of a particular property from the given entity.
Object
getPropertyValue(Object entity, int i)
Extract the value of a particular property from the given entity.
Object[]
getPropertyValues(Object entity)
Extract the current values contained on the given entity.
Object[]
getPropertyValuesToInsert(Object entity, Map mergeMap, SessionImplementor session)
Extract the values of the insertable properties of the entity (including backrefs)
protected ProxyFactory
getProxyFactory()
protected Set
getSubclassEntityNames()
Retreives the defined entity-names for any subclasses defined for this entity.
Object
getVersion(Object entity)
Extract the value of the version property from the given entity.
boolean
hasProxy()
Does this entity, for this mode, present a possibility for proxying?
boolean
hasUninitializedLazyProperties(Object entity)
Does the given entity instance have any currently uninitialized lazy properties?
Object
instantiate()
Generate a new, empty entity.
Object
instantiate(Serializable id)
Create an entity instance initialized with the given identifier.
boolean
isInstance(Object object)
Is the given object considered an instance of the the entity (acconting for entity-mode) managed by this tuplizer.
boolean
isLifecycleImplementor()
Does the class managed by this tuplizer implement the Lifecycle interface.
boolean
isValidatableImplementor()
Does the class managed by this tuplizer implement the Validatable interface.
void
resetIdentifier(Object entity, Serializable currentId, Object currentVersion)
Inject the given identifier and version into the entity, in order to "roll back" to their original values.
void
setIdentifier(Object entity, Serializable id)
Inject the identifier value into the given entity.
void
setPropertyValue(Object entity, String propertyName, Object value)
Inject the value of a particular property.
void
setPropertyValue(Object entity, int i, Object value)
Inject the value of a particular property.
void
setPropertyValues(Object entity, Object[] values)
Inject the given values into the given entity.
protected boolean
shouldGetAllProperties(Object entity)
String
toString()

Field Details

getters

protected final Getter[] getters

hasCustomAccessors

protected final boolean hasCustomAccessors

propertySpan

protected final int propertySpan

setters

protected final Setter[] setters

Constructor Details

AbstractEntityTuplizer

public AbstractEntityTuplizer(EntityMetamodel entityMetamodel,
                              PersistentClass mappingInfo)
Constructs a new AbstractEntityTuplizer instance.
Parameters:
entityMetamodel - The "interpreted" information relating to the mapped entity.
mappingInfo - The parsed "raw" mapping data relating to the given entity.

Method Details

afterInitialize

public void afterInitialize(Object entity,
                            boolean lazyPropertiesAreUnfetched,
                            SessionImplementor session)
Called just after the entities properties have been initialized.
Specified by:
afterInitialize in interface EntityTuplizer
Parameters:
entity - The entity being initialized.
lazyPropertiesAreUnfetched - Are defined lazy properties currently unfecthed
session - The session initializing this entity.

buildInstantiator

protected abstract Instantiator buildInstantiator(PersistentClass mappingInfo)
Build an appropriate Instantiator for the given mapped entity.
Parameters:
mappingInfo - The mapping information regarding the mapped entity.
Returns:
An appropriate Instantiator instance.

buildPropertyGetter

protected abstract Getter buildPropertyGetter(Property mappedProperty,
                                              PersistentClass mappedEntity)
Build an appropriate Getter for the given property.
Parameters:
mappedProperty - The property to be accessed via the built Getter.
mappedEntity - The entity information regarding the mapped entity owning this property.
Returns:
An appropriate Getter instance.

buildPropertySetter

protected abstract Setter buildPropertySetter(Property mappedProperty,
                                              PersistentClass mappedEntity)
Build an appropriate Setter for the given property.
Parameters:
mappedProperty - The property to be accessed via the built Setter.
mappedEntity - The entity information regarding the mapped entity owning this property.
Returns:
An appropriate Setter instance.

buildProxyFactory

protected abstract ProxyFactory buildProxyFactory(PersistentClass mappingInfo,
                                                  Getter idGetter,
                                                  Setter idSetter)
Build an appropriate ProxyFactory for the given mapped entity.
Parameters:
mappingInfo - The mapping information regarding the mapped entity.
idGetter - The constructed Getter relating to the entity's id property.
idSetter - The constructed Setter relating to the entity's id property.
Returns:
An appropriate ProxyFactory instance.

createProxy

public final Object createProxy(Serializable id,
                                SessionImplementor session)
            throws HibernateException
Generates an appropriate proxy representation of this entity for this entity-mode.
Specified by:
createProxy in interface EntityTuplizer
Parameters:
id - The id of the instance for which to generate a proxy.
session - The session to which the proxy should be bound.
Returns:
The generate proxies.
Throws:
HibernateException - Indicates an error generating the proxy.

getComponentValue

protected Object getComponentValue(ComponentType type,
                                   Object component,
                                   String propertyPath)
Extract a component property value.
Parameters:
type - The component property types.
component - The component instance itself.
propertyPath - The property path for the property to be extracted.
Returns:
The property value extracted.

getEntityMetamodel

protected final EntityMetamodel getEntityMetamodel()

getEntityMode

protected abstract EntityMode getEntityMode()
Return the entity-mode handled by this tuplizer instance.
Returns:
The entity-mode

getEntityName

protected String getEntityName()
Retreives the defined entity-name for the tuplized entity.
Returns:
The entity-name.

getFactory

protected final SessionFactoryImplementor getFactory()

getIdentifier

public Serializable getIdentifier(Object entity)
            throws HibernateException
Extract the identifier value from the given entity.
Specified by:
getIdentifier in interface EntityTuplizer
Parameters:
entity - The entity from which to extract the identifier value.
Returns:
The identifier value.
Throws:
HibernateException - If the entity does not define an identifier property, or an error occurrs accessing its value.

getInstantiator

protected final Instantiator getInstantiator()

getPropertyValue

public Object getPropertyValue(Object entity,
                               String propertyPath)
            throws HibernateException
Extract the value of a particular property from the given entity.
Specified by:
getPropertyValue in interface EntityTuplizer
Parameters:
entity - The entity from which to extract the property value.
Returns:
The current value of the given property on the given entity.

getPropertyValue

public Object getPropertyValue(Object entity,
                               int i)
            throws HibernateException
Extract the value of a particular property from the given entity.
Specified by:
getPropertyValue in interface Tuplizer
Parameters:
entity - The entity from which to extract the property value.
i - The index of the property for which to extract the value.
Returns:
The current value of the given property on the given entity.

getPropertyValues

public Object[] getPropertyValues(Object entity)
            throws HibernateException
Extract the current values contained on the given entity.
Specified by:
getPropertyValues in interface Tuplizer
Parameters:
entity - The entity from which to extract values.
Returns:
The current property values.

getPropertyValuesToInsert

public Object[] getPropertyValuesToInsert(Object entity,
                                          Map mergeMap,
                                          SessionImplementor session)
            throws HibernateException
Extract the values of the insertable properties of the entity (including backrefs)
Specified by:
getPropertyValuesToInsert in interface EntityTuplizer
Parameters:
entity - The entity from which to extract.
mergeMap - a map of instances being merged to merged instances
session - The session in which the resuest is being made.
Returns:
The insertable property values.

getProxyFactory

protected final ProxyFactory getProxyFactory()

getSubclassEntityNames

protected Set getSubclassEntityNames()
Retreives the defined entity-names for any subclasses defined for this entity.
Returns:
Any subclass entity-names.

getVersion

public Object getVersion(Object entity)
            throws HibernateException
Extract the value of the version property from the given entity.
Specified by:
getVersion in interface EntityTuplizer
Parameters:
entity - The entity from which to extract the version value.
Returns:
The value of the version property, or null if not versioned.

hasProxy

public boolean hasProxy()
Does this entity, for this mode, present a possibility for proxying?
Specified by:
hasProxy in interface EntityTuplizer
Returns:
True if this tuplizer can generate proxies for this entity.

hasUninitializedLazyProperties

public boolean hasUninitializedLazyProperties(Object entity)
Does the given entity instance have any currently uninitialized lazy properties?
Specified by:
hasUninitializedLazyProperties in interface EntityTuplizer
Parameters:
entity - The entity to be check for uninitialized lazy properties.
Returns:
True if uninitialized lazy properties were found; false otherwise.

instantiate

public final Object instantiate()
            throws HibernateException
Generate a new, empty entity.
Specified by:
instantiate in interface Tuplizer
Returns:
The new, empty entity instance.

instantiate

public final Object instantiate(Serializable id)
            throws HibernateException
Create an entity instance initialized with the given identifier.
Specified by:
instantiate in interface EntityTuplizer
Parameters:
id - The identifier value for the entity to be instantiated.
Returns:
The instantiated entity.

isInstance

public final boolean isInstance(Object object)
Is the given object considered an instance of the the entity (acconting for entity-mode) managed by this tuplizer.
Specified by:
isInstance in interface Tuplizer
Parameters:
object - The object to be checked.
Returns:
True if the object is considered as an instance of this entity within the given mode.

isLifecycleImplementor

public boolean isLifecycleImplementor()
Specified by:
isLifecycleImplementor in interface EntityTuplizer
Returns:
True if the Lifecycle interface is implemented; false otherwise.

isValidatableImplementor

public boolean isValidatableImplementor()
Specified by:
isValidatableImplementor in interface EntityTuplizer
Returns:
True if the Validatable interface is implemented; false otherwise.

resetIdentifier

public void resetIdentifier(Object entity,
                            Serializable currentId,
                            Object currentVersion)
Inject the given identifier and version into the entity, in order to "roll back" to their original values.
Specified by:
resetIdentifier in interface EntityTuplizer
Parameters:
currentId - The identifier value to inject into the entity.
currentVersion - The version value to inject into the entity.

setIdentifier

public void setIdentifier(Object entity,
                          Serializable id)
            throws HibernateException
Inject the identifier value into the given entity. Has no effect if the entity does not define an identifier property
Specified by:
setIdentifier in interface EntityTuplizer
Parameters:
entity - The entity to inject with the identifier value.
id - The value to be injected as the identifier.

setPropertyValue

public void setPropertyValue(Object entity,
                             String propertyName,
                             Object value)
            throws HibernateException
Inject the value of a particular property.
Specified by:
setPropertyValue in interface EntityTuplizer
Parameters:
entity - The entity into which to inject the value.
propertyName - The name of the property.
value - The property value to inject.

setPropertyValue

public void setPropertyValue(Object entity,
                             int i,
                             Object value)
            throws HibernateException
Inject the value of a particular property.
Specified by:
setPropertyValue in interface EntityTuplizer
Parameters:
entity - The entity into which to inject the value.
i - The property's index.
value - The property value to inject.

setPropertyValues

public void setPropertyValues(Object entity,
                              Object[] values)
            throws HibernateException
Inject the given values into the given entity.
Specified by:
setPropertyValues in interface Tuplizer
Parameters:
entity - The entity.
values - The values to be injected.

shouldGetAllProperties

protected boolean shouldGetAllProperties(Object entity)

toString

public String toString()