package org.infinispan.transaction.synchronization;
import javax.transaction.Synchronization;
import org.infinispan.transaction.impl.AbstractEnlistmentAdapter;
import org.infinispan.transaction.impl.LocalTransaction;
import org.infinispan.transaction.impl.TransactionTable;
/**
* {@link Synchronization} implementation for integrating with the TM.
* See <a href="https://issues.jboss.org/browse/ISPN-888">ISPN-888</a> for more information on this.
*
* @author Mircea.Markus@jboss.com
* @since 5.0
*/
public class SynchronizationAdapter extends AbstractEnlistmentAdapter implements Synchronization {
private final LocalTransaction localTransaction;
private final TransactionTable txTable;
public SynchronizationAdapter(LocalTransaction localTransaction, TransactionTable txTable) {
super(localTransaction);
this.localTransaction = localTransaction;
this.txTable = txTable;
}
@Override
public void beforeCompletion() {
txTable.beforeCompletion(localTransaction);
}
@Override
public void afterCompletion(int status) {
txTable.afterCompletion(localTransaction, status);
}
@Override
public String toString() {
return "SynchronizationAdapter{" +
"localTransaction=" + localTransaction +
"} " + super.toString();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SynchronizationAdapter that = (SynchronizationAdapter) o;
if (localTransaction != null ? !localTransaction.equals(that.localTransaction) : that.localTransaction != null)
return false;
return true;
}
}