State Transitions

method \ current state

Transient

P-new

P-clean

P-dirty

Hollow

makePersistent

P-new

unchanged

unchanged

unchanged

unchanged

deletePersistent

error

P-new-del

P-del

P-del

P-del

makeTransactional

T-clean

unchanged

unchanged

unchanged

P-clean

makeNontransactional

error

error

P-nontrans

error

unchanged

makeTransient

unchanged

error

Transient

error

Transient

commit

retainValues=false

unchanged

Hollow

Hollow

Hollow

unchanged

commit

retainValues=true

unchanged

P-nontrans

P-nontrans

P-nontrans

unchanged

commit

DetachAllOnCommit true

unchanged

detached-clean

detached-clean

detached-clean

detached-clean

rollback

restoreValues=false

unchanged

Transient

Hollow

Hollow

unchanged

rollback

restoreValues=true

unchanged

Transient

P-nontrans

P-nontrans

unchanged

refresh with active Datastore transaction

unchanged

unchanged

unchanged

P-clean

unchanged

refresh with active Optimistic transaction

unchanged

unchanged

unchanged

P-nontrans

unchanged

evict

n/a

unchanged

Hollow

unchanged

unchanged

read field outside transaction

unchanged

impossible

impossible

impossible

P-nontrans

read field with active Optimistic transaction

unchanged

unchanged

unchanged

unchanged

P-nontrans

read field with active Datastore transaction

unchanged

unchanged

unchanged

unchanged

P-clean

write field or makeDirty outside transaction

unchanged

impossible

impossible

impossible

P-nontrans

write field or makeDirty with active transaction

unchanged

unchanged

P-dirty

unchanged

P-dirty

retrieve outside or with active Optimistic transaction

unchanged

unchanged

unchanged

unchanged

P-nontrans

retrieve with active Datastore transaction

unchanged

unchanged

unchanged

unchanged

P-clean

detachCopy outside transaction with NontransactionalRead true

error

impossible

impossible

impossible

parameter: P-nontrans

returned: detached-clean

detachCopy outside transaction with NontransactionalRead false

error

impossible

impossible

impossible

error

detachCopy with active Optimistic transaction

parameter: P-new

returned:

detached-clean

parameter: unchanged

returned:

detached-clean

parameter: unchanged

returned:

detached-clean

parameter: unchanged

returned:

detached-clean

parameter: P-nontrans

returned:

detached-clean

detachCopy with active Datastore transaction

parameter: P-new

returned:

detached-clean

parameter: unchanged

returned:

detached-clean

parameter: unchanged

returned:

detached-clean

parameter: unchanged

returned:

detached-clean

parameter: P-clean

returned:

detached-clean

method \ current state

T-clean

T-dirty

P-new-del

P-del

P-nontrans

makePersistent

P-new

P-new

unchanged

unchanged

unchanged

deletePersistent

error

error

unchanged

unchanged

P-del

makeTransactional

unchanged

unchanged

unchanged

unchanged

P-clean

makeNontransactional

Transient

error

error

error

unchanged

makeTransient

unchanged

unchanged

error

error

Transient

commit

retainValues=false

unchanged

T-clean

Transient

Transient

unchanged

commit

retainValues=true

unchanged

T-clean

Transient

Transient

unchanged

commit transaction with DetachAllOnCommit true

unchanged

T-clean

Transient

Transient

detached-clean

rollback

restoreValues=false

unchanged

T-clean

Transient

Hollow

unchanged

rollback

restoreValues=true

unchanged

T-clean

Transient

P-nontrans

unchanged

refresh

unchanged

unchanged

unchanged

unchanged

unchanged

evict

unchanged

unchanged

unchanged

unchanged

Hollow

read field outside transaction

unchanged

impossible

impossible

impossible

unchanged

read field with Optimistic transaction

unchanged

unchanged

error

error

unchanged

read field with active Datastore transaction

unchanged

unchanged

error

error

P-clean

write field or makeDirty outside transaction

unchanged

impossible

impossible

impossible

unchanged

write field or makeDirty with active transaction

T-dirty

 

unchanged

error

error

P-dirty

retrieve outside or with active Optimistic transaction

unchanged

unchanged

unchanged

unchanged

unchanged

retrieve with active Datastore transaction

unchanged

unchanged

unchanged

unchanged

P-clean

detachCopy outside transaction with NontransactionalRead true

error

impossible

impossible

impossible

parameter: unchanged

returned: detached-clean

detachCopy outside transaction with NontransactionalRead false

error

impossible

impossible

impossible

error

detachCopy with active optimistic transaction

parameter: P-new

returned:

detached-clean

parameter: P-new

returned:

detached-clean

error

error

parameter: unchanged

returned:

detached-clean

detachCopy with active datastore transaction

parameter: P-new

returned:

detached-clean

parameter: P-new

returned:

detached-clean

error

error

parameter: P-clean

returned:

detached-clean

 

method \ current state

P-nontrans-dirty

detached-clean

detached-dirty

makePersistent

unchanged

parameter: unchanged

returned:

P-clean

parameter: unchanged

returned:

P-dirty

deletePersistent

error

unchanged

unchanged

makeTransactional

unchanged

error

error

makeNontransactional

error

error

error

makeTransient

error

error

error

commit with

retainValues=false

hollow

unchanged

unchanged

commit with

retainValues=true

P-nontrans

unchanged

unchanged

rollback

unchanged

unchanged

unchanged

refresh

unchanged

error

error

evict

hollow

error

error

read field

unchanged

unchanged

unchanged

write field or makeDirty

unchanged

detached-dirty

unchanged

retrieve

unchanged

error

error

commit transaction with DetachAllOnCommit true

detached

unchanged

unchanged

detachCopy outside transaction with NontransactionalRead true

unspecified

parameter: unchanged

returned: detached-clean

unspecified

detachCopy outside transaction with NontransactionalRead false

error

error

error

detachCopy with active transaction

impossible

parameter: unchanged

returned: detached-clean

parameter: unchanged

returned: detached-clean