org.eclipse.persistence.descriptors
Class InterfacePolicy

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

public class InterfacePolicy
extends Object
implements Serializable

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

Constructor Summary
InterfacePolicy()
          INTERNAL: Create a new policy.
InterfacePolicy(ClassDescriptor descriptor)
          INTERNAL: Create a new policy.
 
Method Summary
 void addChildDescriptor(ClassDescriptor childDescriptor)
          INTERNAL: Add child descriptor to the parent descriptor.
 void addParentDescriptor(ClassDescriptor parentDescriptor)
          INTERNAL: Add parent descriptor.
 void addParentInterface(Class parentInterface)
          PUBLIC: Add the parent Interface class.
 void addParentInterfaceName(String parentInterfaceName)
           
 void convertClassNamesToClasses(ClassLoader classLoader)
          INTERNAL: Convert all the class-name-based settings in this InheritancePolicy to actual class-based settings.
 Vector getChildDescriptors()
          INTERNAL: Return all the child descriptors.
 Class getImplementorDescriptor()
          INTERNAL: Returns the implementor descriptor class.
 String getImplementorDescriptorClassName()
          INTERNAL: Returns the implementor descriptor class name.
 Vector getParentDescriptors()
          INTERNAL: Return all the parent descriptors.
 Vector getParentInterfaceNames()
           
 Vector getParentInterfaces()
          INTERNAL: Return the vector of parent interfaces.
 boolean hasChild()
          INTERNAL: Return if there are any child descriptors.
 void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
          INTERNAL: Set the vector to store parent interfaces.
 boolean isInterfaceChildDescriptor()
          INTERNAL: Check if it is a child descriptor.
 boolean isTablePerClassPolicy()
          INTERNAL:
 Object selectAllObjectsUsingMultipleTableSubclassRead(ReadAllQuery query)
          INTERNAL: Select all objects for an interface descriptor.
 Object selectOneObjectUsingMultipleTableSubclassRead(ReadObjectQuery query)
          INTERNAL: Select one object of any concrete subclass.
 void setDescriptor(ClassDescriptor descriptor)
          INTERNAL: Set the descriptor.
 void setImplementorDescriptor(Class implementorDescriptor)
          INTERNAL: Sets the implementor descriptor class.
 void setImplementorDescriptorClassName(String implementorDescriptorClassName)
          INTERNAL: Sets the implementor descriptor class name.
 void setParentInterfaceNames(Vector parentInterfaceNames)
           
 void setParentInterfaces(Vector parentInterfaces)
          Set the Vector to store parent interfaces.
 boolean usesImplementorDescriptor()
          INTERNAL: Returns true if this descriptor should be ignored and the implenting descriptor should be used instead.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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 Vector 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 Vector getParentDescriptors()
INTERNAL: Return all the parent descriptors.


getParentInterfaces

public Vector getParentInterfaces()
INTERNAL: Return the vector of parent interfaces.


getParentInterfaceNames

public Vector 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:


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

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(Vector parentInterfaces)
Set the Vector to store parent interfaces.


setParentInterfaceNames

public void setParentInterfaceNames(Vector parentInterfaceNames)

usesImplementorDescriptor

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