Class 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.

    Since:
    TopLink for Java 2.0
    See Also:
    Serialized Form
    • Field Detail

      • parentInterfaces

        protected List<Class> parentInterfaces
      • parentInterfaceNames

        protected List<String> parentInterfaceNames
      • implementorDescriptor

        protected Class implementorDescriptor
      • implementorDescriptorClassName

        protected String implementorDescriptorClassName
    • Constructor Detail

      • 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 Detail

      • 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.
      • 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​(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.
      • 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
      • 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.