MAILBOX-305 Compile time checks for Attachment mapper

I can not anymore access an attachment mapper in implementations that does not 
support it.


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/035f0f78
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/035f0f78
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/035f0f78

Branch: refs/heads/master
Commit: 035f0f789cae82196a3a37c57a10cc0c14681966
Parents: e6f7567
Author: benwa <[email protected]>
Authored: Thu Sep 7 15:24:43 2017 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Wed Sep 13 10:21:48 2017 +0200

----------------------------------------------------------------------
 .../CachingMailboxSessionMapperFactory.java     |  7 ---
 .../cassandra/CassandraMailboxManager.java      |  6 +-
 .../CassandraMailboxSessionMapperFactory.java   | 21 +++++--
 .../cassandra/CassandraMessageManager.java      | 27 +++++++--
 .../CassandraMailboxManagerAttachmentTest.java  |  6 ++
 .../cassandra/mail/CassandraMapperProvider.java |  2 +-
 .../hbase/HBaseMailboxSessionMapperFactory.java |  7 ---
 .../jcr/JCRMailboxSessionMapperFactory.java     |  7 ---
 .../jpa/JPAMailboxSessionMapperFactory.java     |  7 ---
 .../MaildirMailboxSessionMapperFactory.java     |  9 ---
 .../InMemoryMailboxSessionMapperFactory.java    |  8 ++-
 .../inmemory/InMemoryMessageManager.java        | 24 +++++++-
 .../InMemoryMailboxManagerAttachmentTest.java   |  6 ++
 .../store/MailboxSessionMapperFactory.java      | 17 +-----
 .../mailbox/store/StoreMessageManager.java      | 19 +++----
 .../store/mail/AttachmentMapperFactory.java     |  2 +
 .../store/mail/NoopAttachmentMapper.java        | 59 --------------------
 .../AbstractMailboxManagerAttachmentTest.java   |  6 +-
 .../store/TestMailboxSessionMapperFactory.java  | 10 +---
 .../james/modules/mailbox/JPAMailboxModule.java |  2 -
 20 files changed, 105 insertions(+), 147 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxSessionMapperFactory.java
 
b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxSessionMapperFactory.java
index eed35fa..19f6cb2 100644
--- 
a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxSessionMapperFactory.java
+++ 
b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMailboxSessionMapperFactory.java
@@ -6,12 +6,10 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.SubscriptionException;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
-import org.apache.james.mailbox.store.mail.NoopAttachmentMapper;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 
@@ -53,11 +51,6 @@ public class CachingMailboxSessionMapperFactory extends
     }
 
     @Override
-    public AttachmentMapper createAttachmentMapper(MailboxSession session) 
throws MailboxException {
-        return new NoopAttachmentMapper();
-    }
-
-    @Override
     public AnnotationMapper createAnnotationMapper(MailboxSession session)
             throws MailboxException {
         throw new NotImplementedException();

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
index 736ef6a..1f1527f 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
@@ -51,6 +51,7 @@ import 
org.apache.james.mailbox.store.search.MessageSearchIndex;
  */
 public class CassandraMailboxManager extends StoreMailboxManager {
     private final MailboxPathLocker locker;
+    private final CassandraMailboxSessionMapperFactory mapperFactory;
 
     @Inject
     public CassandraMailboxManager(CassandraMailboxSessionMapperFactory 
mapperFactory, Authenticator authenticator, Authorizator authorizator,
@@ -69,6 +70,7 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
             mailboxEventDispatcher,
             delegatingMailboxListener);
         this.locker = locker;
+        this.mapperFactory = mapperFactory;
     }
 
     public CassandraMailboxManager(CassandraMailboxSessionMapperFactory 
mapperFactory, Authenticator authenticator, Authorizator authorizator,
@@ -82,6 +84,7 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
             messageParser,
             messageIdFactory);
         this.locker = locker;
+        this.mapperFactory = mapperFactory;
     }
 
     public CassandraMailboxManager(CassandraMailboxSessionMapperFactory 
mapperFactory, Authenticator authenticator,  Authorizator authorizator,
@@ -97,6 +100,7 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
             limitOfAnnotations,
             limitAnnotationSize);
         this.locker = locker;
+        this.mapperFactory = mapperFactory;
     }
 
     @Override
@@ -124,7 +128,7 @@ public class CassandraMailboxManager extends 
StoreMailboxManager {
 
     @Override
     protected StoreMessageManager createMessageManager(Mailbox mailboxRow, 
MailboxSession session) throws MailboxException {
-        return new CassandraMessageManager(getMapperFactory(),
+        return new CassandraMessageManager(mapperFactory,
             getMessageSearchIndex(),
             getEventDispatcher(),
             this.locker,

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
index 1c1539d..85e3349 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
@@ -50,6 +50,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
+import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
@@ -61,7 +62,9 @@ import com.datastax.driver.core.Session;
 /**
  * Cassandra implementation of {@link MailboxSessionMapperFactory}
  */
-public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory {
+public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory implements AttachmentMapperFactory {
+    protected final static String ATTACHMENTMAPPER = "ATTACHMENTMAPPER";
+
     private final Session session;
     private final CassandraUidProvider uidProvider;
     private final CassandraModSeqProvider modSeqProvider;
@@ -122,7 +125,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
                                           uidProvider,
                                           modSeqProvider,
                                           null,
-                                          (CassandraAttachmentMapper) 
createAttachmentMapper(mailboxSession),
+                                          
createAttachmentMapper(mailboxSession),
                                           messageDAO,
                                           messageIdDAO,
                                           imapUidDAO,
@@ -138,7 +141,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
     @Override
     public MessageIdMapper createMessageIdMapper(MailboxSession 
mailboxSession) throws MailboxException {
         return new CassandraMessageIdMapper(getMailboxMapper(mailboxSession), 
mailboxDAO,
-                (CassandraAttachmentMapper) 
getAttachmentMapper(mailboxSession),
+                (CassandraAttachmentMapper) 
createAttachmentMapper(mailboxSession),
                 imapUidDAO, messageIdDAO, messageDAO, indexTableHandler, 
modSeqProvider, mailboxSession,
                 cassandraConfiguration);
     }
@@ -149,7 +152,7 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
     }
 
     @Override
-    public AttachmentMapper createAttachmentMapper(MailboxSession 
mailboxSession) {
+    public CassandraAttachmentMapper createAttachmentMapper(MailboxSession 
mailboxSession) {
         return new CassandraAttachmentMapper(attachmentDAO, attachmentDAOV2, 
blobsDAO);
     }
 
@@ -175,4 +178,14 @@ public class CassandraMailboxSessionMapperFactory extends 
MailboxSessionMapperFa
             throws MailboxException {
         return new CassandraAnnotationMapper(session, cassandraUtils);
     }
+
+    @Override
+    public AttachmentMapper getAttachmentMapper(MailboxSession session) throws 
MailboxException {
+        AttachmentMapper mapper = (AttachmentMapper) 
session.getAttributes().get(ATTACHMENTMAPPER);
+        if (mapper == null) {
+            mapper = createAttachmentMapper(session);
+            session.getAttributes().put(ATTACHMENTMAPPER, mapper);
+        }
+        return mapper;
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
index 585e6e3..0a8890d 100644
--- 
a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
+++ 
b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox.cassandra;
 
+import java.util.List;
+
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxPathLocker;
@@ -26,31 +28,37 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.BatchSizes;
 import org.apache.james.mailbox.store.ImmutableMailboxMessage;
-import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMessageManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
 
+import com.github.steveash.guavate.Guavate;
+
 /**
  * Cassandra implementation of {@link StoreMessageManager}
  * 
  */
 public class CassandraMessageManager extends StoreMessageManager {
 
-    public CassandraMessageManager(MailboxSessionMapperFactory mapperFactory, 
MessageSearchIndex index, 
-            MailboxEventDispatcher dispatcher, MailboxPathLocker locker, 
Mailbox mailbox, QuotaManager quotaManager, 
-            QuotaRootResolver quotaRootResolver, MessageParser messageParser, 
MessageId.Factory messageIdFactory,
-            BatchSizes batchSizes, ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory) throws MailboxException {
+    private CassandraMailboxSessionMapperFactory mapperFactory;
+
+    public CassandraMessageManager(CassandraMailboxSessionMapperFactory 
mapperFactory, MessageSearchIndex index,
+                                   MailboxEventDispatcher dispatcher, 
MailboxPathLocker locker, Mailbox mailbox, QuotaManager quotaManager,
+                                   QuotaRootResolver quotaRootResolver, 
MessageParser messageParser, MessageId.Factory messageIdFactory,
+                                   BatchSizes batchSizes, 
ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws 
MailboxException {
         super(mapperFactory, index, dispatcher, locker, mailbox, new 
UnionMailboxACLResolver(), 
                 new SimpleGroupMembershipResolver(), quotaManager, 
quotaRootResolver, messageParser, messageIdFactory, batchSizes, 
immutableMailboxMessageFactory);
 
+        this.mapperFactory = mapperFactory;
     }
 
     /**
@@ -62,4 +70,13 @@ public class CassandraMessageManager extends 
StoreMessageManager {
         flags.add(Flags.Flag.USER);
         return flags;
     }
+
+    @Override
+    protected void storeAttachment(final MailboxMessage message, final 
List<MessageAttachment> messageAttachments, final MailboxSession session) 
throws MailboxException {
+        mapperFactory.getAttachmentMapper(session)
+            .storeAttachments(
+                messageAttachments.stream()
+                    .map(MessageAttachment::getAttachment)
+                    .collect(Guavate.toImmutableList()));
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index 59cc7ee..e19e594 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -47,6 +47,7 @@ import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.junit.After;
 import org.junit.Before;
@@ -121,4 +122,9 @@ public class CassandraMailboxManagerAttachmentTest extends 
AbstractMailboxManage
     protected MailboxManager getParseFailingMailboxManager() {
         return parseFailingMailboxManager;
     }
+
+    @Override
+    protected AttachmentMapperFactory getAttachmentMapperFactory() {
+        return mailboxSessionMapperFactory;
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
----------------------------------------------------------------------
diff --git 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
index d00923b..cf72181 100644
--- 
a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
+++ 
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
@@ -86,7 +86,7 @@ public class CassandraMapperProvider implements 
MapperProvider {
 
     @Override
     public AttachmentMapper createAttachmentMapper() throws MailboxException {
-        return createMapperFactory().getAttachmentMapper(mailboxSession);
+        return createMapperFactory().createAttachmentMapper(mailboxSession);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java
 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java
index d0cba35..c8ce4e3 100644
--- 
a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java
+++ 
b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java
@@ -47,12 +47,10 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageId.Factory;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
-import org.apache.james.mailbox.store.mail.NoopAttachmentMapper;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 
@@ -154,11 +152,6 @@ public class HBaseMailboxSessionMapperFactory extends 
MailboxSessionMapperFactor
         return new HBaseSubscriptionMapper(this.conf);
     }
 
-    @Override
-    public AttachmentMapper createAttachmentMapper(MailboxSession session) 
throws MailboxException {
-        return new NoopAttachmentMapper();
-    }
-
     /**
      * Returns the configuration object for accessing the cluster.
      * @return The configuration for accessing the cluster

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
index 8bd2fc2..47e8535 100644
--- 
a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
+++ 
b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxSessionMapperFactory.java
@@ -27,12 +27,10 @@ import org.apache.james.mailbox.jcr.mail.JCRMessageMapper;
 import org.apache.james.mailbox.jcr.user.JCRSubscriptionMapper;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
-import org.apache.james.mailbox.store.mail.NoopAttachmentMapper;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 
@@ -82,11 +80,6 @@ public class JCRMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory
         return new JCRSubscriptionMapper(repository, session, DEFAULT_SCALING);
     }
     
-    @Override
-    public AttachmentMapper createAttachmentMapper(MailboxSession session) 
throws MailboxException {
-        return new NoopAttachmentMapper();
-    }
-    
     public MailboxSessionJCRRepository getRepository() {
         return repository;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
index 036df5f..09ded1f 100644
--- 
a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
+++ 
b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxSessionMapperFactory.java
@@ -31,12 +31,10 @@ import org.apache.james.mailbox.jpa.mail.JPAMessageMapper;
 import org.apache.james.mailbox.jpa.user.JPASubscriptionMapper;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
-import org.apache.james.mailbox.store.mail.NoopAttachmentMapper;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 
@@ -77,11 +75,6 @@ public class JPAMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory
     public SubscriptionMapper createSubscriptionMapper(MailboxSession session) 
{
         return new JPASubscriptionMapper(entityManagerFactory);
     }
-    
-    @Override
-    public AttachmentMapper createAttachmentMapper(MailboxSession session) 
throws MailboxException {
-        return new NoopAttachmentMapper();
-    }
 
     /**
      * Return a new {@link EntityManager} instance

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java
 
b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java
index 3b0faad..8175a23 100644
--- 
a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java
+++ 
b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirMailboxSessionMapperFactory.java
@@ -27,12 +27,10 @@ import 
org.apache.james.mailbox.maildir.mail.MaildirMessageMapper;
 import org.apache.james.mailbox.maildir.user.MaildirSubscriptionMapper;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
-import org.apache.james.mailbox.store.mail.NoopAttachmentMapper;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 
@@ -70,13 +68,6 @@ public class MaildirMailboxSessionMapperFactory extends
         return new MaildirSubscriptionMapper(store);
     }
 
-
-    @Override
-    public AttachmentMapper createAttachmentMapper(MailboxSession session) 
throws MailboxException {
-        return new NoopAttachmentMapper();
-    }
-
-
     @Override
     public AnnotationMapper createAnnotationMapper(MailboxSession session)
             throws MailboxException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
index 3a24427..adae134 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java
@@ -31,6 +31,7 @@ import 
org.apache.james.mailbox.inmemory.user.InMemorySubscriptionMapper;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
+import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -38,7 +39,7 @@ import org.apache.james.mailbox.store.mail.ModSeqProvider;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 
-public class InMemoryMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory {
+public class InMemoryMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory implements AttachmentMapperFactory {
 
     private final MailboxMapper mailboxMapper;
     private final MessageMapper messageMapper;
@@ -105,4 +106,9 @@ public class InMemoryMailboxSessionMapperFactory extends 
MailboxSessionMapperFac
         return modSeqProvider;
     }
 
+    @Override
+    public AttachmentMapper getAttachmentMapper(MailboxSession session) throws 
MailboxException {
+        return attachmentMapper;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
index 161bd5c..7620ddc 100644
--- 
a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
+++ 
b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
@@ -1,5 +1,7 @@
 package org.apache.james.mailbox.inmemory;
 
+import java.util.List;
+
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxPathLocker;
@@ -7,6 +9,7 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
@@ -16,15 +19,21 @@ import 
org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.StoreMessageManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
 
+import com.github.steveash.guavate.Guavate;
+
 public class InMemoryMessageManager extends StoreMessageManager {
 
-    public InMemoryMessageManager(MailboxSessionMapperFactory mapperFactory, 
MessageSearchIndex index, MailboxEventDispatcher dispatcher, 
-            MailboxPathLocker locker, Mailbox mailbox, MailboxACLResolver 
aclResolver, GroupMembershipResolver groupMembershipResolver, 
-            QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, 
MessageParser messageParser, MessageId.Factory messageIdFactory, BatchSizes 
batchSizes, ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) 
throws MailboxException {
+    private InMemoryMailboxSessionMapperFactory mapperFactory;
+
+    public InMemoryMessageManager(MailboxSessionMapperFactory mapperFactory, 
MessageSearchIndex index, MailboxEventDispatcher dispatcher,
+                                  MailboxPathLocker locker, Mailbox mailbox, 
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
+                                  QuotaManager quotaManager, QuotaRootResolver 
quotaRootResolver, MessageParser messageParser, MessageId.Factory 
messageIdFactory, BatchSizes batchSizes, ImmutableMailboxMessage.Factory 
immutableMailboxMessageFactory) throws MailboxException {
         super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, 
groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, 
messageIdFactory, batchSizes, immutableMailboxMessageFactory);
+        this.mapperFactory = (InMemoryMailboxSessionMapperFactory) 
mapperFactory;
     }
 
     @Override
@@ -33,4 +42,13 @@ public class InMemoryMessageManager extends 
StoreMessageManager {
         permanentFlags.add(Flags.Flag.USER);
         return permanentFlags;
     }
+
+    @Override
+    protected void storeAttachment(final MailboxMessage message, final 
List<MessageAttachment> messageAttachments, final MailboxSession session) 
throws MailboxException {
+        mapperFactory.getAttachmentMapper(session)
+            .storeAttachments(
+                messageAttachments.stream()
+                    .map(MessageAttachment::getAttachment)
+                    .collect(Guavate.toImmutableList()));
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
index 9a9f755..d67f276 100644
--- 
a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
+++ 
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.junit.Before;
 
@@ -78,4 +79,9 @@ public class InMemoryMailboxManagerAttachmentTest extends 
AbstractMailboxManager
     protected MailboxManager getParseFailingMailboxManager() {
         return parseFailingMailboxManager;
     }
+
+    @Override
+    protected AttachmentMapperFactory getAttachmentMapperFactory() {
+        return mailboxSessionMapperFactory;
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxSessionMapperFactory.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxSessionMapperFactory.java
index 6dd87ef..ce521d7 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxSessionMapperFactory.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxSessionMapperFactory.java
@@ -23,8 +23,6 @@ import org.apache.james.mailbox.RequestAware;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.SubscriptionException;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapperFactory;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
@@ -40,9 +38,8 @@ import 
org.apache.james.mailbox.store.user.SubscriptionMapperFactory;
  * Maintain mapper instances by {@link MailboxSession}. So only one mapper 
instance is used
  * in a {@link MailboxSession}
  */
-public abstract class MailboxSessionMapperFactory implements RequestAware, 
MailboxMapperFactory, MessageMapperFactory, AttachmentMapperFactory, 
SubscriptionMapperFactory {
+public abstract class MailboxSessionMapperFactory implements RequestAware, 
MailboxMapperFactory, MessageMapperFactory, SubscriptionMapperFactory {
 
-    protected final static String ATTACHMENTMAPPER = "ATTACHMENTMAPPER";
     protected final static String MESSAGEMAPPER ="MESSAGEMAPPER";
     protected final static String MESSAGEIDMAPPER ="MESSAGEIDMAPPER";
     protected final static String MAILBOXMAPPER ="MAILBOXMAPPER";
@@ -71,15 +68,6 @@ public abstract class MailboxSessionMapperFactory implements 
RequestAware, Mailb
         return mapper;
     }
 
-    public AttachmentMapper getAttachmentMapper(MailboxSession session) throws 
MailboxException {
-        AttachmentMapper mapper = (AttachmentMapper) 
session.getAttributes().get(ATTACHMENTMAPPER);
-        if (mapper == null) {
-            mapper = createAttachmentMapper(session);
-            session.getAttributes().put(ATTACHMENTMAPPER, mapper);
-        }
-        return mapper;
-    }
-
     public AnnotationMapper getAnnotationMapper(MailboxSession session) throws 
MailboxException {
         AnnotationMapper mapper = 
(AnnotationMapper)session.getAttributes().get(ANNOTATIONMAPPER);
         if (mapper == null) {
@@ -103,9 +91,6 @@ public abstract class MailboxSessionMapperFactory implements 
RequestAware, Mailb
 
     public abstract MessageIdMapper createMessageIdMapper(MailboxSession 
session) throws MailboxException;
 
-    public abstract AttachmentMapper createAttachmentMapper(MailboxSession 
session) throws MailboxException;
-
-
     /**
      * @see 
org.apache.james.mailbox.store.mail.MailboxMapperFactory#getMailboxMapper(MailboxSession)
      */

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 85a1282..a7a0e5b 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -30,11 +30,14 @@ import java.util.List;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
+
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 import javax.mail.internet.SharedInputStream;
 import javax.mail.util.SharedFileInputStream;
 
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.input.TeeInputStream;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
@@ -47,7 +50,6 @@ import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.ReadOnlyException;
 import org.apache.james.mailbox.exception.UnsupportedRightException;
-import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
@@ -67,7 +69,6 @@ import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -88,8 +89,6 @@ import org.apache.james.mime4j.stream.MimeConfig;
 import org.apache.james.mime4j.stream.MimeTokenStream;
 import org.apache.james.mime4j.stream.RecursionMode;
 import org.apache.james.util.IteratorWrapper;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.input.TeeInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -634,17 +633,17 @@ public class StoreMessageManager implements 
org.apache.james.mailbox.MessageMana
 
     protected MessageMetaData appendMessageToStore(final MailboxMessage 
message, final List<MessageAttachment> messageAttachments, MailboxSession 
session) throws MailboxException {
         final MessageMapper messageMapper = 
mapperFactory.getMessageMapper(session);
-        final AttachmentMapper attachmentMapper = 
mapperFactory.getAttachmentMapper(session);
+
         return mapperFactory.getMessageMapper(session).execute(() -> {
-            ImmutableList.Builder<Attachment> attachments = 
ImmutableList.builder();
-            for (MessageAttachment attachment : messageAttachments) {
-                attachments.add(attachment.getAttachment());
-            }
-            attachmentMapper.storeAttachments(attachments.build());
+            storeAttachment(message, messageAttachments, session);
             return messageMapper.add(getMailboxEntity(), message);
         });
     }
 
+    protected void storeAttachment(final MailboxMessage message, final 
List<MessageAttachment> messageAttachments, final MailboxSession session) 
throws MailboxException {
+
+    }
+
     /**
      * @see 
org.apache.james.mailbox.MessageManager#getMessageCount(org.apache.james.mailbox.MailboxSession)
      */

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AttachmentMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AttachmentMapperFactory.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AttachmentMapperFactory.java
index 3d08131..e3d768d 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AttachmentMapperFactory.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AttachmentMapperFactory.java
@@ -23,5 +23,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 
 public interface AttachmentMapperFactory {
 
+    AttachmentMapper createAttachmentMapper(MailboxSession session) throws 
MailboxException;
+
     AttachmentMapper getAttachmentMapper(MailboxSession session) throws 
MailboxException;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/NoopAttachmentMapper.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/NoopAttachmentMapper.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/NoopAttachmentMapper.java
deleted file mode 100644
index 9026f26..0000000
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/NoopAttachmentMapper.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james.mailbox.store.mail;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.james.mailbox.exception.AttachmentNotFoundException;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.Attachment;
-import org.apache.james.mailbox.model.AttachmentId;
-
-public class NoopAttachmentMapper implements AttachmentMapper {
-
-    @Override
-    public void endRequest() {
-
-    }
-
-    @Override
-    public <T> T execute(Transaction<T> transaction) throws MailboxException {
-        return transaction.run();
-    }
-
-    @Override
-    public Attachment getAttachment(AttachmentId attachmentId) throws 
AttachmentNotFoundException {
-        return null;
-    }
-
-    @Override
-    public List<Attachment> getAttachments(Collection<AttachmentId> 
attachmentIds) {
-        return null;
-    }
-
-    @Override
-    public void storeAttachment(Attachment attachment) throws MailboxException 
{
-    }
-
-    @Override
-    public void storeAttachments(Collection<Attachment> attachments) throws 
MailboxException {
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
index 3657561..617d0e0 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
@@ -20,12 +20,14 @@
 package org.apache.james.mailbox.store;
 
 import static org.assertj.core.api.Assertions.assertThat;
+
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
+
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
@@ -38,6 +40,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
+import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
@@ -61,6 +64,7 @@ public abstract class AbstractMailboxManagerAttachmentTest {
     protected abstract MailboxManager getMailboxManager();
     protected abstract MailboxManager getParseFailingMailboxManager();
     protected abstract MailboxSessionMapperFactory 
getMailboxSessionMapperFactory();
+    protected abstract AttachmentMapperFactory getAttachmentMapperFactory();
     
     public void setUp() throws Exception {
         mailboxSession = new MockMailboxSession(USERNAME);
@@ -71,7 +75,7 @@ public abstract class AbstractMailboxManagerAttachmentTest {
         mailboxManager.createMailbox(inboxPath, mailboxSession);
         inbox = mailboxMapper.findMailboxByPath(inboxPath);
         inboxMessageManager = mailboxManager.getMailbox(inboxPath, 
mailboxSession);
-        attachmentMapper = 
getMailboxSessionMapperFactory().getAttachmentMapper(mailboxSession);
+        attachmentMapper = 
getAttachmentMapperFactory().createAttachmentMapper(mailboxSession);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
index 7a93597..a2d7b03 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
@@ -22,14 +22,17 @@ package org.apache.james.mailbox.store;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
+
 import java.util.AbstractMap;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Function;
 import java.util.function.Predicate;
+
 import javax.mail.Flags;
 
+import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
@@ -44,7 +47,6 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -54,7 +56,6 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
-import org.apache.commons.lang.NotImplementedException;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
@@ -266,11 +267,6 @@ public class TestMailboxSessionMapperFactory extends 
MailboxSessionMapperFactory
     }
 
     @Override
-    public AttachmentMapper createAttachmentMapper(MailboxSession session) 
throws MailboxException {
-        throw new NotImplementedException();
-    }
-
-    @Override
     public MailboxMapper createMailboxMapper(MailboxSession session) throws 
MailboxException {
         return mailboxMapper;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/035f0f78/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
 
b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
index 228ffe6..43f337d 100644
--- 
a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
+++ 
b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
@@ -50,7 +50,6 @@ import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.MailboxMapperFactory;
 import org.apache.james.mailbox.store.mail.MessageMapperFactory;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
@@ -88,7 +87,6 @@ public class JPAMailboxModule extends AbstractModule {
 
         
bind(MessageMapperFactory.class).to(JPAMailboxSessionMapperFactory.class);
         
bind(MailboxMapperFactory.class).to(JPAMailboxSessionMapperFactory.class);
-        
bind(AttachmentMapperFactory.class).to(JPAMailboxSessionMapperFactory.class);
         
bind(MailboxSessionMapperFactory.class).to(JPAMailboxSessionMapperFactory.class);
         bind(MessageId.Factory.class).to(DefaultMessageId.Factory.class);
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to