You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2020/06/08 13:15:55 UTC
[james-project] 01/30: JAMES-3179 Use a Consumer instead of a
Function in TransactionRunner
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 <gd...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org