public class TimestampLockingPolicy extends VersionLockingPolicy
Purpose: Used to allow a single version timestamp to be used for optimistic locking.
Modifier and Type | Field and Description |
---|---|
static int |
LOCAL_TIME |
protected int |
retrieveTimeFrom |
static int |
SERVER_TIME |
cachedExpression, descriptor, IN_CACHE, IN_OBJECT, isCascaded, lockMapping, lockOnChangeMode, lockValueStored, writeLockField
Constructor and Description |
---|
TimestampLockingPolicy()
PUBLIC:
Create a new TimestampLockingPolicy.
|
TimestampLockingPolicy(org.eclipse.persistence.internal.helper.DatabaseField field)
INTERNAL:
Create a new TimestampLockingPolicy.
|
TimestampLockingPolicy(java.lang.String fieldName)
PUBLIC:
Create a new TimestampLockingPolicy.
|
Modifier and Type | Method and Description |
---|---|
int |
compareWriteLockValues(java.lang.Object value1,
java.lang.Object value2)
INTERNAL:
This method compares two writeLockValues.
|
java.lang.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.
|
protected java.lang.Class |
getDefaultLockingFieldType()
INTERNAL:
Return the default timestamp locking filed java type, default is Timestamp.
|
protected java.lang.Object |
getInitialWriteValue(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
returns the initial locking value
|
java.lang.Object |
getNewLockValue(ModifyQuery query)
INTERNAL:
Returns the new Timestamp value.
|
java.lang.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.
|
int |
getVersionDifference(java.lang.Object currentValue,
java.lang.Object domainObject,
java.lang.Object primaryKeys,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Return the number of versions different between these objects.
|
Expression |
getWriteLockUpdateExpression(ExpressionBuilder builder,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Return an expression that updates the write lock
|
java.lang.Object |
getWriteLockValue(java.lang.Object domainObject,
java.lang.Object primaryKey,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
This method will return the optimistic lock value for the object.
|
protected java.lang.Number |
incrementWriteLockValue(java.lang.Number numberValue)
INTERNAL:
Timestamp versioning should not be able to do this.
|
boolean |
isNewerVersion(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow,
java.lang.Object domainObject,
java.lang.Object primaryKey,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Compares the value from the row and from the object (or cache).
|
boolean |
isNewerVersion(java.lang.Object firstLockFieldValue,
java.lang.Object secondWriteLockFieldValue)
INTERNAL:
Compares two values.
|
boolean |
isNewerVersion(java.lang.Object currentValue,
java.lang.Object domainObject,
java.lang.Object primaryKey,
org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
Compares the value with the value from the object (or cache).
|
void |
setUsesServerTime(boolean usesServerTime)
PUBLIC:
Set if policy uses server time.
|
void |
useLocalTime()
PUBLIC:
set this policy to get the time from the local machine.
|
void |
useServerTime()
PUBLIC:
set this policy to get the time from the server.
|
boolean |
usesLocalTime()
PUBLIC:
Return true if policy uses local time.
|
boolean |
usesServerTime()
PUBLIC:
Return true if policy uses server time.
|
addLockFieldsToUpdateRow, addLockValuesToTranslationRow, buildDeleteExpression, buildExpression, buildUpdateExpression, clone, getDescriptor, getLockOnChangeMode, getUnmappedFields, getVersionMapping, getWriteLockField, getWriteLockFieldName, initialize, initializeProperties, isCascaded, isStoredInCache, isStoredInObject, lockValueFromObject, mergeIntoParentCache, mergeIntoParentCache, setDescriptor, setIsCascaded, setIsStoredInCache, setLockOnChangeMode, setupWriteFieldsForInsert, setWriteLockField, setWriteLockFieldName, shouldUpdateVersionOnMappingChange, shouldUpdateVersionOnOwnedMappingChange, storeInCache, storeInObject, supportsWriteLockValuesComparison, updateObjectWithWriteValue, updateRowAndObjectForUpdate, updateWriteLockValueForWrite, validateDelete, validateUpdate, writeLockValueIntoRow
protected int retrieveTimeFrom
public static final int SERVER_TIME
public static final int LOCAL_TIME
public TimestampLockingPolicy()
public TimestampLockingPolicy(java.lang.String fieldName)
fieldName
- the field where the write lock value will be stored.public TimestampLockingPolicy(org.eclipse.persistence.internal.helper.DatabaseField field)
field
- the field where the write lock value will be stored.public int compareWriteLockValues(java.lang.Object value1, java.lang.Object value2)
compareWriteLockValues
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
compareWriteLockValues
in class VersionLockingPolicy
protected java.lang.Class getDefaultLockingFieldType()
getDefaultLockingFieldType
in class VersionLockingPolicy
public java.lang.Object getBaseValue()
getBaseValue
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
getBaseValue
in class VersionLockingPolicy
protected java.lang.Object getInitialWriteValue(org.eclipse.persistence.internal.sessions.AbstractSession session)
getInitialWriteValue
in class VersionLockingPolicy
public java.lang.Object getNewLockValue(ModifyQuery query)
getNewLockValue
in class VersionLockingPolicy
public java.lang.Object getValueToPutInCache(org.eclipse.persistence.internal.sessions.AbstractRecord row, org.eclipse.persistence.internal.sessions.AbstractSession session)
getValueToPutInCache
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
getValueToPutInCache
in class VersionLockingPolicy
public int getVersionDifference(java.lang.Object currentValue, java.lang.Object domainObject, java.lang.Object primaryKeys, org.eclipse.persistence.internal.sessions.AbstractSession session)
getVersionDifference
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
getVersionDifference
in class VersionLockingPolicy
currentValue
- the new lock valuedomainObject
- the object containing the version to be compared toprimaryKeys
- a vector containing the primary keys of the domainObjectsession
- the session to be used with the comparisonpublic java.lang.Object getWriteLockValue(java.lang.Object domainObject, java.lang.Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
getWriteLockValue
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
getWriteLockValue
in class VersionLockingPolicy
public Expression getWriteLockUpdateExpression(ExpressionBuilder builder, org.eclipse.persistence.internal.sessions.AbstractSession session)
getWriteLockUpdateExpression
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
getWriteLockUpdateExpression
in class VersionLockingPolicy
protected java.lang.Number incrementWriteLockValue(java.lang.Number numberValue)
incrementWriteLockValue
in class VersionLockingPolicy
public boolean isNewerVersion(java.lang.Object currentValue, java.lang.Object domainObject, java.lang.Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
isNewerVersion
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
isNewerVersion
in class VersionLockingPolicy
public boolean isNewerVersion(org.eclipse.persistence.internal.sessions.AbstractRecord databaseRow, java.lang.Object domainObject, java.lang.Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
isNewerVersion
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
isNewerVersion
in class VersionLockingPolicy
public boolean isNewerVersion(java.lang.Object firstLockFieldValue, java.lang.Object secondWriteLockFieldValue)
isNewerVersion
in class VersionLockingPolicy
public void setUsesServerTime(boolean usesServerTime)
public void useLocalTime()
public void useServerTime()
public boolean usesLocalTime()
public boolean usesServerTime()