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]
