Repository: james-project Updated Branches: refs/heads/master 31ae6de4c -> 7697abfe1
MAILBOX-268 Introduce a default AttachmentMapper Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7b259d9a Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7b259d9a Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7b259d9a Branch: refs/heads/master Commit: 7b259d9a28f72115a07ada5b7e4511acdb65ba51 Parents: 321ad9a Author: Antoine Duprat <[email protected]> Authored: Wed May 25 10:14:34 2016 +0200 Committer: Antoine Duprat <[email protected]> Committed: Fri May 27 10:01:52 2016 +0200 ---------------------------------------------------------------------- .../CachingMailboxSessionMapperFactory.java | 7 +++ .../CassandraMailboxSessionMapperFactory.java | 7 +++ .../hbase/HBaseMailboxSessionMapperFactory.java | 7 +++ .../jcr/JCRMailboxSessionMapperFactory.java | 7 +++ .../jpa/JPAMailboxSessionMapperFactory.java | 8 ++++ .../MaildirMailboxSessionMapperFactory.java | 8 ++++ .../InMemoryMailboxSessionMapperFactory.java | 9 ++++ .../store/MailboxSessionMapperFactory.java | 13 ++++++ .../store/mail/NoopAttachmentMapper.java | 47 ++++++++++++++++++++ 9 files changed, 113 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/7b259d9a/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 d5cb0a9..0495d59 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 @@ -4,8 +4,10 @@ import org.apache.james.mailbox.MailboxSession; 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.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MessageMapper; +import org.apache.james.mailbox.store.mail.NoopAttachmentMapper; import org.apache.james.mailbox.store.user.SubscriptionMapper; /** @@ -45,4 +47,9 @@ public class CachingMailboxSessionMapperFactory extends return underlying.createSubscriptionMapper(session); } + @Override + public AttachmentMapper createAttachmentMapper(MailboxSession session) throws MailboxException { + return new NoopAttachmentMapper(); + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/7b259d9a/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 dd8025d..02e8373 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 @@ -27,8 +27,10 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMailboxMapper; import org.apache.james.mailbox.cassandra.mail.CassandraMessageMapper; import org.apache.james.mailbox.cassandra.user.CassandraSubscriptionMapper; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; +import org.apache.james.mailbox.store.mail.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; 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; @@ -71,6 +73,11 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa } @Override + public AttachmentMapper createAttachmentMapper(MailboxSession mailboxSession) { + return new NoopAttachmentMapper(); + } + + @Override public SubscriptionMapper createSubscriptionMapper(MailboxSession mailboxSession) { return new CassandraSubscriptionMapper(session); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7b259d9a/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 400bf78..0f93752 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 @@ -43,9 +43,11 @@ import org.apache.james.mailbox.hbase.mail.HBaseMailboxMapper; import org.apache.james.mailbox.hbase.mail.HBaseMessageMapper; import org.apache.james.mailbox.hbase.user.HBaseSubscriptionMapper; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; +import org.apache.james.mailbox.store.mail.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; 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; @@ -140,6 +142,11 @@ 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/7b259d9a/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 35a80ea..151fbb3 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 @@ -25,9 +25,11 @@ import org.apache.james.mailbox.jcr.mail.JCRMailboxMapper; 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.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; 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; @@ -72,6 +74,11 @@ 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/7b259d9a/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 73890fb..7a3e4a1 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 @@ -22,13 +22,16 @@ import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.jpa.mail.JPAMailboxMapper; 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.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; 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; @@ -63,6 +66,11 @@ 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/7b259d9a/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 de572a5..bd4c3f4 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 @@ -25,8 +25,10 @@ import org.apache.james.mailbox.maildir.mail.MaildirMailboxMapper; 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.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MessageMapper; +import org.apache.james.mailbox.store.mail.NoopAttachmentMapper; import org.apache.james.mailbox.store.user.SubscriptionMapper; public class MaildirMailboxSessionMapperFactory extends @@ -58,4 +60,10 @@ public class MaildirMailboxSessionMapperFactory extends return new MaildirSubscriptionMapper(store); } + + @Override + public AttachmentMapper createAttachmentMapper(MailboxSession session) throws MailboxException { + return new NoopAttachmentMapper(); + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/7b259d9a/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 ed8184f..db46861 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 @@ -27,8 +27,10 @@ import org.apache.james.mailbox.inmemory.mail.InMemoryModSeqProvider; import org.apache.james.mailbox.inmemory.mail.InMemoryUidProvider; import org.apache.james.mailbox.inmemory.user.InMemorySubscriptionMapper; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; +import org.apache.james.mailbox.store.mail.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MessageMapper; +import org.apache.james.mailbox.store.mail.NoopAttachmentMapper; import org.apache.james.mailbox.store.user.SubscriptionMapper; public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFactory { @@ -36,11 +38,13 @@ public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFac private final MailboxMapper mailboxMapper; private final MessageMapper messageMapper; private final SubscriptionMapper subscriptionMapper; + private final AttachmentMapper attachmentMapper; public InMemoryMailboxSessionMapperFactory() { mailboxMapper = new InMemoryMailboxMapper(); messageMapper = new InMemoryMessageMapper(null, new InMemoryUidProvider(), new InMemoryModSeqProvider()); subscriptionMapper = new InMemorySubscriptionMapper(); + attachmentMapper = new NoopAttachmentMapper(); } @Override @@ -57,6 +61,11 @@ public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFac public SubscriptionMapper createSubscriptionMapper(MailboxSession session) throws SubscriptionException { return subscriptionMapper; } + + @Override + public AttachmentMapper createAttachmentMapper(MailboxSession session) throws MailboxException { + return attachmentMapper; + } public void deleteAll() throws MailboxException { ((InMemoryMailboxMapper) mailboxMapper).deleteAll(); http://git-wip-us.apache.org/repos/asf/james-project/blob/7b259d9a/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 3069eae..7c3da7d 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 @@ -22,6 +22,7 @@ import org.apache.james.mailbox.MailboxSession; 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.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MailboxMapperFactory; import org.apache.james.mailbox.store.mail.MessageMapper; @@ -36,6 +37,7 @@ import org.apache.james.mailbox.store.user.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 MAILBOXMAPPER ="MAILBOXMAPPER"; protected final static String SUBSCRIPTIONMAPPER ="SUBSCRIPTIONMAPPER"; @@ -54,6 +56,15 @@ 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; + } + /** * Create a {@link MessageMapper} instance which will get reused during the whole {@link MailboxSession} * @@ -63,6 +74,8 @@ public abstract class MailboxSessionMapperFactory implements RequestAware, Mailb */ public abstract MessageMapper createMessageMapper(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/7b259d9a/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 new file mode 100644 index 0000000..b6aeb59 --- /dev/null +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/NoopAttachmentMapper.java @@ -0,0 +1,47 @@ +/**************************************************************** + * 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 org.apache.james.mailbox.exception.AttachmentNotFoundException; +import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.store.mail.model.Attachment; +import org.apache.james.mailbox.store.mail.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 void storeAttachment(Attachment attachment) throws MailboxException { + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
