
com.arjuna.ats.jta.cdi.TransactionScopeCleanup Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of narayana-jta Show documentation
Show all versions of narayana-jta Show documentation
Narayana: ArjunaJTA narayana-jta (jta uber jar)
package com.arjuna.ats.jta.cdi;
import com.arjuna.ats.jta.logging.jtaLogger;
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
import javax.transaction.RollbackException;
import javax.transaction.Synchronization;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArraySet;
public class TransactionScopeCleanup implements Synchronization {
private Set beans;
private TransactionContext context;
private Transaction transaction;
public TransactionScopeCleanup(TransactionContext context, Transaction transaction) {
this.context = context;
this.transaction = transaction;
this.beans = new CopyOnWriteArraySet();
try {
transaction.registerSynchronization(this);
} catch (RollbackException e) {
throw new RuntimeException(jtaLogger.i18NLogger.get_transaction_arjunacore_syncwhenaborted());
} catch (SystemException e) {
throw new RuntimeException(jtaLogger.i18NLogger.get_transaction_arjunacore_nullparam());
}
}
public void registerBean(Contextual contextual, CreationalContext creationalContext, T bean) {
beans.add(new TransactionScopedBean(contextual, creationalContext, bean));
}
@Override
public void beforeCompletion() {
}
@Override
public void afterCompletion(int i) {
for (TransactionScopedBean bean : beans)
bean.destroy();
context.cleanupScope(transaction);
}
private class TransactionScopedBean {
Contextual contextual;
CreationalContext creationalContext;
T bean;
private TransactionScopedBean(Contextual contextual, CreationalContext creationalContext, T bean) {
this.contextual = contextual;
this.creationalContext = creationalContext;
this.bean = bean;
}
public void destroy() {
contextual.destroy(bean, creationalContext);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy