EclipseLink 2.2.0, build 'v20110202-r8913' API Reference

org.eclipse.persistence.descriptors
Class MethodClassExtractor

java.lang.Object
  extended by org.eclipse.persistence.descriptors.ClassExtractor
      extended by org.eclipse.persistence.descriptors.MethodClassExtractor

public class MethodClassExtractor
extends ClassExtractor

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(ClassExtrator)

Field Summary
protected  java.lang.reflect.Method classExtractionMethod
           
protected  java.lang.String classExtractionMethodName
           
protected  ClassDescriptor descriptor
           
 
Constructor Summary
MethodClassExtractor()
           
 
Method Summary
 java.lang.Class extractClassFromRow(Record row, Session session)
          INTERNAL Extract/compute the class from the database row and return the class.
 java.lang.reflect.Method getClassExtractionMethod()
          INTERNAL: Return all the classExtractionMethod
 java.lang.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.
 void initialize(ClassDescriptor descriptor, Session session)
          INTERNAL: Setup the default classExtractionMethod, or if one was specified by the user make sure it is valid.
protected  void setClassExtractionMethod(java.lang.reflect.Method classExtractionMethod)
          INTERNAL:
 void setClassExtractionMethodName(java.lang.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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

descriptor

protected transient ClassDescriptor descriptor

classExtractionMethodName

protected java.lang.String classExtractionMethodName

classExtractionMethod

protected transient java.lang.reflect.Method classExtractionMethod
Constructor Detail

MethodClassExtractor

public MethodClassExtractor()
Method Detail

getClassExtractionMethod

public java.lang.reflect.Method getClassExtractionMethod()
INTERNAL: Return all the classExtractionMethod


getClassExtractionMethodName

public java.lang.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.


setClassExtractionMethod

protected void setClassExtractionMethod(java.lang.reflect.Method classExtractionMethod)
INTERNAL:


setClassExtractionMethodName

public void setClassExtractionMethodName(java.lang.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.


initialize

public void initialize(ClassDescriptor descriptor,
                       Session session)
                throws DescriptorException
INTERNAL: Setup the default classExtractionMethod, or if one was specified by the user make sure it is valid.

Overrides:
initialize in class ClassExtractor
Throws:
DescriptorException

extractClassFromRow

public java.lang.Class extractClassFromRow(Record row,
                                           Session session)
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.

Specified by:
extractClassFromRow in class ClassExtractor

getDescriptor

protected ClassDescriptor getDescriptor()
INTERNAL: Return the descriptor.


setDescriptor

protected void setDescriptor(ClassDescriptor descriptor)
INTERNAL: Set the descriptor.


EclipseLink 2.2.0, build 'v20110202-r8913' API Reference