This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 106e9af7197e6ef41ab1990b3497a8e52808e327 Author: Gautier DI FOLCO <gdifo...@linagora.com> AuthorDate: Tue May 12 14:05:05 2020 +0200 JAMES-3179 Use a Consumer instead of a Function in TransactionRunner --- .../apache/james/backends/jpa/TransactionRunner.java | 6 +++--- .../apache/james/sieve/jpa/JPASieveRepository.java | 19 +++++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backends-common/jpa/src/main/java/org/apache/james/backends/jpa/TransactionRunner.java b/backends-common/jpa/src/main/java/org/apache/james/backends/jpa/TransactionRunner.java index e3575a1..d75473a 100644 --- a/backends-common/jpa/src/main/java/org/apache/james/backends/jpa/TransactionRunner.java +++ b/backends-common/jpa/src/main/java/org/apache/james/backends/jpa/TransactionRunner.java @@ -76,8 +76,8 @@ public class TransactionRunner { } } - public <T> void runAndHandleException(Consumer<EntityManager> runnable, - Function<PersistenceException, T> errorHandler) { + public void runAndHandleException(Consumer<EntityManager> runnable, + Consumer<PersistenceException> errorHandler) { EntityManager entityManager = entityManagerFactory.createEntityManager(); EntityTransaction transaction = entityManager.getTransaction(); try { @@ -89,7 +89,7 @@ public class TransactionRunner { if (transaction.isActive()) { transaction.rollback(); } - errorHandler.apply(e); + errorHandler.accept(e); } finally { EntityManagerUtils.safelyClose(entityManager); } diff --git a/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java b/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java index c82213b..adf74d2 100644 --- a/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java +++ b/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java @@ -24,6 +24,7 @@ import java.nio.charset.StandardCharsets; import java.time.ZonedDateTime; import java.util.List; import java.util.Optional; +import java.util.function.Consumer; import java.util.function.Function; import javax.inject.Inject; @@ -109,7 +110,7 @@ public class JPASieveRepository implements SieveRepository { rollbackTransactionIfActive(entityManager.getTransaction()); throw e; } - }).sneakyThrow(), throwStorageException("Unable to put script for user " + username.asString())); + }).sneakyThrow(), throwStorageExceptionConsumer("Unable to put script for user " + username.asString())); } @Override @@ -171,7 +172,7 @@ public class JPASieveRepository implements SieveRepository { rollbackTransactionIfActive(entityManager.getTransaction()); throw e; } - }).sneakyThrow(), throwStorageException("Unable to set active script " + name.getValue() + " for user " + username.asString())); + }).sneakyThrow(), throwStorageExceptionConsumer("Unable to set active script " + name.getValue() + " for user " + username.asString())); } private void switchOffActiveScript(Username username, EntityManager entityManager) throws StorageException { @@ -224,7 +225,7 @@ public class JPASieveRepository implements SieveRepository { throw new IsActiveException("Unable to delete active script " + name.getValue() + " for user " + username.asString()); } entityManager.remove(sieveScriptToRemove); - }).sneakyThrow(), throwStorageException("Unable to delete script " + name.getValue() + " for user " + username.asString())); + }).sneakyThrow(), throwStorageExceptionConsumer("Unable to delete script " + name.getValue() + " for user " + username.asString())); } @Override @@ -244,7 +245,7 @@ public class JPASieveRepository implements SieveRepository { JPASieveScript sieveScriptToRename = sieveScript.get(); sieveScriptToRename.renameTo(newName); - }).sneakyThrow(), throwStorageException("Unable to rename script " + oldName.getValue() + " for user " + username.asString())); + }).sneakyThrow(), throwStorageExceptionConsumer("Unable to rename script " + oldName.getValue() + " for user " + username.asString())); } private void rollbackTransactionIfActive(EntityTransaction transaction) { @@ -310,6 +311,12 @@ public class JPASieveRepository implements SieveRepository { }).sneakyThrow(); } + private Consumer<PersistenceException> throwStorageExceptionConsumer(String message) { + return Throwing.<PersistenceException>consumer(e -> { + throw new StorageException(message, e); + }).sneakyThrow(); + } + private Optional<JPASieveQuota> findQuotaForUser(String username, EntityManager entityManager) { try { JPASieveQuota sieveQuota = entityManager.createNamedQuery("findByUsername", JPASieveQuota.class) @@ -331,13 +338,13 @@ public class JPASieveRepository implements SieveRepository { JPASieveQuota jpaSieveQuota = new JPASieveQuota(username, quota.asLong()); entityManager.persist(jpaSieveQuota); } - }), throwStorageException("Unable to set quota for user " + username)); + }), throwStorageExceptionConsumer("Unable to set quota for user " + username)); } private void removeQuotaForUser(String username) throws StorageException { transactionRunner.runAndHandleException(Throwing.consumer(entityManager -> { Optional<JPASieveQuota> quotaForUser = findQuotaForUser(username, entityManager); quotaForUser.ifPresent(entityManager::remove); - }), throwStorageException("Unable to remove quota for user " + username)); + }), throwStorageExceptionConsumer("Unable to remove quota for user " + username)); } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org