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