/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.util.queue.objectstore.xa;
import org.mule.runtime.core.util.UUID;
import org.mule.runtime.core.util.xa.ResourceManagerException;
import javax.transaction.Status;
/**
* @deprecated this class will be removed in Mule 4.0 in favor of the new queue implementation
*/
@Deprecated
public abstract class AbstractTransactionContext {
protected String id = UUID.getUUID();
protected long timeout;
protected int status;
protected boolean readOnly;
protected boolean suspended;
protected boolean finished;
public AbstractTransactionContext() {
status = Status.STATUS_NO_TRANSACTION;
suspended = false;
finished = false;
readOnly = true;
}
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(id).append("[");
sb.append(getStatusString());
if (suspended) {
sb.append(", suspended");
}
if (readOnly) {
sb.append(", readonly");
}
if (finished) {
sb.append(", finished");
}
sb.append("]");
return sb.toString();
}
private String getStatusString() {
switch (status) {
case Status.STATUS_ACTIVE:
return "active";
case Status.STATUS_MARKED_ROLLBACK:
return "marked rollback";
case Status.STATUS_PREPARED:
return "prepared";
case Status.STATUS_COMMITTED:
return "committed";
case Status.STATUS_ROLLEDBACK:
return "rolled back";
case Status.STATUS_UNKNOWN:
return "unknown";
case Status.STATUS_NO_TRANSACTION:
return "no transaction";
case Status.STATUS_PREPARING:
return "preparing";
case Status.STATUS_COMMITTING:
return "committing";
case Status.STATUS_ROLLING_BACK:
return "rolling back";
default:
return "undefined status";
}
}
public synchronized void finalCleanUp() throws ResourceManagerException {
// nothing to do (yet?)
}
public synchronized void notifyFinish() {
finished = true;
notifyAll();
}
public abstract void doCommit() throws ResourceManagerException;
public abstract void doRollback() throws ResourceManagerException;
}