Class TimestampLockingPolicy

java.lang.Object
org.eclipse.persistence.descriptors.VersionLockingPolicy
org.eclipse.persistence.descriptors.TimestampLockingPolicy
All Implemented Interfaces:
Serializable, Cloneable, org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy

public class TimestampLockingPolicy extends VersionLockingPolicy

Purpose: Used to allow a single version timestamp to be used for optimistic locking.

See Also:
  • Field Details

    • retrieveTimeFrom

      protected int retrieveTimeFrom
    • SERVER_TIME

      public static final int SERVER_TIME
      See Also:
    • LOCAL_TIME

      public static final int LOCAL_TIME
      See Also:
  • Constructor Details

    • TimestampLockingPolicy

      public TimestampLockingPolicy()
      PUBLIC: Create a new TimestampLockingPolicy. Defaults to using the time retrieved from the server.
    • TimestampLockingPolicy

      public TimestampLockingPolicy(String fieldName)
      PUBLIC: Create a new TimestampLockingPolicy. Defaults to using the time retrieved from the server.
      Parameters:
      fieldName - the field where the write lock value will be stored.
    • TimestampLockingPolicy

      public TimestampLockingPolicy(org.eclipse.persistence.internal.helper.DatabaseField field)
      INTERNAL: Create a new TimestampLockingPolicy. Defaults to using the time retrieved from the server.
      Parameters:
      field - the field where the write lock value will be stored.
  • Method Details

    • compareWriteLockValues

      public int compareWriteLockValues(Object value1, Object value2)
      INTERNAL: This method compares two writeLockValues. The writeLockValues should be non-null and of type java.sql.Timestamp. Returns: -1 if value1 is less (older) than value2; 0 if value1 equals value2; 1 if value1 is greater (newer) than value2. Throws: NullPointerException if the passed value is null; ClassCastException if the passed value is of a wrong type.
      Specified by:
      compareWriteLockValues in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      compareWriteLockValues in class VersionLockingPolicy
    • getDefaultLockingFieldType

      protected Class getDefaultLockingFieldType()
      INTERNAL: Return the default timestamp locking filed java type, default is Timestamp.
      Overrides:
      getDefaultLockingFieldType in class VersionLockingPolicy
    • getBaseValue

      public Object getBaseValue()
      INTERNAL: This is the base value that is older than all other values, it is used in the place of null in some situations.
      Specified by:
      getBaseValue in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      getBaseValue in class VersionLockingPolicy
    • getInitialWriteValue

      protected Object getInitialWriteValue(org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: returns the initial locking value
      Overrides:
      getInitialWriteValue in class VersionLockingPolicy
    • getNewLockValue

      public Object getNewLockValue(ModifyQuery query)
      INTERNAL: Returns the new Timestamp value.
      Overrides:
      getNewLockValue in class VersionLockingPolicy
    • getValueToPutInCache

      public Object getValueToPutInCache(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Return the value that should be stored in the identity map. If the value is stored in the object, then return a null.
      Specified by:
      getValueToPutInCache in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      getValueToPutInCache in class VersionLockingPolicy
    • getVersionDifference

      public int getVersionDifference(Object currentValue, Object domainObject, Object primaryKeys, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Return the number of versions different between these objects.
      Specified by:
      getVersionDifference in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      getVersionDifference in class VersionLockingPolicy
      Parameters:
      currentValue - the new lock value
      domainObject - the object containing the version to be compared to
      primaryKeys - a vector containing the primary keys of the domainObject
      session - the session to be used with the comparison
    • getWriteLockValue

      public Object getWriteLockValue(Object domainObject, Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: This method will return the optimistic lock value for the object.
      Specified by:
      getWriteLockValue in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      getWriteLockValue in class VersionLockingPolicy
    • getWriteLockUpdateExpression

      public Expression getWriteLockUpdateExpression(ExpressionBuilder builder, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Return an expression that updates the write lock
      Specified by:
      getWriteLockUpdateExpression in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      getWriteLockUpdateExpression in class VersionLockingPolicy
    • incrementWriteLockValue

      protected Number incrementWriteLockValue(Number numberValue)
      INTERNAL: Timestamp versioning should not be able to do this. Override the superclass behavior.
      Overrides:
      incrementWriteLockValue in class VersionLockingPolicy
    • isNewerVersion

      public boolean isNewerVersion(Object currentValue, Object domainObject, Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Compares the value with the value from the object (or cache). Will return true if the currentValue is newer than the domainObject.
      Specified by:
      isNewerVersion in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      isNewerVersion in class VersionLockingPolicy
    • isNewerVersion

      public boolean isNewerVersion(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, Object domainObject, Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
      INTERNAL: Compares the value from the row and from the object (or cache). Will return true if the row is newer than the object.
      Specified by:
      isNewerVersion in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
      Overrides:
      isNewerVersion in class VersionLockingPolicy
    • isNewerVersion

      public boolean isNewerVersion(Object firstLockFieldValue, Object secondWriteLockFieldValue)
      INTERNAL: Compares two values. Will return true if the firstLockFieldValue is newer than the secondWriteLockFieldValue.
      Overrides:
      isNewerVersion in class VersionLockingPolicy
    • setUsesServerTime

      public void setUsesServerTime(boolean usesServerTime)
      PUBLIC: Set if policy uses server time.
    • useLocalTime

      public void useLocalTime()
      PUBLIC: set this policy to get the time from the local machine.
    • useServerTime

      public void useServerTime()
      PUBLIC: set this policy to get the time from the server.
    • usesLocalTime

      public boolean usesLocalTime()
      PUBLIC: Return true if policy uses local time.
    • usesServerTime

      public boolean usesServerTime()
      PUBLIC: Return true if policy uses server time.