public abstract class FieldsLockingPolicy
extends java.lang.Object
implements org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
Purpose: An abstract superclass of some implementations of the OptimisticLockingPolicy interface. All of the subclasses of this class implement OptimisticLocking based on mapped fields in the object. These fields are only compared and not modified. Any modification (incrementing etc..) must be handled by the application.
AllFieldsLockingPolicy
, ChangedFieldsLockingPolicy
, SelectedFieldsLockingPolicy
, Serialized FormConstructor and Description |
---|
FieldsLockingPolicy()
PUBLIC: Create a new field locking policy.
|
Modifier and Type | Method and Description |
---|---|
void |
addLockFieldsToUpdateRow(org.eclipse.persistence.internal.sessions.AbstractRecord Record, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Add update fields for template row.
|
abstract void |
addLockValuesToTranslationRow(ObjectLevelModifyQuery query)
INTERNAL: Values to be included in the locking mechanism are added to the translation row.
|
Expression |
buildDeleteExpression(org.eclipse.persistence.internal.helper.DatabaseTable table, Expression mainExpression, org.eclipse.persistence.internal.sessions.AbstractRecord row)
INTERNAL: When given an expression, this method will return a new expression with the optimistic locking values included.
|
Expression |
buildUpdateExpression(org.eclipse.persistence.internal.helper.DatabaseTable table, Expression mainExpression, org.eclipse.persistence.internal.sessions.AbstractRecord transRow, org.eclipse.persistence.internal.sessions.AbstractRecord modifyRow)
INTERNAL: This method must be included in any locking policy.
|
java.lang.Object |
clone()
INTERNAL: Clone the policy
|
int |
compareWriteLockValues(java.lang.Object value1, java.lang.Object value2)
INTERNAL: This method shouldn't be called if supportsWriteLockValuesComparison() returns false.
|
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.
|
org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy.LockOnChange |
getLockOnChangeMode()
ADVANCED: returns the LockOnChange mode for this policy.
|
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 version difference between the two states of the object.
|
org.eclipse.persistence.internal.helper.DatabaseField |
getWriteLockField()
INTERNAL: Return the write lock field.
|
Expression |
getWriteLockUpdateExpression(ExpressionBuilder builder, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL:
|
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
|
void |
initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: It is responsible for initializing the policy;
|
void |
initializeProperties()
INTERNAL: It is responsible for initializing the policy;
|
boolean |
isCascaded()
PUBLIC: Return true if the policy uses cascade locking.
|
boolean |
isNewerVersion(org.eclipse.persistence.internal.sessions.AbstractRecord Record, 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 currentValue, java.lang.Object domainObject, java.lang.Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
INTERNAL: Compares the value and the value from the object (or cache).
|
boolean |
isStoredInCache()
PUBLIC: Return true if the lock value is stored in the cache.
|
void |
mergeIntoParentCache(org.eclipse.persistence.internal.identitymaps.CacheKey unitOfWorkCacheKey, org.eclipse.persistence.internal.identitymaps.CacheKey parentSessionCacheKey)
INTERNAL: This method should merge changes from the parent into the child.
|
void |
mergeIntoParentCache(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.lang.Object primaryKey, java.lang.Object object)
INTERNAL: Only applicable when the value is stored in the cache.
|
void |
setDescriptor(ClassDescriptor descriptor)
INTERNAL: Set method for the descriptor
|
void |
setLockOnChangeMode(org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy.LockOnChange lockOnChangeMode)
ADVANCED: Sets the LockOnChange mode for this policy.
|
void |
setupWriteFieldsForInsert(ObjectLevelModifyQuery query)
INTERNAL: Put the initial writelock value into the modifyRow.
|
boolean |
shouldUpdateVersionOnMappingChange()
INTERNAL: Returns true if the policy has been set to set an optimistic read lock when any mapping changes.
|
boolean |
shouldUpdateVersionOnOwnedMappingChange()
INTERNAL: Returns true if the policy has been set to set an optimistic read lock when a owning mapping changes.
|
boolean |
supportsWriteLockValuesComparison()
INTERNAL: Indicates whether compareWriteLockValues method is supported by the policy.
|
void |
updateRowAndObjectForUpdate(ObjectLevelModifyQuery query, java.lang.Object domainObject)
INTERNAL: Nothing to do because all updates are handled by the application
|
void |
validateDelete(int rowCount, java.lang.Object object, DeleteObjectQuery query)
INTERNAL: Check the row count for lock failure.
|
void |
validateUpdate(int rowCount, java.lang.Object object, WriteObjectQuery query)
INTERNAL: Check the row count for lock failure.
|
public FieldsLockingPolicy()
public void addLockFieldsToUpdateRow(org.eclipse.persistence.internal.sessions.AbstractRecord Record, org.eclipse.persistence.internal.sessions.AbstractSession session)
addLockFieldsToUpdateRow
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public abstract void addLockValuesToTranslationRow(ObjectLevelModifyQuery query)
addLockValuesToTranslationRow
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public Expression buildDeleteExpression(org.eclipse.persistence.internal.helper.DatabaseTable table, Expression mainExpression, org.eclipse.persistence.internal.sessions.AbstractRecord row)
buildDeleteExpression
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public Expression buildUpdateExpression(org.eclipse.persistence.internal.helper.DatabaseTable table, Expression mainExpression, org.eclipse.persistence.internal.sessions.AbstractRecord transRow, org.eclipse.persistence.internal.sessions.AbstractRecord modifyRow)
buildUpdateExpression
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public java.lang.Object clone()
clone
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
clone
in class java.lang.Object
public boolean supportsWriteLockValuesComparison()
supportsWriteLockValuesComparison
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public int compareWriteLockValues(java.lang.Object value1, java.lang.Object value2)
compareWriteLockValues
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public java.lang.Object getBaseValue()
getBaseValue
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public org.eclipse.persistence.internal.helper.DatabaseField getWriteLockField()
getWriteLockField
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public Expression getWriteLockUpdateExpression(ExpressionBuilder builder, org.eclipse.persistence.internal.sessions.AbstractSession session)
getWriteLockUpdateExpression
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy.LockOnChange getLockOnChangeMode()
getLockOnChangeMode
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
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
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
public 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
public void initialize(org.eclipse.persistence.internal.sessions.AbstractSession session)
initialize
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void initializeProperties()
initializeProperties
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public boolean isStoredInCache()
isStoredInCache
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public boolean isCascaded()
isCascaded
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
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
public boolean isNewerVersion(org.eclipse.persistence.internal.sessions.AbstractRecord Record, java.lang.Object domainObject, java.lang.Object primaryKey, org.eclipse.persistence.internal.sessions.AbstractSession session)
isNewerVersion
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void mergeIntoParentCache(org.eclipse.persistence.internal.sessions.UnitOfWorkImpl uow, java.lang.Object primaryKey, java.lang.Object object)
mergeIntoParentCache
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void mergeIntoParentCache(org.eclipse.persistence.internal.identitymaps.CacheKey unitOfWorkCacheKey, org.eclipse.persistence.internal.identitymaps.CacheKey parentSessionCacheKey)
mergeIntoParentCache
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void setDescriptor(ClassDescriptor descriptor)
setDescriptor
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void setLockOnChangeMode(org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy.LockOnChange lockOnChangeMode)
setLockOnChangeMode
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void setupWriteFieldsForInsert(ObjectLevelModifyQuery query)
setupWriteFieldsForInsert
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void updateRowAndObjectForUpdate(ObjectLevelModifyQuery query, java.lang.Object domainObject)
updateRowAndObjectForUpdate
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public boolean shouldUpdateVersionOnOwnedMappingChange()
shouldUpdateVersionOnOwnedMappingChange
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public boolean shouldUpdateVersionOnMappingChange()
shouldUpdateVersionOnMappingChange
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void validateDelete(int rowCount, java.lang.Object object, DeleteObjectQuery query)
validateDelete
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy
public void validateUpdate(int rowCount, java.lang.Object object, WriteObjectQuery query)
validateUpdate
in interface org.eclipse.persistence.internal.descriptors.OptimisticLockingPolicy