package org.infinispan.transaction.impl; import org.infinispan.transaction.xa.CacheTransaction; /** * Base class for both Sync and XAResource enlistment adapters. * * @author Mircea Markus * @since 5.1 */ public abstract class AbstractEnlistmentAdapter { private final int hashCode; public AbstractEnlistmentAdapter(CacheTransaction cacheTransaction) { hashCode = preComputeHashCode(cacheTransaction); } public AbstractEnlistmentAdapter() { hashCode = 31; } /** * Invoked by TransactionManagers, make sure it's an efficient implementation. * System.identityHashCode(x) is NOT an efficient implementation. */ @Override public final int hashCode() { return this.hashCode; } private static int preComputeHashCode(final CacheTransaction cacheTx) { return 31 + cacheTx.hashCode(); } }