You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2020/12/11 10:44:12 UTC

[james-project] 08/15: [REFACTORING] Use default methods in Mapper interface

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 81b8cc9114a440bc5ade47669f8ca69e5a63b48c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Sun Dec 6 21:35:47 2020 +0700

    [REFACTORING] Use default methods in Mapper interface
    
    Add a reactive transaction handling in the API
---
 .../mailbox/cassandra/mail/CassandraAnnotationMapper.java |  4 ----
 .../mailbox/cassandra/mail/CassandraAttachmentMapper.java |  9 ---------
 .../mailbox/cassandra/mail/CassandraMailboxMapper.java    | 11 -----------
 .../mailbox/cassandra/mail/CassandraMessageMapper.java    | 10 ----------
 .../cassandra/user/CassandraSubscriptionMapper.java       |  6 ------
 .../mailbox/jpa/mail/TransactionalAnnotationMapper.java   | 11 -----------
 .../mailbox/jpa/mail/TransactionalMailboxMapper.java      | 11 -----------
 .../mailbox/jpa/mail/TransactionalMessageMapper.java      | 11 -----------
 .../james/mailbox/maildir/mail/MaildirMailboxMapper.java  |  5 -----
 .../james/mailbox/maildir/mail/MaildirMessageMapper.java  |  6 ------
 .../mailbox/maildir/user/MaildirSubscriptionMapper.java   |  6 ------
 .../mailbox/inmemory/mail/InMemoryAnnotationMapper.java   | 11 -----------
 .../mailbox/inmemory/mail/InMemoryAttachmentMapper.java   | 10 ----------
 .../mailbox/inmemory/mail/InMemoryMailboxMapper.java      | 11 -----------
 .../mailbox/inmemory/mail/InMemoryMessageMapper.java      |  5 -----
 .../mailbox/inmemory/mail/InMemoryModSeqProvider.java     |  1 -
 .../mailbox/inmemory/user/InMemorySubscriptionMapper.java |  6 ------
 .../apache/james/mailbox/store/transaction/Mapper.java    | 14 ++++++++++++--
 .../mailbox/store/transaction/NonTransactionalMapper.java |  7 -------
 .../mailbox/store/transaction/TransactionalMapper.java    |  2 +-
 .../store/StoreMailboxMessageResultIteratorTest.java      | 15 +--------------
 21 files changed, 14 insertions(+), 158 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
index 7a96dd7..c9c0ee7 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
@@ -170,8 +170,4 @@ public class CassandraAnnotationMapper extends NonTransactionalMapper implements
             .map(this::toAnnotation)
             .filter(annotation -> key.isParentOrIsEqual(annotation.getKey()));
     }
-
-    @Override
-    public void endRequest() {
-    }
 }
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
index bc2cb99..ce98ec0 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
@@ -69,15 +69,6 @@ public class CassandraAttachmentMapper implements AttachmentMapper {
     }
 
     @Override
-    public void endRequest() {
-    }
-
-    @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
-    @Override
     public AttachmentMetadata getAttachment(AttachmentId attachmentId) throws AttachmentNotFoundException {
         Preconditions.checkArgument(attachmentId != null);
         return getAttachmentInternal(attachmentId)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index 6032ef1..f4dbd1d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -32,7 +32,6 @@ import org.apache.james.core.Username;
 import org.apache.james.mailbox.acl.ACLDiff;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.task.SolveMailboxInconsistenciesService;
-import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.Mailbox;
@@ -329,11 +328,6 @@ public class CassandraMailboxMapper implements MailboxMapper {
     }
 
     @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
-    @Override
     public Mono<ACLDiff> updateACL(Mailbox mailbox, MailboxACL.ACLCommand mailboxACLCommand) {
         CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
         return cassandraACLMapper.updateACL(cassandraId, mailboxACLCommand);
@@ -345,11 +339,6 @@ public class CassandraMailboxMapper implements MailboxMapper {
         return cassandraACLMapper.setACL(cassandraId, mailboxACL);
     }
 
-    @Override
-    public void endRequest() {
-        // Do nothing
-    }
-
     private Mono<Mailbox> toMailboxWithAcl(Mailbox mailbox) {
         CassandraId cassandraId = (CassandraId) mailbox.getMailboxId();
         return retrieveAcl(cassandraId)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index 1c9c587..ffc0f36 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -294,11 +294,6 @@ public class CassandraMessageMapper implements MessageMapper {
     }
 
     @Override
-    public void endRequest() {
-        // Do nothing
-    }
-
-    @Override
     public ModSeq getHighestModSeq(Mailbox mailbox) throws MailboxException {
         return modSeqProvider.highestModSeq(mailbox);
     }
@@ -417,11 +412,6 @@ public class CassandraMessageMapper implements MessageMapper {
     }
 
     @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
-    @Override
     public MessageMetaData copy(Mailbox mailbox, MailboxMessage original) throws MailboxException {
         original.setFlags(new FlagsBuilder().add(original.createFlags()).add(Flag.RECENT).build());
         return setInMailbox(mailbox, original);
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
index df22d6c..800f000 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapper.java
@@ -80,10 +80,4 @@ public class CassandraSubscriptionMapper extends NonTransactionalMapper implemen
             .map((row) -> new Subscription(Username.of(row.getString(USER)), row.getString(MAILBOX)))
             .collect(Collectors.toList());
     }
-
-    @Override
-    public void endRequest() {
-        // nothing to do
-    }
-
 }
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalAnnotationMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalAnnotationMapper.java
index 4cb9930..7a0ff31 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalAnnotationMapper.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalAnnotationMapper.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.jpa.mail;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
@@ -38,16 +37,6 @@ public class TransactionalAnnotationMapper implements AnnotationMapper {
     }
 
     @Override
-    public void endRequest() {
-        throw new NotImplementedException("not implemented");
-    }
-
-    @Override
-    public <T> T execute(Transaction<T> transaction) {
-        throw new NotImplementedException("not implemented");
-    }
-
-    @Override
     public List<MailboxAnnotation> getAllAnnotations(MailboxId mailboxId) {
         return wrapped.getAllAnnotations(mailboxId);
     }
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
index 5b6f9b8..d3ebc16 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.jpa.mail;
 
-import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.acl.ACLDiff;
 import org.apache.james.mailbox.model.Mailbox;
@@ -42,16 +41,6 @@ public class TransactionalMailboxMapper implements MailboxMapper {
     }
 
     @Override
-    public void endRequest() {
-        throw new NotImplementedException("not implemented");
-    }
-
-    @Override
-    public <T> T execute(Transaction<T> transaction) {
-        throw new NotImplementedException("not implemented");
-    }
-
-    @Override
     public Mono<Mailbox> create(MailboxPath mailboxPath, UidValidity uidValidity) {
         return wrapped.executeReactive(wrapped.create(mailboxPath, uidValidity));
     }
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
index 1e7d09b..ad7e9e5 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
@@ -26,7 +26,6 @@ import java.util.Optional;
 
 import javax.mail.Flags;
 
-import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.ModSeq;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -48,11 +47,6 @@ public class TransactionalMessageMapper implements MessageMapper {
     public TransactionalMessageMapper(JPAMessageMapper messageMapper) {
         this.messageMapper = messageMapper;
     }
-    
-    @Override
-    public void endRequest() {
-        throw new NotImplementedException("not implemented");
-    }
 
     @Override
     public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException {
@@ -69,11 +63,6 @@ public class TransactionalMessageMapper implements MessageMapper {
     }
 
     @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        throw new NotImplementedException("not implemented");
-    }
-
-    @Override
     public Iterator<MailboxMessage> findInMailbox(Mailbox mailbox, MessageRange set, FetchType type, int limit)
             throws MailboxException {
         return messageMapper.findInMailbox(mailbox, set, type, limit);
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
index 9e02cf0..edadc5c 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
@@ -280,11 +280,6 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail
                .flatMapIterable(mailboxes -> mailboxes.collect(Guavate.toImmutableList()));
     }
 
-    @Override
-    public void endRequest() {
-
-    }
-
     private List<Mailbox> visitUsersForMailboxList(File domain, File[] users) throws MailboxException {
         ImmutableList.Builder<Mailbox> mailboxList = ImmutableList.builder();
 
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
index 30ca42f..e670055 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
@@ -341,12 +341,6 @@ public class MaildirMessageMapper extends AbstractMessageMapper {
             .computeApplicableFlags();
     }
 
-    @Override
-    public void endRequest() {
-        // not used
-
-    }
-
     private List<MailboxMessage> findMessageInMailboxWithUID(Mailbox mailbox, MessageUid from)
             throws MailboxException {
         MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
index c36096a..e278eef 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
@@ -91,12 +91,6 @@ public class MaildirSubscriptionMapper extends NonTransactionalMapper implements
             }
         }
     }
-
-    @Override
-    public void endRequest() {
-        // nothing to do
-    }
-    
     
     /**
      * Read the subscriptions for a particular user
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java
index c4001c8..49ffa77 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java
@@ -26,7 +26,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.function.Predicate;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
@@ -46,16 +45,6 @@ public class InMemoryAnnotationMapper implements AnnotationMapper {
         mailboxesAnnotations = HashBasedTable.create();
     }
 
-    @Override
-    public void endRequest() {
-
-    }
-
-    @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
     private List<MailboxAnnotation> retrieveAllAnnotations(InMemoryId mailboxId) {
         lock.readLock().lock();
         try {
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java
index c5237b9..80e0e83 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAttachmentMapper.java
@@ -111,16 +111,6 @@ public class InMemoryAttachmentMapper implements AttachmentMapper {
     }
 
     @Override
-    public void endRequest() {
-        // Do nothing
-    }
-
-    @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
-    @Override
     public List<MessageAttachmentMetadata> storeAttachmentsForMessage(Collection<ParsedAttachment> parsedAttachments, MessageId ownerMessageId) throws MailboxException {
         return parsedAttachments.stream()
             .map(Throwing.<ParsedAttachment, MessageAttachmentMetadata>function(
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
index 0f76a8f..6bc7180 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
@@ -25,7 +25,6 @@ import java.util.function.Function;
 
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.acl.ACLDiff;
-import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxExistsException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
@@ -114,11 +113,6 @@ public class InMemoryMailboxMapper implements MailboxMapper {
     }
 
     @Override
-    public void endRequest() {
-        // Do nothing
-    }
-
-    @Override
     public Mono<Boolean> hasChildren(Mailbox mailbox, char delimiter) {
         String mailboxName = mailbox.getName() + delimiter;
         return Mono.fromCallable(mailboxesByPath::values)
@@ -139,11 +133,6 @@ public class InMemoryMailboxMapper implements MailboxMapper {
     }
 
     @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
-    @Override
     public Mono<ACLDiff> updateACL(Mailbox mailbox, MailboxACL.ACLCommand mailboxACLCommand) {
         return Mono.fromCallable(() -> {
             MailboxACL oldACL = mailbox.getACL();
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
index df9b8b2..56760f2 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
@@ -181,11 +181,6 @@ public class InMemoryMessageMapper extends AbstractMessageMapper {
     }
 
     @Override
-    public void endRequest() {
-        // Do nothing
-    }
-
-    @Override
     protected MessageMetaData copy(Mailbox mailbox, MessageUid uid, ModSeq modSeq, MailboxMessage original)
             throws MailboxException {
         SimpleMailboxMessage message = SimpleMailboxMessage.copy(mailbox.getMailboxId(), original);
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java
index d4c80a1..390070a 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryModSeqProvider.java
@@ -35,7 +35,6 @@ public class InMemoryModSeqProvider implements ModSeqProvider {
     @Override
     public ModSeq nextModSeq(Mailbox mailbox) {
         return ModSeq.of(nextModSeq((InMemoryId) mailbox.getMailboxId()));
-
     }
 
     @Override
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapper.java
index 663fe71..04691a9 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/user/InMemorySubscriptionMapper.java
@@ -71,10 +71,4 @@ public class InMemorySubscriptionMapper extends NonTransactionalMapper implement
             subscriptionsByUser.clear();
         }
     }
-
-    @Override
-    public void endRequest() {
-        // nothing to do
-    }
-
 }
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java
index 1560e83..d817a1c 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/Mapper.java
@@ -21,6 +21,8 @@ package org.apache.james.mailbox.store.transaction;
 
 import org.apache.james.mailbox.exception.MailboxException;
 
+import reactor.core.publisher.Mono;
+
 /**
  * Mapper which execute units of work in a {@link Transaction}
  */
@@ -29,12 +31,20 @@ public interface Mapper {
     /**
      * IMAP Request was complete. Cleanup all Request scoped stuff
      */
-    void endRequest();
+    default void endRequest() {
+
+    }
     
     /**
      * Execute the given Transaction
      */
-    <T> T execute(Transaction<T> transaction) throws MailboxException;
+    default <T> T execute(Transaction<T> transaction) throws MailboxException {
+        return transaction.run();
+    }
+
+    default <T> Mono<T> executeReactive(Mono<T> transaction) {
+        return transaction;
+    }
 
     /**
      * Unit of work executed in a Transaction
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/NonTransactionalMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/NonTransactionalMapper.java
index 7417ce5..8fd8ecf 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/NonTransactionalMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/NonTransactionalMapper.java
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.james.mailbox.store.transaction;
 
-import org.apache.james.mailbox.exception.MailboxException;
-
 /**
  * A Mapper which does no transaction handling. It just executes the execute() method
  * of the Transaction object without any special handling.
@@ -28,9 +26,4 @@ import org.apache.james.mailbox.exception.MailboxException;
  */
 public abstract class NonTransactionalMapper implements Mapper {
 
-    @Override
-    public final <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
 }
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/TransactionalMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/TransactionalMapper.java
index 139d8e7..4bc1073 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/TransactionalMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/transaction/TransactionalMapper.java
@@ -47,7 +47,7 @@ public abstract class TransactionalMapper implements Mapper {
     public final <T> Mono<T> executeReactive(Mono<T> transaction) {
         return Mono.fromRunnable(Throwing.runnable(this::begin).sneakyThrow())
             .then(transaction)
-            .doOnNext(Throwing.consumer(ignored -> commit()).sneakyThrow())
+            .doOnSuccess(Throwing.<T>consumer(ignored -> commit()).sneakyThrow())
             .doOnError(MailboxException.class, Throwing.consumer(e -> rollback()).sneakyThrow());
     }
 
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
index d608338..fc50181 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
@@ -68,25 +68,12 @@ class StoreMailboxMessageResultIteratorTest {
         }
 
         @Override
-        public void endRequest() {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
-        public <T> T execute(Transaction<T> transaction) {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
         public MailboxCounters getMailboxCounters(Mailbox mailbox) {
             throw new UnsupportedOperationException();
         }
 
         @Override
-        public Iterator<MailboxMessage> findInMailbox(Mailbox mailbox, MessageRange set,
-                                                              org.apache.james.mailbox.store.mail.MessageMapper.FetchType type, int limit)
-                throws MailboxException {
-            
+        public Iterator<MailboxMessage> findInMailbox(Mailbox mailbox, MessageRange set, FetchType type, int limit) {
             List<MailboxMessage> messages = new ArrayList<>();
             for (MessageUid uid: Iterables.limit(set, limit)) {
                 if (messageRange.includes(uid)) {


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org