class ParticipantProxy extends Object implements TransactionParticipant, ReferentUuid, Serializable
TransactionParticipant
calls
to the inner proxy and provides implementations of equals
and hashCode
that do reference equality.Modifier and Type | Field and Description |
---|---|
(package private) static long |
serialVersionUID |
(package private) TransactionParticipant |
space
The remote server this proxy works with.
|
(package private) Uuid |
spaceUuid
The
Uuid that identifies the space this proxy is for. |
ABORTED, ACTIVE, COMMITTED, NOTCHANGED, PREPARED, VOTING
Constructor and Description |
---|
ParticipantProxy(TransactionParticipant space,
Uuid spaceUuid)
Create a new
ParticipantProxy for the given space. |
Modifier and Type | Method and Description |
---|---|
void |
abort(TransactionManager mgr,
long id)
Requests that the participant roll back any changes for the specified
transaction and unlock any resources locked by the transaction.
|
void |
commit(TransactionManager mgr,
long id)
Requests that the participant make all of its
PREPARED
changes for the specified transaction visible outside of the
transaction and unlock any resources locked by the transaction. |
boolean |
equals(Object other) |
Uuid |
getReferentUuid()
Return the
Uuid that has been assigned to the
resource this proxy represents. |
int |
hashCode() |
int |
prepare(TransactionManager mgr,
long id)
Requests that the participant prepare itself to commit the transaction,
and to vote on the outcome of the transaction.
|
int |
prepareAndCommit(TransactionManager mgr,
long id)
A combination of
prepare and commit , which
can be used by the manager when there is just one participant left to
prepare and all other participants (if any) have responded with
NOTCHANGED . |
private void |
readObject(ObjectInputStream in)
Read this object back and validate state.
|
private void |
readObjectNoData()
We should always have data in the stream, if this method
gets called there is something wrong.
|
String |
toString() |
static final long serialVersionUID
final TransactionParticipant space
final Uuid spaceUuid
Uuid
that identifies the space this proxy is for.
Package protected so it can be read by subclasses and proxy verifier.ParticipantProxy(TransactionParticipant space, Uuid spaceUuid)
ParticipantProxy
for the given space.space
- The an inner proxy that implements
TransactionParticipant
for the
space.spaceUuid
- The universally unique ID for the
spaceNullPointerException
- if space
or
spaceUuid
is null
.private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
IOException
ClassNotFoundException
private void readObjectNoData() throws InvalidObjectException
InvalidObjectException
public Uuid getReferentUuid()
ReferentUuid
Uuid
that has been assigned to the
resource this proxy represents.getReferentUuid
in interface ReferentUuid
Uuid
associated with the
resource this proxy represents. Will not
return null
.public int prepare(TransactionManager mgr, long id) throws UnknownTransactionException, RemoteException
TransactionParticipant
PREPARED
, indicating that it is prepared;
ABORT
, indicating that it will abort, or
NOTCHANGED
, indicating that it did not have any state
changed by the transaction (i.e., it was read-only). If the response
is PREPARED
, the participant must wait until it receives
a commit or abort call from the transaction manager; it may query the
transaction manager if needed as to the state of the transaction. If
the response is ABORT
, the participant should roll its
state back to undo any changes that occurred due to operations
performed under the transaction; it can then discard any information
about the transaction. If the response is NOTCHANGED
, the
participant can immediately discard any knowledge of the transaction.prepare
in interface TransactionParticipant
mgr
- the manager of the transactionid
- the transaction IDint
representing this participant's stateUnknownTransactionException
- if the transaction
is unknown to the transaction manager, either
because the transaction ID is incorrect or because the
transaction is complete and its state has been
discarded by the manager.RemoteException
- if there is a communication errorpublic void commit(TransactionManager mgr, long id) throws UnknownTransactionException, RemoteException
TransactionParticipant
PREPARED
changes for the specified transaction visible outside of the
transaction and unlock any resources locked by the transaction.
All state associated with the transaction can then be discarded
by the participant.commit
in interface TransactionParticipant
mgr
- the manager of the transactionid
- the transaction IDUnknownTransactionException
- if the transaction
is unknown to the transaction manager, either
because the transaction ID is incorrect or because the
transaction is complete and its state has been
discarded by the manager.RemoteException
- if there is a communication errorpublic void abort(TransactionManager mgr, long id) throws UnknownTransactionException, RemoteException
TransactionParticipant
abort
in interface TransactionParticipant
mgr
- the manager of the transactionid
- the transaction IDUnknownTransactionException
- if the transaction
is unknown to the transaction manager, either
because the transaction ID is incorrect or because the
transaction is complete and its state has been
discarded by the manager.RemoteException
- if there is a communication errorpublic int prepareAndCommit(TransactionManager mgr, long id) throws UnknownTransactionException, RemoteException
TransactionParticipant
prepare
and commit
, which
can be used by the manager when there is just one participant left to
prepare and all other participants (if any) have responded with
NOTCHANGED
. The participant's implementation of this
method must be equivalent to:
public int prepareAndCommit(TransactionManager mgr, long id) throws UnknownTransactionException, RemoteException { int result = prepare(mgr, id); if (result == PREPARED) { commit(mgr, id); result = COMMITTED; } return result; }
prepareAndCommit
in interface TransactionParticipant
mgr
- the manager of the transactionid
- the transaction IDint
representing its stateUnknownTransactionException
- if the transaction
is unknown to the transaction manager, either
because the transaction ID is incorrect or because the
transaction is complete and its state has been
discarded by the manager.RemoteException
- if there is a communication errorTransactionParticipant.prepare(net.jini.core.transaction.server.TransactionManager, long)
,
TransactionParticipant.commit(net.jini.core.transaction.server.TransactionManager, long)
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.