Top Description Fields Constructors Methods
org.eclipse.persistence.descriptors

public Class MethodClassExtractor

extends ClassExtractor
Class Inheritance
Imports
java.lang.reflect.InvocationTargetException, .Method, .Modifier, org.eclipse.persistence.exceptions.DescriptorException, org.eclipse.persistence.internal.helper.ClassConstants, .Helper, org.eclipse.persistence.internal.security.PrivilegedAccessHelper, org.eclipse.persistence.internal.sessions.AbstractRecord, org.eclipse.persistence.sessions.DataRecord, .Session

Purpose: Used to allow complex inheritance support. Typically class indicators are used to define inheritance in the database, however in complex cases the class type may be determined through another mechanism. The method calls a static method on the descriptor class to determine the class to use for the database row.

See Also
org.eclipse.persistence.descriptors.InheritancePolicy#setClassExtractor

Field Summary

Modifier and TypeField and Description
protected transient Method
protected String
protected transient ClassDescriptor

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public <T> Class<T>
extractClassFromRow(DataRecord row, Session session)

Implements abstract org.eclipse.persistence.descriptors.ClassExtractor.extractClassFromRow.

INTERNAL Extract/compute the class from the database row and return the class.
public Method
getClassExtractionMethod()

INTERNAL: Return all the classExtractionMethod

public String
getClassExtractionMethodName()

PUBLIC: A class extraction method can be registered with the descriptor to override the default inheritance mechanism.

protected ClassDescriptor
getDescriptor()

INTERNAL: Return the descriptor.

public void
initialize(ClassDescriptor descriptor, Session session)

Overrides org.eclipse.persistence.descriptors.ClassExtractor.initialize.

INTERNAL: Setup the default classExtractionMethod, or if one was specified by the user make sure it is valid.
protected void
setClassExtractionMethod(Method classExtractionMethod)

INTERNAL:

public void
setClassExtractionMethodName(String staticClassClassExtractionMethod)

PUBLIC: A class extraction method can be registered with the descriptor to override the default inheritance mechanism.

protected void
setDescriptor(ClassDescriptor descriptor)

INTERNAL: Set the descriptor.

Field Detail

classExtractionMethodback to summary
protected transient Method classExtractionMethod
classExtractionMethodNameback to summary
protected String classExtractionMethodName
descriptorback to summary
protected transient ClassDescriptor descriptor

Constructor Detail

MethodClassExtractorback to summary
public MethodClassExtractor()

Method Detail

extractClassFromRowback to summary
public <T> Class<T> extractClassFromRow(DataRecord row, Session session)

Implements abstract org.eclipse.persistence.descriptors.ClassExtractor.extractClassFromRow.

INTERNAL Extract/compute the class from the database row and return the class. Map is used as the public interface to database row, the key is the field name, the value is the database value.

Annotations
@Override
@SuppressWarnings:unchecked
getClassExtractionMethodback to summary
public Method getClassExtractionMethod()

INTERNAL: Return all the classExtractionMethod

getClassExtractionMethodNameback to summary
public String getClassExtractionMethodName()

PUBLIC: A class extraction method can be registered with the descriptor to override the default inheritance mechanism. This allows for the class indicator field to not be used, and a user defined one instead. The method registered must be a static method on the class that the descriptor is for, the method must take DatabaseRow as argument, and must return the class to use for that row. This method will be used to decide which class to instantiate when reading from the database. It is the application's responsibility to populate any typing information in the database required to determine the class from the row. If this method is used then the class indicator field and mapping cannot be used, also the descriptor's withAllSubclasses and onlyInstances expressions must also be setup correctly.

getDescriptorback to summary
protected ClassDescriptor getDescriptor()

INTERNAL: Return the descriptor.

initializeback to summary
public void initialize(ClassDescriptor descriptor, Session session) throws DescriptorException

Overrides org.eclipse.persistence.descriptors.ClassExtractor.initialize.

INTERNAL: Setup the default classExtractionMethod, or if one was specified by the user make sure it is valid.

Annotations
@Override
setClassExtractionMethodback to summary
protected void setClassExtractionMethod(Method classExtractionMethod)

INTERNAL:

setClassExtractionMethodNameback to summary
public void setClassExtractionMethodName(String staticClassClassExtractionMethod)

PUBLIC: A class extraction method can be registered with the descriptor to override the default inheritance mechanism. This allows for the class indicator field to not be used, and a user defined one instead. The method registered must be a static method on the class that the descriptor is for, the method must take DatabaseRow as argument, and must return the class to use for that row. This method will be used to decide which class to instantiate when reading from the database. It is the application's responsibility to populate any typing information in the database required to determine the class from the row. If this method is used then the class indicator field and mapping cannot be used, also the descriptor's withAllSubclasses and onlyInstances expressions must also be setup correctly.

setDescriptorback to summary
protected void setDescriptor(ClassDescriptor descriptor)

INTERNAL: Set the descriptor.