From 4f3c3d467377c00a1704647e27ad3af7cb98cebb Mon Sep 17 00:00:00 2001 From: Joern Muehlencord Date: Sat, 27 Apr 2019 14:07:31 +0100 Subject: [PATCH] fixed tx join interceptor handling --- .../account/business/ControllerException.java | 3 ++ .../AccountTransactionJoinInterceptor.java | 37 ++++++------------- ...ApplicationTransactionJoinInterceptor.java | 27 ++++---------- 3 files changed, 21 insertions(+), 46 deletions(-) diff --git a/account/src/main/java/de/muehlencord/shared/account/business/ControllerException.java b/account/src/main/java/de/muehlencord/shared/account/business/ControllerException.java index 4e6bdd6..efcaf40 100644 --- a/account/src/main/java/de/muehlencord/shared/account/business/ControllerException.java +++ b/account/src/main/java/de/muehlencord/shared/account/business/ControllerException.java @@ -15,10 +15,13 @@ */ package de.muehlencord.shared.account.business; +import javax.ejb.ApplicationException; + /** * * @author joern.muehlencord */ +@ApplicationException(rollback=true) public class ControllerException extends Exception { private static final long serialVersionUID = 5190280225284514859L; diff --git a/account/src/main/java/de/muehlencord/shared/account/util/AccountTransactionJoinInterceptor.java b/account/src/main/java/de/muehlencord/shared/account/util/AccountTransactionJoinInterceptor.java index 4e102f5..fde601a 100644 --- a/account/src/main/java/de/muehlencord/shared/account/util/AccountTransactionJoinInterceptor.java +++ b/account/src/main/java/de/muehlencord/shared/account/util/AccountTransactionJoinInterceptor.java @@ -15,7 +15,6 @@ */ package de.muehlencord.shared.account.util; -import de.muehlencord.shared.account.business.ControllerException; import javax.annotation.Priority; import javax.inject.Inject; import javax.interceptor.AroundInvoke; @@ -27,50 +26,36 @@ import static javax.transaction.Transactional.TxType.REQUIRED; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - /** * * @author Joern Muehlencord */ @Transactional(value = REQUIRED) @Interceptor -@Priority(value=AccountTransactionJoinInterceptor.PRIORITY) +@Priority(value = AccountTransactionJoinInterceptor.PRIORITY) public class AccountTransactionJoinInterceptor { - + private static final Logger LOGGER = LoggerFactory.getLogger(AccountTransactionJoinInterceptor.class); // attach behind the interceptor of the container - public static final int PRIORITY = Interceptor.Priority.PLATFORM_BEFORE+250; + public static final int PRIORITY = Interceptor.Priority.PLATFORM_BEFORE + 250; @Inject @AccountPU private EntityManager em; - - + @AroundInvoke public Object joinTransaction(InvocationContext context) throws Exception { - try { - if (em == null) { - return context.proceed(); - } else { - if (em.isJoinedToTransaction()) { - LOGGER.trace("transaction already joined"); - } else { - LOGGER.trace("joining transaction"); - em.joinTransaction(); - } - } + if (em == null) { return context.proceed(); - } catch (ControllerException ex) { + } else { if (em.isJoinedToTransaction()) { - em.getTransaction().rollback(); - if (LOGGER.isTraceEnabled()) { - LOGGER.trace("Transaction rolled back"); - } + LOGGER.trace("transaction already joined"); + } else { + LOGGER.trace("joining transaction"); + em.joinTransaction(); } - throw ex; - } catch (Exception ex) { - throw ex; } + return context.proceed(); } } diff --git a/account/src/main/java/de/muehlencord/shared/account/util/ApplicationTransactionJoinInterceptor.java b/account/src/main/java/de/muehlencord/shared/account/util/ApplicationTransactionJoinInterceptor.java index 777181f..e958ee5 100644 --- a/account/src/main/java/de/muehlencord/shared/account/util/ApplicationTransactionJoinInterceptor.java +++ b/account/src/main/java/de/muehlencord/shared/account/util/ApplicationTransactionJoinInterceptor.java @@ -1,6 +1,5 @@ package de.muehlencord.shared.account.util; -import de.muehlencord.shared.account.business.ControllerException; import javax.annotation.Priority; import javax.inject.Inject; import javax.interceptor.AroundInvoke; @@ -32,28 +31,16 @@ public class ApplicationTransactionJoinInterceptor { @AroundInvoke public Object joinTransaction(InvocationContext context) throws Exception { - try { - if (em == null) { - return context.proceed(); - } else { - if (em.isJoinedToTransaction()) { - LOGGER.trace("transaction already joined"); - } else { - LOGGER.trace("joining transaction"); - em.joinTransaction(); - } - } + if (em == null) { return context.proceed(); - } catch (ControllerException ex) { + } else { if (em.isJoinedToTransaction()) { - em.getTransaction().rollback(); - if (LOGGER.isTraceEnabled()) { - LOGGER.trace("Transaction rolled back"); - } + LOGGER.trace("transaction already joined"); + } else { + LOGGER.trace("joining transaction"); + em.joinTransaction(); } - throw ex; - } catch (Exception ex) { - throw ex; } + return context.proceed(); } }