|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.tangosol.util.Base
com.tangosol.run.jca.SimpleValidator
public class SimpleValidator
Simple generic Validator implementation that uses hashCode values for the enlisted resources to resolve optimistic transaction conflicts.
Field Summary | |
---|---|
protected Map |
m_mapVersion
The map that holds version objects for enlisted resources. |
Constructor Summary | |
---|---|
SimpleValidator()
Default constructor. |
Method Summary | |
---|---|
protected Comparable |
calculateVersion(Object oValue)
Generate the Comparable version indicator for a given resource value. |
void |
enlist(TransactionMap mapTx,
Object oKey)
Enlist the resource with the specified transaction. |
TransactionMap.Validator |
getNextValidator()
Retrive the next Validator. |
Map |
getVersionMap()
Obtain a map that holds the version objects for resources enlisted into a transaction. |
void |
setNextValidator(TransactionMap.Validator validator)
Set the next Validator. |
void |
validate(TransactionMap mapTx,
Set setInsert,
Set setUpdate,
Set setDelete,
Set setRead,
Set setPhantom)
Validate that the content of the TransactionMap is "fit" to be committed into the base map. |
protected void |
validateInsert(TransactionMap mapTx,
Set setKey)
Validate the set of the inserts. |
protected void |
validateValue(TransactionMap mapTx,
Set setKey)
Validate the set of the read values. |
protected void |
validateVersion(TransactionMap mapTx,
Set setKey)
Validate the set of the updates or deletes. |
Field Detail |
---|
protected Map m_mapVersion
Constructor Detail |
---|
public SimpleValidator()
Method Detail |
---|
public Map getVersionMap()
public void enlist(TransactionMap mapTx, Object oKey)
This method is invoked for all resources that are "used" by the
transaction immediately before the resource value is copied into
the local map. If the resource value implements the Versionable
interface, the corresponding version indicator will be placed into
the version map; otherwise the value's hashCode will be used.
It is this method's responsibility to call a next Validator in the validation chain.
enlist
in interface TransactionMap.Validator
mapTx
- the TransactionMap to enlist the resource withoKey
- the resource key to be enlisted with the transactionpublic void validate(TransactionMap mapTx, Set setInsert, Set setUpdate, Set setDelete, Set setRead, Set setPhantom) throws ConcurrentModificationException
This method is invoked during "prepare" phase after all the resources
involved in this transaction are successfully locked at the base map.
The Validator is expected to retrieve the "old" and "new" values
(using map.get(oKey)
, map.getBaseMap().get(oKey)
)
and use the information gathered during "enlist" calls to make
the determination whether or not commit should be allowed to proceed.
To force a roll back it should throw an exception indicating the reason this transaction cannot be committed. When that happens, the sets are expected to hold just the keys of the "offending" resources.
It is this method's responsibility to call a next Validator in the
validation chain (i.e.
getNextValidator().validate(map, setI, setU, setD, setR, setF);
)
validate
in interface TransactionMap.Validator
mapTx
- the TransactionMap that is being preparedsetInsert
- the set of inserted resourcessetUpdate
- the set of updated resourcessetDelete
- the set of deleted resourcessetRead
- the set of read resources. It is always empty for
TRANSACTION_GET_COMMITTED isolation level.setPhantom
- the set of phantom resources, that is resources that
were added to the base map, but were not known to the
transaction. This set can be not empty only for
TRANSACTION_GET_SERIALIZED isolation level.
ConcurrentModificationException
- if the validator detects
an unresolveable conflict between the resourcespublic TransactionMap.Validator getNextValidator()
getNextValidator
in interface TransactionMap.Validator
public void setNextValidator(TransactionMap.Validator validator)
setNextValidator
in interface TransactionMap.Validator
validator
- the Validator to be addedprotected void validateInsert(TransactionMap mapTx, Set setKey)
If the inserts do not exist in the base map (as they should not), remove them from the specified key set, so only keys corresponding to the conflicting inserts are left in the key set.
mapTx
- the TransactionMapsetKey
- the key set of inserted resources
ConcurrentModificationException
- if conflicts are detectedprotected void validateVersion(TransactionMap mapTx, Set setKey)
If the version of an updated or removed resource matches to the version stored off in the version map at the time when the resource was enlisted, remove it from the specified key set, so only keys corresponding to the conflicting updates, removes or reads are left in the key set.
mapTx
- the TransactionMapsetKey
- the key set of updated or removed resources
ConcurrentModificationException
- if conflicts are detectedprotected void validateValue(TransactionMap mapTx, Set setKey)
If the values that were read during transaction are equal to the values as they exist in the base map, remove them from the specified key set, so only keys corresponding to the conflicting reads are left in the set.
Note: this can occur only for repeatable or serializable isolation level.
mapTx
- the TransactionMapsetKey
- the key set of read resources
ConcurrentModificationException
- if conflicts are detectedprotected Comparable calculateVersion(Object oValue)
If the value implements the Versionable
interface, the
corresponding version indicator is returned; otherwise the value's
hashCode is used.
|
CoherenceTM v3.3 Copyright© 2000-2007 by Oracle Corporation |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |