Class CMPPolicy

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable
    Direct Known Subclasses:
    org.eclipse.persistence.internal.jpa.CMP3Policy

    public class CMPPolicy
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Cloneable

    Description: Place holder for CMP specific information. This class can be set on the ClassDescriptor.

    See Also:
    PessimisticLockingPolicy, Serialized Form
    Since:
    TopLink 10.1.3
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static interface  CMPPolicy.KeyElementAccessor
      INTERNAL: This is the interface used to encapsulate the the type of key class element
      protected static class  CMPPolicy.KeyIsElementAccessor
      INTERNAL: This class will be used when the keyClass is a primitive
    • Constructor Summary

      Constructors 
      Constructor Description
      CMPPolicy()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      CMPPolicy clone()
      INTERNAL: Clone the CMPPolicy
      void convertClassNamesToClasses​(java.lang.ClassLoader classLoader)
      INTERNAL: Convert all the class-name-based settings in this object to actual class-based settings.
      java.lang.Object createBeanUsingKey​(java.lang.Object key, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Use the key to create a bean and initialize its primary key fields.
      java.lang.Object createPrimaryKeyFromId​(java.lang.Object key, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Use the key to create a EclipseLink primary key.
      java.lang.Object createPrimaryKeyInstance​(java.lang.Object object, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Create an instance of the Id class or value from the object.
      java.lang.Object createPrimaryKeyInstanceFromId​(java.lang.Object key, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Create an instance of the composite primary key class for the key object.
      java.lang.Object createPrimaryKeyInstanceFromPrimaryKeyValues​(org.eclipse.persistence.internal.sessions.AbstractSession session, int[] elementIndex, java.lang.Object... keyElements)
      INTERNAL: Create an instance of the composite primary key class for the key object.
      java.lang.Object getClassInstance​(java.lang.Class cls)
      INTERNAL: Return a new instance of the class provided.
      int getDeferModificationsUntilCommit()
      ADVANCED: This can be used to control when changes to objects are submitted to the database This is only applicable to TopLink's CMP implementation and not available within the core.
      ClassDescriptor getDescriptor()
      INTERNAL:
      boolean getForceUpdate()
      ADVANCED: Return true if descriptor is set to always update all registered objects of this type
      protected CMPPolicy.KeyElementAccessor[] getKeyClassFields()
      INTERNAL:
      java.lang.Class getMappedClass()
      PUBLIC: Answer the mapped class.
      int getNonDeferredCreateTime()
      ADVANCED: This setting is only available for CMP beans that are not being deferred.
      PessimisticLockingPolicy getPessimisticLockingPolicy()
      PUBLIC: Return the policy for bean pessimistic locking
      java.lang.Class getPKClass()
      INTERNAL:
      java.lang.Object getPKClassInstance()
      INTERNAL:
      boolean getUpdateAllFields()
      ADVANCED: Return true if descriptor is set to update all fields for an object of this type when an update occurs.
      boolean hasPessimisticLockingPolicy()
      PUBLIC: Return true if bean pessimistic locking is configured
      void initialize​(ClassDescriptor descriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Initialize the CMPPolicy settings.
      java.lang.Boolean internalGetForceUpdate()
      INTERNAL: return internal tri-state value so we can decide whether to inherit or not at init time.
      java.lang.Boolean internalGetUpdateAllFields()
      INTERNAL: return internal tri-state value so we can decide whether to inherit or not at init time.
      void internalSetForceUpdate​(java.lang.Boolean newForceUpdateValue)
      INTERNAL: internal method to set the tri-state value.
      void internalSetUpdateAllFields​(java.lang.Boolean newUpdateAllFieldsValue)
      INTERNAL: internal method to set the tri-state value.
      boolean isCMP3Policy()
      INTERNAL: Return if this policy is for CMP3.
      protected boolean isSingleKey​(CMPPolicy.KeyElementAccessor[] pkElementArray)
      Check to see if there is a single key element.
      void remoteInitialize​(ClassDescriptor descriptor, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Initialize the CMPPolicy settings for remote sessions.
      void setDeferModificationsUntilCommit​(int deferralLevel)
      ADVANCED: This can be set to control when changes to objects are submitted to the database This is only applicable to TopLink's CMP implementation and not available within the core.
      void setDescriptor​(ClassDescriptor owningDescriptor)
      INTERNAL:
      protected void setFieldValue​(CMPPolicy.KeyElementAccessor accessor, java.lang.Object keyInstance, DatabaseMapping mapping, org.eclipse.persistence.internal.sessions.AbstractSession session, int[] elementIndex, java.lang.Object... keyElements)
      INTERNAL: Recursive method to set a field value in the given key instance.
      void setForceUpdate​(boolean shouldForceUpdate)
      ADVANCED: Configure whether TopLink should always update all registered objects of this type.
      void setMappedClass​(java.lang.Class newMappedClass)
      PUBLIC: Define the mapped class.
      void setNonDeferredCreateTime​(int createTime)
      ADVANCED: This setting is only available for CMP beans that are not being deferred.
      void setPessimisticLockingPolicy​(PessimisticLockingPolicy policy)
      PUBLIC: Configure bean pessimistic locking
      void setUpdateAllFields​(boolean shouldUpdatAllFields)
      ADVANCED: Configure whether TopLink should update all fields for an object of this type when an update occurs.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • forceUpdate

        protected java.lang.Boolean forceUpdate
      • updateAllFields

        protected java.lang.Boolean updateAllFields
      • pessimisticLockingPolicy

        protected PessimisticLockingPolicy pessimisticLockingPolicy
        Allow the bean to always be locked as it enters a new transaction.
      • mappedClass

        protected java.lang.Class mappedClass
        Class originally mapped, before anything was generated.
      • modificationDeferralLevel

        protected int modificationDeferralLevel
        The object deferral level. This controls when objects changes will be sent to the Database.
      • UPDATE_MODIFICATIONS

        public static final int UPDATE_MODIFICATIONS
        defer updates
        See Also:
        Constant Field Values
      • ALL_MODIFICATIONS

        public static final int ALL_MODIFICATIONS
        defer all modifications, inserts and deletes included (default)
        See Also:
        Constant Field Values
      • nonDeferredCreateTime

        protected int nonDeferredCreateTime
        This setting will allow customers to control when Toplink will issue the insert SQL for CMP beans.
      • UNDEFINED

        public static final int UNDEFINED
        undefined if it is non-deferred issue sql at create
        See Also:
        Constant Field Values
      • AFTER_EJBCREATE

        public static final int AFTER_EJBCREATE
        issue SQL after ejbCreate but before ejbPostCreate
        See Also:
        Constant Field Values
      • AFTER_EJBPOSTCREATE

        public static final int AFTER_EJBPOSTCREATE
        issue SQL after ejbPostCreate
        See Also:
        Constant Field Values
    • Constructor Detail

      • CMPPolicy

        public CMPPolicy()
    • Method Detail

      • getNonDeferredCreateTime

        public int getNonDeferredCreateTime()
        ADVANCED: This setting is only available for CMP beans that are not being deferred. Using it will allow TopLink to determine if the INSERT SQL should be sent to the database before or after the postCreate call.
      • setDeferModificationsUntilCommit

        public void setDeferModificationsUntilCommit​(int deferralLevel)
        ADVANCED: This can be set to control when changes to objects are submitted to the database This is only applicable to TopLink's CMP implementation and not available within the core.
      • setMappedClass

        public void setMappedClass​(java.lang.Class newMappedClass)
        PUBLIC: Define the mapped class. This is the class which was originally mapped in the MW
        Parameters:
        newMappedClass -
      • getMappedClass

        public java.lang.Class getMappedClass()
        PUBLIC: Answer the mapped class. This is the class which was originally mapped in the MW
      • setNonDeferredCreateTime

        public void setNonDeferredCreateTime​(int createTime)
        ADVANCED: This setting is only available for CMP beans that are not being deferred. Using it will allow TopLink to determine if the INSERT SQL should be sent to the database before or after the postCreate call.
      • hasPessimisticLockingPolicy

        public boolean hasPessimisticLockingPolicy()
        PUBLIC: Return true if bean pessimistic locking is configured
      • getDeferModificationsUntilCommit

        public int getDeferModificationsUntilCommit()
        ADVANCED: This can be used to control when changes to objects are submitted to the database This is only applicable to TopLink's CMP implementation and not available within the core.
      • getForceUpdate

        public boolean getForceUpdate()
        ADVANCED: Return true if descriptor is set to always update all registered objects of this type
      • setForceUpdate

        public void setForceUpdate​(boolean shouldForceUpdate)
        ADVANCED: Configure whether TopLink should always update all registered objects of this type. NOTE: if set to true, then updateAllFields must also be set to true
        Parameters:
        shouldForceUpdate -
      • getUpdateAllFields

        public boolean getUpdateAllFields()
        ADVANCED: Return true if descriptor is set to update all fields for an object of this type when an update occurs.
      • setUpdateAllFields

        public void setUpdateAllFields​(boolean shouldUpdatAllFields)
        ADVANCED: Configure whether TopLink should update all fields for an object of this type when an update occurs.
        Parameters:
        shouldUpdatAllFields -
      • internalGetForceUpdate

        public java.lang.Boolean internalGetForceUpdate()
        INTERNAL: return internal tri-state value so we can decide whether to inherit or not at init time.
      • internalGetUpdateAllFields

        public java.lang.Boolean internalGetUpdateAllFields()
        INTERNAL: return internal tri-state value so we can decide whether to inherit or not at init time.
      • internalSetForceUpdate

        public void internalSetForceUpdate​(java.lang.Boolean newForceUpdateValue)
        INTERNAL: internal method to set the tri-state value. This is done in InheritancePolicy at init time.
      • internalSetUpdateAllFields

        public void internalSetUpdateAllFields​(java.lang.Boolean newUpdateAllFieldsValue)
        INTERNAL: internal method to set the tri-state value. This is done in InheritancePolicy at init time.
      • remoteInitialize

        public void remoteInitialize​(ClassDescriptor descriptor,
                                     org.eclipse.persistence.internal.sessions.AbstractSession session)
                              throws DescriptorException
        INTERNAL: Initialize the CMPPolicy settings for remote sessions.
        Throws:
        DescriptorException
      • getDescriptor

        public ClassDescriptor getDescriptor()
        INTERNAL:
        Returns:
        Returns the owningDescriptor.
      • setDescriptor

        public void setDescriptor​(ClassDescriptor owningDescriptor)
        INTERNAL:
        Parameters:
        owningDescriptor - The owningDescriptor to set.
      • setFieldValue

        protected void setFieldValue​(CMPPolicy.KeyElementAccessor accessor,
                                     java.lang.Object keyInstance,
                                     DatabaseMapping mapping,
                                     org.eclipse.persistence.internal.sessions.AbstractSession session,
                                     int[] elementIndex,
                                     java.lang.Object... keyElements)
        INTERNAL: Recursive method to set a field value in the given key instance.
      • isCMP3Policy

        public boolean isCMP3Policy()
        INTERNAL: Return if this policy is for CMP3.
      • clone

        public CMPPolicy clone()
        INTERNAL: Clone the CMPPolicy
        Overrides:
        clone in class java.lang.Object
      • convertClassNamesToClasses

        public void convertClassNamesToClasses​(java.lang.ClassLoader classLoader)
        INTERNAL: Convert all the class-name-based settings in this object 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.
        Parameters:
        classLoader -
      • createPrimaryKeyInstanceFromId

        public java.lang.Object createPrimaryKeyInstanceFromId​(java.lang.Object key,
                                                               org.eclipse.persistence.internal.sessions.AbstractSession session)
        INTERNAL: Create an instance of the composite primary key class for the key object.
      • createPrimaryKeyInstanceFromPrimaryKeyValues

        public java.lang.Object createPrimaryKeyInstanceFromPrimaryKeyValues​(org.eclipse.persistence.internal.sessions.AbstractSession session,
                                                                             int[] elementIndex,
                                                                             java.lang.Object... keyElements)
        INTERNAL: Create an instance of the composite primary key class for the key object. Yes the elementIndex looks strange but this is just a simple way to get the index to be pass-by-reference
      • createPrimaryKeyInstance

        public java.lang.Object createPrimaryKeyInstance​(java.lang.Object object,
                                                         org.eclipse.persistence.internal.sessions.AbstractSession session)
        INTERNAL: Create an instance of the Id class or value from the object.
      • getClassInstance

        public java.lang.Object getClassInstance​(java.lang.Class cls)
        INTERNAL: Return a new instance of the class provided.
      • getPKClassInstance

        public java.lang.Object getPKClassInstance()
        INTERNAL:
      • getPKClass

        public java.lang.Class getPKClass()
        INTERNAL:
      • createPrimaryKeyFromId

        public java.lang.Object createPrimaryKeyFromId​(java.lang.Object key,
                                                       org.eclipse.persistence.internal.sessions.AbstractSession session)
        INTERNAL: Use the key to create a EclipseLink primary key. If the key is simple (direct mapped) then just add it to a vector, otherwise must go through the inefficient process of copying the key into the bean and extracting the key from the bean.
      • createBeanUsingKey

        public java.lang.Object createBeanUsingKey​(java.lang.Object key,
                                                   org.eclipse.persistence.internal.sessions.AbstractSession session)
        INTERNAL: Use the key to create a bean and initialize its primary key fields. Note: If is a compound PK then a primary key object is being used. This method should only be used for 'templates' when executing queries. The bean built will not be given an EntityContext and should not be used as an actual entity bean.
        Parameters:
        key - Object the primary key to use for initializing the bean's corresponding pk fields
        Returns:
        Object
      • isSingleKey

        protected boolean isSingleKey​(CMPPolicy.KeyElementAccessor[] pkElementArray)
        Check to see if there is a single key element. Iterate through the list of primary key elements and count only keys that are not part of the Multitenant identifier.
        Parameters:
        pkElementArray -
        Returns: