VisibilityLevel.VIS_PROTECTED, FacilityCode.FAC_STATE_MAN,
"StateManager::modified() for object-id " + get_uid());
}
BasicAction action = BasicAction.Current();
RecoveryRecord record = null;
if ((myType == ObjectType.NEITHER)
|| (currentStatus == ObjectStatus.DESTROYED)) /*
* NEITHER => no
* recovery info
*/
{
return true;
}
if (currentStatus == ObjectStatus.PASSIVE)
{
if (tsLogger.arjLoggerI18N.isWarnEnabled())
tsLogger.arjLoggerI18N
.warn("com.arjuna.ats.arjuna.StateManager_10");
activate();
}
/*
* Need not have gone through active if new object.
*/
if (currentStatus == ObjectStatus.PASSIVE_NEW)
currentStatus = ObjectStatus.ACTIVE_NEW;
if (action != null)
{
/*
* Check if this is the first call to modified in this action.
* BasicList insert returns FALSE if the entry is already present.
*/
synchronized (modifyingActions)
{
if ((modifyingActions.size() > 0)
&& (modifyingActions.get(action.get_uid()) != null))
{
return true;
}
else
modifyingActions.put(action.get_uid(), action);
}
/* If here then its a new action */
OutputObjectState state = new OutputObjectState(objectUid, type());
int rStatus = AddOutcome.AR_ADDED;
if (save_state(state, ObjectType.RECOVERABLE))
{
if ((myType == ObjectType.RECOVERABLE)
&& (objectModel == ObjectModel.SINGLE))
{
record = new RecoveryRecord(state, this);
}
else
record = new PersistenceRecord(state, objectStore, this);
if ((rStatus = action.add(record)) != AddOutcome.AR_ADDED)