Class InterfacePolicy

java.lang.Object
org.eclipse.persistence.descriptors.InterfacePolicy
All Implemented Interfaces:
Serializable, Cloneable
Direct Known Subclasses:
TablePerClassPolicy

public class InterfacePolicy extends Object implements Serializable, Cloneable
Purpose: Allows for a descriptor's implemented interfaces to be configured. Generally Interface Descriptors are used for 1 of 2 reasons:

a. Interface descriptors can be used to query across a set of classes that do not share a table.
b. As a target of a variable one to one mapping.

See Also:
  • Field Details

    • parentInterfaces

      protected List<Class> parentInterfaces
    • parentInterfaceNames

      protected List<String> parentInterfaceNames
    • parentDescriptors

      protected List<ClassDescriptor> parentDescriptors
    • childDescriptors

      protected List<ClassDescriptor> childDescriptors
    • descriptor

      protected ClassDescriptor descriptor
    • implementorDescriptor

      protected Class implementorDescriptor
    • implementorDescriptorClassName

      protected String implementorDescriptorClassName
  • Constructor Details

    • InterfacePolicy

      public InterfacePolicy()
      INTERNAL: Create a new policy. Only descriptor involved in interface should have a policy.
    • InterfacePolicy

      public InterfacePolicy(ClassDescriptor descriptor)
      INTERNAL: Create a new policy. Only descriptor involved in interface should have a policy.
  • Method Details

    • addChildDescriptor

      public void addChildDescriptor(ClassDescriptor childDescriptor)
      INTERNAL: Add child descriptor to the parent descriptor.
    • addParentDescriptor

      public void addParentDescriptor(ClassDescriptor parentDescriptor)
      INTERNAL: Add parent descriptor.
    • addParentInterface

      public void addParentInterface(Class parentInterface)
      PUBLIC: Add the parent Interface class. This method should be called once for each parent Interface of the Descriptor.
    • addParentInterfaceName

      public void addParentInterfaceName(String parentInterfaceName)
    • hasChild

      public boolean hasChild()
      INTERNAL: Return if there are any child descriptors.
    • getChildDescriptors

      public List<ClassDescriptor> getChildDescriptors()
      INTERNAL: Return all the child descriptors.
    • getDescriptor

      protected ClassDescriptor getDescriptor()
    • getImplementorDescriptor

      public Class getImplementorDescriptor()
      INTERNAL: Returns the implementor descriptor class.
    • getImplementorDescriptorClassName

      public String getImplementorDescriptorClassName()
      INTERNAL: Returns the implementor descriptor class name.
    • getParentDescriptors

      public List<ClassDescriptor> getParentDescriptors()
      INTERNAL: Return all the parent descriptors.
    • getParentInterfaces

      public List<Class> getParentInterfaces()
      INTERNAL: Return the list of parent interfaces.
    • getParentInterfaceNames

      public List<String> getParentInterfaceNames()
    • convertClassNamesToClasses

      public void convertClassNamesToClasses(ClassLoader classLoader)
      INTERNAL: Convert all the class-name-based settings in this InheritancePolicy to actual class-based settings. This method is used when converting a project that has been built with class names to a project with classes. It will also convert referenced classes to the versions of the classes from the classLoader.
    • initialize

      public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Set the vector to store parent interfaces.
    • isInterfaceChildDescriptor

      public boolean isInterfaceChildDescriptor()
      INTERNAL: Check if it is a child descriptor.
    • isTablePerClassPolicy

      public boolean isTablePerClassPolicy()
      INTERNAL:
    • selectAllObjects

      protected Object selectAllObjects(ReadAllQuery query)
      INTERNAL: Select all objects for a concrete descriptor.
    • prepareQuery

      protected ObjectLevelReadQuery prepareQuery(ObjectLevelReadQuery query)
      INTERNAL: Select all objects for a concrete descriptor.
    • selectAllObjectsUsingMultipleTableSubclassRead

      public Object selectAllObjectsUsingMultipleTableSubclassRead(ReadAllQuery query) throws DatabaseException
      INTERNAL: Select all objects for an interface descriptor. This is accomplished by selecting for all of the concrete classes and then merging the objects.
      Throws:
      DatabaseException
    • selectOneObject

      protected Object selectOneObject(ReadObjectQuery query) throws DescriptorException
      INTERNAL: Select one object of any concrete subclass.
      Throws:
      DescriptorException
    • selectOneObjectUsingMultipleTableSubclassRead

      public Object selectOneObjectUsingMultipleTableSubclassRead(ReadObjectQuery query) throws DatabaseException, QueryException
      INTERNAL: Select one object of any concrete subclass.
      Throws:
      DatabaseException
      QueryException
    • setDescriptor

      public void setDescriptor(ClassDescriptor descriptor)
      INTERNAL: Set the descriptor.
    • setImplementorDescriptor

      public void setImplementorDescriptor(Class implementorDescriptor)
      INTERNAL: Sets the implementor descriptor class.
    • setImplementorDescriptorClassName

      public void setImplementorDescriptorClassName(String implementorDescriptorClassName)
      INTERNAL: Sets the implementor descriptor class name.
    • setParentInterfaces

      public void setParentInterfaces(List<Class> parentInterfaces)
      Set the Vector to store parent interfaces.
    • setParentInterfaceNames

      public void setParentInterfaceNames(List<String> parentInterfaceNames)
    • usesImplementorDescriptor

      public boolean usesImplementorDescriptor()
      INTERNAL: Returns true if this descriptor should be ignored and the implementing descriptor should be used instead.