This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit bfca47b42167f8ca9e794a2dde44063990d6a9cb Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Mon Dec 2 14:09:22 2019 +0700 [REFACTORING] Remove temporal coupling in JPASubscriptionMapper --- .../mailbox/jpa/user/JPASubscriptionMapper.java | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/user/JPASubscriptionMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/user/JPASubscriptionMapper.java index 157f263..3a64c45 100644 --- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/user/JPASubscriptionMapper.java +++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/user/JPASubscriptionMapper.java @@ -26,6 +26,7 @@ import java.util.Optional; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; +import javax.persistence.EntityTransaction; import javax.persistence.NoResultException; import javax.persistence.PersistenceException; @@ -50,11 +51,24 @@ public class JPASubscriptionMapper extends JPATransactionalMapper implements Sub @Override public void save(Subscription subscription) throws SubscriptionException { EntityManager entityManager = getEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + boolean localTransaction = !transaction.isActive(); + if (localTransaction) { + transaction.begin(); + } try { if (!exists(entityManager, subscription)) { entityManager.persist(new JPASubscription(subscription)); } + if (localTransaction) { + if (transaction.isActive()) { + transaction.commit(); + } + } } catch (PersistenceException e) { + if (transaction.isActive()) { + transaction.rollback(); + } throw new SubscriptionException(e); } } @@ -76,10 +90,23 @@ public class JPASubscriptionMapper extends JPATransactionalMapper implements Sub @Override public void delete(Subscription subscription) throws SubscriptionException { EntityManager entityManager = getEntityManager(); + EntityTransaction transaction = entityManager.getTransaction(); + boolean localTransaction = !transaction.isActive(); + if (localTransaction) { + transaction.begin(); + } try { findJpaSubscription(entityManager, subscription) .ifPresent(entityManager::remove); + if (localTransaction) { + if (transaction.isActive()) { + transaction.commit(); + } + } } catch (PersistenceException e) { + if (transaction.isActive()) { + transaction.rollback(); + } throw new SubscriptionException(e); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org