package pt.ist.fenixframework.hibernatesearch; import javax.transaction.Status; import javax.transaction.Synchronization; import javax.transaction.SystemException; import org.hibernate.search.backend.TransactionContext; import pt.ist.fenixframework.Transaction; public class HibernateSearchTransactionContext implements TransactionContext { private final Transaction transaction; HibernateSearchTransactionContext(Transaction transaction) { this.transaction = transaction; } // TransactionContext implementation @Override public Object getTransactionIdentifier() { return this; } @Override public boolean isTransactionInProgress() { try { return transaction.getStatus() == Status.STATUS_ACTIVE; } catch (SystemException e) { throw new RuntimeException(e); } } @Override public void registerSynchronization(Synchronization synchronization) { try { transaction.registerSynchronization(synchronization); } catch (Exception e) { throw new RuntimeException(e); } } }