You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ad...@apache.org on 2017/07/13 11:26:01 UTC
[1/2] james-project git commit: JAMES-2092 Fix Eclipse warnings
Repository: james-project
Updated Branches:
refs/heads/master 33419f67a -> c4e25df08
JAMES-2092 Fix Eclipse warnings
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c4e25df0
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c4e25df0
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c4e25df0
Branch: refs/heads/master
Commit: c4e25df0828fe61960e56a5dde390283afbef5bb
Parents: 3c6ff2c
Author: Antoine Duprat <ad...@linagora.com>
Authored: Fri Jul 7 10:46:15 2017 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Jul 13 11:22:15 2017 +0200
----------------------------------------------------------------------
.../apache/james/mailbox/model/SearchQuery.java | 1 -
.../mail/CassandraAnnotationMapper.java | 1 -
mailbox/elasticsearch/pom.xml | 1 -
.../elasticsearch/MailboxMappingFactory.java | 4 +---
.../mailbox/hbase/mail/HBaseMessageMapper.java | 1 -
.../inmemory/mail/InMemoryMailboxMapper.java | 1 -
.../james/mailbox/store/ResultHeader.java | 1 -
.../comparator/AbstractHeaderComparator.java | 1 -
.../AbstractMessageIdManagerSideEffectTest.java | 17 ---------------
mailbox/tika/pom.xml | 1 -
.../james/transport/mailets/ClamAVScan.java | 22 +++++++++-----------
.../AbstractMessageRangeProcessor.java | 1 -
.../james/imap/processor/AppendProcessor.java | 1 -
.../james/imap/processor/MyRightsProcessor.java | 1 -
.../imap/processor/SystemMessageProcessor.java | 1 -
.../imap/processor/base/UidMsnConverter.java | 1 -
.../processor/base/SelectedMailboxImplTest.java | 6 +++---
.../james/core/MimeMessageWrapperTest.java | 1 -
.../modules/mailbox/CassandraMailboxModule.java | 1 -
.../util/concurrency/ConcurrentTestRunner.java | 6 +++---
.../sieve/cassandra/CassandraSieveDAO.java | 2 --
.../apache/james/transport/mailets/Sieve.java | 9 --------
.../apache/james/jmap/model/MailboxFactory.java | 1 -
.../apache/james/jmap/model/MessageFactory.java | 1 -
.../netty/AbstractConfigurableAsyncServer.java | 1 -
.../activemq/ActiveMQMailQueueBlobTest.java | 1 -
.../queue/jms/AbstractJMSMailQueueTest.java | 2 --
27 files changed, 17 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java
index ebfd6f1..911063b 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/SearchQuery.java
@@ -36,7 +36,6 @@ import org.apache.james.mailbox.MessageUid;
import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
/**
* <p>
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
index 92aca6d..2cea9d4 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapper.java
@@ -33,7 +33,6 @@ import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.table.CassandraAnnotationTable;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/pom.xml b/mailbox/elasticsearch/pom.xml
index 6c527af..b564a86 100644
--- a/mailbox/elasticsearch/pom.xml
+++ b/mailbox/elasticsearch/pom.xml
@@ -215,7 +215,6 @@
<dependency>
<groupId>com.github.steveash.guavate</groupId>
<artifactId>guavate</artifactId>
- <version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java
index e87f575..142736c 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/MailboxMappingFactory.java
@@ -32,6 +32,7 @@ import static org.apache.james.backends.es.NodeMappingFactory.NOT_ANALYZED;
import static org.apache.james.backends.es.NodeMappingFactory.PROPERTIES;
import static org.apache.james.backends.es.NodeMappingFactory.RAW;
import static org.apache.james.backends.es.NodeMappingFactory.SNOWBALL;
+import static org.apache.james.backends.es.NodeMappingFactory.STRING;
import static org.apache.james.backends.es.NodeMappingFactory.TYPE;
import static org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants.BCC;
import static org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants.CC;
@@ -63,9 +64,6 @@ import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
import java.io.IOException;
-import static org.apache.james.backends.es.NodeMappingFactory.STRING;
-
-import org.apache.james.backends.es.IndexCreationFactory;
import org.apache.james.backends.es.NodeMappingFactory;
import org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants.EMailer;
import org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants.Property;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
index 10e65ae..6c0843f 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
@@ -48,7 +48,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import javax.annotation.Nullable;
import javax.mail.Flags;
import org.apache.hadoop.conf.Configuration;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
index b85cdef..7e7eb8e 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import com.google.common.base.Objects;
-import com.google.common.base.Optional;
public class InMemoryMailboxMapper implements MailboxMapper {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
index d01c13f..f289fe9 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
@@ -27,7 +27,6 @@ import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
-import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MessageResult;
public final class ResultHeader implements MessageResult.Header {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
index 37f2c0f..7c76209 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
@@ -23,7 +23,6 @@ import java.util.Comparator;
import java.util.List;
import java.util.Locale;
-import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MessageResult.Header;
import org.apache.james.mailbox.store.ResultUtils;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 5aa005e..8c84b8a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -30,7 +30,6 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import java.util.List;
-import java.util.Map;
import javax.mail.Flags;
@@ -61,8 +60,6 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
public abstract class AbstractMessageIdManagerSideEffectTest {
@@ -149,11 +146,6 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- MessageResult messageResult = FluentIterable
- .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
- .filter(inMailbox(mailbox1.getMailboxId()))
- .get(0);
-
verify(dispatcher).added(eq(session), eq(mailbox1), any(MailboxMessage.class));
verifyNoMoreInteractions(dispatcher);
}
@@ -325,15 +317,6 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(QuotaImpl.unlimited());
}
- private Predicate<MessageResult> inMailbox(final MailboxId mailboxId) {
- return new Predicate<MessageResult>() {
- @Override
- public boolean apply(MessageResult input) {
- return input.getMailboxId().equals(mailboxId);
- }
- };
- }
-
private SimpleMessageMetaData fromMessageResult(MessageId messageId, MessageResult messageResult) {
return new SimpleMessageMetaData(messageResult.getUid(), messageResult.getModSeq(), messageResult.getFlags(), messageResult.getSize(), messageResult.getInternalDate(), messageId);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailbox/tika/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/tika/pom.xml b/mailbox/tika/pom.xml
index 37fa418..5598582 100644
--- a/mailbox/tika/pom.xml
+++ b/mailbox/tika/pom.xml
@@ -209,7 +209,6 @@
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
- <version>1.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/mailet/standard/src/main/java/org/apache/james/transport/mailets/ClamAVScan.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ClamAVScan.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ClamAVScan.java
index e8fe602..5d3fc8e 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ClamAVScan.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ClamAVScan.java
@@ -20,26 +20,14 @@
package org.apache.james.transport.mailets;
-import org.apache.commons.io.IOUtils;
-import org.apache.mailet.Experimental;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.base.GenericMailet;
-import org.apache.mailet.base.RFC2822Headers;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
-import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
-import java.io.Reader;
import java.io.StringWriter;
-import java.io.Writer;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.Socket;
@@ -48,6 +36,16 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.mailet.Experimental;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.base.GenericMailet;
+import org.apache.mailet.base.RFC2822Headers;
+
/**
* <P>Does an antivirus scan check using a ClamAV daemon (CLAMD)</P>
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
index 7a58e67..8663bb4 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
@@ -43,7 +43,6 @@ import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.metrics.api.MetricFactory;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
public abstract class AbstractMessageRangeProcessor<M extends AbstractMessageRangeRequest> extends AbstractMailboxProcessor<M> {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
index 5bc46fd..d57adf5 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
@@ -46,7 +46,6 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.metrics.api.MetricFactory;
-import org.slf4j.Logger;
public class AppendProcessor extends AbstractMailboxProcessor<AppendRequest> {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/protocols/imap/src/main/java/org/apache/james/imap/processor/MyRightsProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/MyRightsProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/MyRightsProcessor.java
index d011ff5..2f1c89a 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/MyRightsProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/MyRightsProcessor.java
@@ -40,7 +40,6 @@ import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.SimpleMailboxACL.Rfc4314Rights;
import org.apache.james.metrics.api.MetricFactory;
-import org.slf4j.Logger;
/**
* MYRIGHTS Processor.
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/protocols/imap/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java
index 07f881c..2e1c28e 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/SystemMessageProcessor.java
@@ -27,7 +27,6 @@ import org.apache.james.imap.processor.base.AbstractChainedProcessor;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.exception.MailboxException;
-import org.slf4j.Logger;
/**
* Processes system messages unrelated to IMAP.
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
index 9e09053..fe8c519 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
@@ -21,7 +21,6 @@ package org.apache.james.imap.processor.base;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.TreeSet;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index 33c61e4..8d005d6 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -146,10 +146,10 @@ public class SelectedMailboxImplTest {
};
}
- private Answer generateEmitEventAnswer(final AtomicInteger success) {
- return new Answer() {
+ private Answer<Iterator<MessageUid>> generateEmitEventAnswer(final AtomicInteger success) {
+ return new Answer<Iterator<MessageUid>>() {
@Override
- public Object answer(InvocationOnMock invocation) throws Throwable {
+ public Iterator<MessageUid> answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
final MailboxListener mailboxListener = (MailboxListener) args[1];
executorService.submit(new Runnable() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/container/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java b/server/container/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java
index 75a29ba..449eedc 100644
--- a/server/container/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java
+++ b/server/container/core/src/test/java/org/apache/james/core/MimeMessageWrapperTest.java
@@ -21,7 +21,6 @@ package org.apache.james.core;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index 2d06dbb..eefecf2 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -33,7 +33,6 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
import org.apache.james.mailbox.cassandra.CassandraSubscriptionManager;
import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
import org.apache.james.mailbox.cassandra.mail.CassandraMailboxMapper;
import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java b/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java
index cc06686..ff50490 100644
--- a/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java
+++ b/server/container/util/src/main/java/org/apache/james/util/concurrency/ConcurrentTestRunner.java
@@ -75,7 +75,7 @@ public class ConcurrentTestRunner {
private final CountDownLatch countDownLatch;
private final BiConsumer biConsumer;
private final ExecutorService executorService;
- private final List<Future> futures;
+ private final List<Future<?>> futures;
public ConcurrentTestRunner(int threadCount, int operationCount, BiConsumer biConsumer) {
Preconditions.checkArgument(threadCount > 0, "Thread count should be strictly positive");
@@ -86,7 +86,7 @@ public class ConcurrentTestRunner {
this.countDownLatch = new CountDownLatch(threadCount);
this.biConsumer = biConsumer;
this.executorService = Executors.newFixedThreadPool(threadCount);
- this.futures = new ArrayList<Future>();
+ this.futures = new ArrayList<Future<?>>();
}
public ConcurrentTestRunner run() {
@@ -97,7 +97,7 @@ public class ConcurrentTestRunner {
}
public ConcurrentTestRunner assertNoException() throws ExecutionException, InterruptedException {
- for (Future future: futures) {
+ for (Future<?> future: futures) {
future.get();
}
return this;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
index f15dba5..9e3c7aa 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveDAO.java
@@ -33,11 +33,9 @@ import static org.apache.james.sieve.cassandra.tables.CassandraSieveTable.SIZE;
import static org.apache.james.sieve.cassandra.tables.CassandraSieveTable.TABLE_NAME;
import static org.apache.james.sieve.cassandra.tables.CassandraSieveTable.USER_NAME;
-
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
-import java.util.stream.Collectors;
import javax.inject.Inject;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
index 21225b0..4f61488 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Sieve.java
@@ -19,30 +19,21 @@
package org.apache.james.transport.mailets;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.inject.Inject;
import javax.mail.MessagingException;
import org.apache.commons.logging.Log;
import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.sieverepository.api.SieveRepository;
-import org.apache.james.transport.mailets.delivery.MailStore;
import org.apache.james.transport.mailets.jsieve.CommonsLoggingAdapter;
import org.apache.james.transport.mailets.jsieve.ResourceLocator;
import org.apache.james.transport.mailets.jsieve.delivery.SieveExecutor;
import org.apache.james.transport.mailets.jsieve.delivery.SievePoster;
import org.apache.james.user.api.UsersRepository;
-import org.apache.james.user.api.UsersRepositoryException;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
import org.apache.mailet.base.GenericMailet;
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableList;
-
/**
* Execute Sieve scripts for incoming emails, and set the result of the execution as attributes of the mail
*/
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
index 6f4e9b1..119de23 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.model.MailboxCounters;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxMetaData;
import org.apache.james.mailbox.model.MailboxPath;
-import org.slf4j.LoggerFactory;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
index 18f4695..b5e5e1d 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
@@ -21,7 +21,6 @@ package org.apache.james.jmap.model;
import java.io.IOException;
import java.io.InputStream;
import java.time.Instant;
-import java.time.ZoneId;
import java.util.Collection;
import java.util.Date;
import java.util.List;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
index c1ebb81..d72d53e 100644
--- a/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
+++ b/server/protocols/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
@@ -337,7 +337,6 @@ public abstract class AbstractConfigurableAsyncServer extends AbstractAsyncServe
* @throws ConfigurationException
*/
protected void configureHelloName(Configuration handlerConfiguration) throws ConfigurationException {
- StringBuilder infoBuffer;
String hostName;
try {
hostName = InetAddress.getLocalHost().getHostName();
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
index b360913..a85b831 100644
--- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
+++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueBlobTest.java
@@ -26,7 +26,6 @@ import java.io.InputStream;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.commons.io.FileUtils;
import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.queue.jms.JMSMailQueue;
import com.google.common.base.Throwables;
http://git-wip-us.apache.org/repos/asf/james-project/blob/c4e25df0/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
index 52b1aef..1e8b0c5 100644
--- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
+++ b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/AbstractJMSMailQueueTest.java
@@ -30,7 +30,6 @@ import java.util.Enumeration;
import java.util.Iterator;
import java.util.Properties;
import java.util.UUID;
-import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import javax.jms.ConnectionFactory;
@@ -49,7 +48,6 @@ import org.apache.james.queue.api.ManageableMailQueue.MailQueueIterator;
import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/2] james-project git commit: JAMES-2092 Cache messages on events
whenever possible
Posted by ad...@apache.org.
JAMES-2092 Cache messages on events whenever possible
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3c6ff2c6
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3c6ff2c6
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3c6ff2c6
Branch: refs/heads/master
Commit: 3c6ff2c69b0973b18aa0bd8c998c75b778d4a359
Parents: 33419f6
Author: benwa <bt...@linagora.com>
Authored: Fri Jul 7 10:37:57 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Jul 13 11:22:15 2017 +0200
----------------------------------------------------------------------
.../cassandra/CassandraMailboxManager.java | 3 +-
.../cassandra/CassandraMessageManager.java | 5 +-
...istributedMailboxDelegatingListenerTest.java | 12 +-
.../mailbox/hbase/HBaseMailboxManager.java | 3 +-
.../mailbox/hbase/HBaseMessageManager.java | 5 +-
.../james/mailbox/jcr/JCRMailboxManager.java | 3 +-
.../james/mailbox/jcr/JCRMessageManager.java | 5 +-
.../james/mailbox/jpa/JPAMessageManager.java | 5 +-
.../jpa/openjpa/OpenJPAMailboxManager.java | 3 +-
.../jpa/openjpa/OpenJPAMessageManager.java | 9 +-
.../inmemory/InMemoryMailboxManager.java | 3 +-
.../inmemory/InMemoryMessageManager.java | 5 +-
mailbox/store/pom.xml | 1 -
.../mailbox/store/ImmutableMailboxMessage.java | 261 +++++++++++++++++++
.../mailbox/store/StoreMailboxManager.java | 9 +-
.../mailbox/store/StoreMessageIdManager.java | 7 +-
.../mailbox/store/StoreMessageManager.java | 44 +++-
.../james/mailbox/store/event/EventFactory.java | 13 +-
.../store/event/MailboxEventDispatcher.java | 18 +-
.../store/json/event/EventConverter.java | 6 +-
.../search/ListeningMessageSearchIndex.java | 43 ++-
.../AbstractMessageIdManagerSideEffectTest.java | 23 +-
...elegatingMailboxListenerIntegrationTest.java | 10 +-
.../mailbox/store/json/EventSerializerTest.java | 4 +-
.../registrations/MailboxRegistrationTest.java | 4 +-
.../processor/base/SelectedMailboxImplTest.java | 4 +-
.../org/apache/james/util/IteratorWrapper.java | 60 +++++
.../apache/james/util/IteratorWrapperTest.java | 90 +++++++
28 files changed, 577 insertions(+), 81 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/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 3656690..736ef6a 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
@@ -133,7 +133,8 @@ public class CassandraMailboxManager extends StoreMailboxManager {
getQuotaRootResolver(),
getMessageParser(),
getMessageIdFactory(),
- getBatchSizes());
+ getBatchSizes(),
+ getImmutableMailboxMessageFactory());
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/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 6d5c085..585e6e3 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
@@ -30,6 +30,7 @@ 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;
@@ -46,9 +47,9 @@ 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) throws MailboxException {
+ BatchSizes batchSizes, ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws MailboxException {
super(mapperFactory, index, dispatcher, locker, mailbox, new UnionMailboxACLResolver(),
- new SimpleGroupMembershipResolver(), quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes);
+ new SimpleGroupMembershipResolver(), quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, immutableMailboxMessageFactory);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index efefb22..37cb6ed 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -27,9 +27,11 @@ import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.modules.CassandraRegistrationModule;
import org.apache.james.mailbox.mock.MockMailboxSession;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
import org.apache.james.mailbox.store.TestIdDeserializer;
@@ -40,12 +42,15 @@ import org.apache.james.mailbox.store.event.distributed.RegisteredDelegatingMail
import org.apache.james.mailbox.store.json.MessagePackEventSerializer;
import org.apache.james.mailbox.store.json.event.EventConverter;
import org.apache.james.mailbox.store.json.event.MailboxConverter;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.util.EventCollector;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import com.google.common.collect.ImmutableMap;
+
/**
Integration tests for RegisteredDelegatingMailboxListener using a cassandra back-end.
@@ -57,6 +62,7 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
public static final MailboxPath MAILBOX_PATH_2 = new MailboxPath("#private", "user", "mbx.other");
public static final int CASSANDRA_TIME_OUT_IN_S = 10;
public static final int SCHEDULER_PERIOD_IN_S = 20;
+ public static final ImmutableMap<MessageUid, MailboxMessage> EMPTY_MESSAGE_CACHE = ImmutableMap.of();
private CassandraCluster cassandra = CassandraCluster.create(new CassandraRegistrationModule());
private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener1;
@@ -142,7 +148,8 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
public void mailboxEventListenersShouldBeTriggeredIfRegistered() throws Exception {
SimpleMailbox simpleMailbox = new SimpleMailbox(MAILBOX_PATH_1, 42);
simpleMailbox.setMailboxId(TestId.of(52));
- final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<>(), simpleMailbox);
+ TreeMap<MessageUid, MessageMetaData> uids = new TreeMap<>();
+ final MailboxListener.Event event = new EventFactory().added(mailboxSession, uids, simpleMailbox, EMPTY_MESSAGE_CACHE);
registeredDelegatingMailboxListener1.event(event);
@@ -155,7 +162,8 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
public void onceEventListenersShouldBeTriggeredOnceAcrossTheCluster() {
SimpleMailbox simpleMailbox = new SimpleMailbox(MAILBOX_PATH_1, 42);
simpleMailbox.setMailboxId(TestId.of(52));
- final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<>(), simpleMailbox);
+ TreeMap<MessageUid, MessageMetaData> uids = new TreeMap<>();
+ final MailboxListener.Event event = new EventFactory().added(mailboxSession, uids, simpleMailbox, EMPTY_MESSAGE_CACHE);
registeredDelegatingMailboxListener1.event(event);
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
index baeadb9..1540b7b 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java
@@ -105,6 +105,7 @@ public class HBaseMailboxManager extends StoreMailboxManager {
getQuotaRootResolver(),
getMessageParser(),
getMessageIdFactory(),
- getBatchSizes());
+ getBatchSizes(),
+ getImmutableMailboxMessageFactory());
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
index 00386b8..0b1c054 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java
@@ -29,6 +29,7 @@ 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;
@@ -45,9 +46,9 @@ public class HBaseMessageManager extends StoreMessageManager {
public HBaseMessageManager(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) throws MailboxException {
+ 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);
+ quotaRootResolver, messageParser, messageIdFactory, batchSizes, immutableMailboxMessageFactory);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
index c3105b7..e60ba33 100644
--- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
+++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java
@@ -77,7 +77,8 @@ public class JCRMailboxManager extends StoreMailboxManager implements JCRImapCon
getQuotaRootResolver(),
getMessageParser(),
getMessageIdFactory(),
- getBatchSizes());
+ getBatchSizes(),
+ getImmutableMailboxMessageFactory());
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
index fbf25e0..ee76bab 100644
--- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
+++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java
@@ -36,6 +36,7 @@ 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;
@@ -56,10 +57,10 @@ public class JCRMessageManager extends StoreMessageManager {
public JCRMessageManager(MailboxSessionMapperFactory mapperFactory, MessageSearchIndex index,
final MailboxEventDispatcher dispatcher, MailboxPathLocker locker, JCRMailbox mailbox,
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, Logger log,
- QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory, BatchSizes batchSizes)
+ 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);
+ quotaRootResolver, messageParser, messageIdFactory, batchSizes, immutableMailboxMessageFactory);
this.log = log;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
index 2817940..ee023ac 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
@@ -36,6 +36,7 @@ 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;
@@ -54,10 +55,10 @@ public class JPAMessageManager extends StoreMessageManager {
final MailboxEventDispatcher dispatcher, MailboxPathLocker locker,
final Mailbox mailbox, MailboxACLResolver aclResolver,
GroupMembershipResolver groupMembershipResolver, QuotaManager quotaManager,
- QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory, BatchSizes batchSizes) throws MailboxException {
+ 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);
+ quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, immutableMailboxMessageFactory);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
index d6bb542..7944ec4 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
@@ -105,6 +105,7 @@ public class OpenJPAMailboxManager extends JPAMailboxManager {
getQuotaRootResolver(),
getMessageParser(),
getMessageIdFactory(),
- getBatchSizes());
+ getBatchSizes(),
+ getImmutableMailboxMessageFactory());
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
index 7091d36..ca545d5 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
@@ -38,6 +38,7 @@ 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.event.MailboxEventDispatcher;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -64,9 +65,9 @@ public class OpenJPAMessageManager extends JPAMessageManager {
MailboxPathLocker locker, Mailbox mailbox, MailboxACLResolver aclResolver,
GroupMembershipResolver groupMembershipResolver,
QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser,
- MessageId.Factory messageIdFactory, BatchSizes batchSizes) throws MailboxException {
+ MessageId.Factory messageIdFactory, BatchSizes batchSizes, ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws MailboxException {
this(mapperFactory, index, dispatcher, locker, mailbox, AdvancedFeature.None, aclResolver,
- groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes);
+ groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, immutableMailboxMessageFactory);
}
public OpenJPAMessageManager(MailboxSessionMapperFactory mapperFactory,
@@ -74,9 +75,9 @@ public class OpenJPAMessageManager extends JPAMessageManager {
MailboxPathLocker locker, Mailbox mailbox, AdvancedFeature f,
MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser,
- MessageId.Factory messageIdFactory, BatchSizes batchSizes) throws MailboxException {
+ MessageId.Factory messageIdFactory, BatchSizes batchSizes, ImmutableMailboxMessage.Factory immutableMailboxMessageFactory) throws MailboxException {
- super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes);
+ super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, immutableMailboxMessageFactory);
this.feature = f;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
index 3b465ef..55584d8 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
@@ -87,6 +87,7 @@ public class InMemoryMailboxManager extends StoreMailboxManager {
getQuotaRootResolver(),
getMessageParser(),
getMessageIdFactory(),
- getBatchSizes());
+ getBatchSizes(),
+ getImmutableMailboxMessageFactory());
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/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 b573b9b..161bd5c 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
@@ -11,6 +11,7 @@ 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;
@@ -22,8 +23,8 @@ 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) throws MailboxException {
- super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes);
+ 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);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index 7cb4e31..95af179 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -39,7 +39,6 @@
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>james-server-util</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java
new file mode 100644
index 0000000..1f2b4c5
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ImmutableMailboxMessage.java
@@ -0,0 +1,261 @@
+/****************************************************************
+ * 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;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Date;
+import java.util.List;
+
+import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.store.mail.model.FlagsBuilder;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.mailbox.store.mail.model.Property;
+
+import com.google.common.collect.ImmutableList;
+
+public class ImmutableMailboxMessage implements MailboxMessage {
+
+ public static class Factory {
+
+ private final MailboxManager mailboxManager;
+
+ public Factory(MailboxManager mailboxManager) {
+ this.mailboxManager = mailboxManager;
+ }
+
+ public ImmutableMailboxMessage from(MailboxId mailboxId, MailboxMessage message) throws MailboxException {
+ try {
+ return new ImmutableMailboxMessage(message.getMessageId(),
+ message.getInternalDate(),
+ copy(message.getBodyContent()),
+ message.getMediaType(),
+ message.getSubType(),
+ message.getBodyOctets(),
+ message.getFullContentOctets(),
+ message.getFullContentOctets() - message.getBodyOctets(),
+ message.getTextualLineCount(),
+ copy(message.getHeaderContent()),
+ copy(message.getFullContent()),
+ ImmutableList.copyOf(message.getProperties()),
+ attachments(message),
+ mailboxId,
+ message.getUid(),
+ message.getModSeq(),
+ message.isAnswered(),
+ message.isDeleted(),
+ message.isDraft(),
+ message.isFlagged(),
+ message.isRecent(),
+ message.isSeen(),
+ message.createFlags().getUserFlags());
+ } catch (IOException e) {
+ throw new MailboxException("Unable to parse message", e);
+ }
+ }
+
+ private ImmutableList<MessageAttachment> attachments(MailboxMessage message) {
+ if (mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.Attachment)) {
+ return ImmutableList.copyOf(message.getAttachments());
+ }
+ return ImmutableList.of();
+ }
+
+ private static SharedByteArrayInputStream copy(InputStream inputStream) throws IOException {
+ return new SharedByteArrayInputStream(IOUtils.toByteArray(inputStream));
+ }
+ }
+
+ private final MessageId messageId;
+ private final Date internalDate;
+ private final InputStream bodyContent;
+ private final String mediaType;
+ private final String subType;
+ private final long bodyOctets;
+ private final long fullContentOctets;
+ private final long headerOctets;
+ private final Long textualLineCount;
+ private final InputStream headerContent;
+ private final InputStream fullContent;
+ private final List<Property> properties;
+ private final List<MessageAttachment> attachments;
+ private final MailboxId mailboxId;
+ private final MessageUid uid;
+ private final long modSeq;
+ private final boolean answered;
+ private final boolean deleted;
+ private final boolean draft;
+ private final boolean flagged;
+ private final boolean recent;
+ private final boolean seen;
+ private final String[] userFlags;
+
+ private ImmutableMailboxMessage(MessageId messageId, Date internalDate, InputStream bodyContent, String mediaType, String subType, long bodyOctets, long fullContentOctets, long headerOctets, Long textualLineCount, InputStream headerContent,
+ InputStream fullContent, List<Property> properties, List<MessageAttachment> attachments, MailboxId mailboxId, MessageUid uid, long modSeq, boolean answered, boolean deleted, boolean draft, boolean flagged, boolean recent,
+ boolean seen, String[] userFlags) {
+ this.messageId = messageId;
+ this.internalDate = internalDate;
+ this.bodyContent = bodyContent;
+ this.mediaType = mediaType;
+ this.subType = subType;
+ this.bodyOctets = bodyOctets;
+ this.fullContentOctets = fullContentOctets;
+ this.headerOctets = headerOctets;
+ this.textualLineCount = textualLineCount;
+ this.headerContent = headerContent;
+ this.fullContent = fullContent;
+ this.properties = properties;
+ this.attachments = attachments;
+ this.mailboxId = mailboxId;
+ this.uid = uid;
+ this.modSeq = modSeq;
+ this.answered = answered;
+ this.deleted = deleted;
+ this.draft = draft;
+ this.flagged = flagged;
+ this.recent = recent;
+ this.seen = seen;
+ this.userFlags = userFlags;
+ }
+
+ public MessageId getMessageId() {
+ return messageId;
+ }
+
+ public Date getInternalDate() {
+ return internalDate;
+ }
+
+ public InputStream getBodyContent() {
+ return bodyContent;
+ }
+
+ public String getMediaType() {
+ return mediaType;
+ }
+
+ public String getSubType() {
+ return subType;
+ }
+
+ public long getBodyOctets() {
+ return bodyOctets;
+ }
+
+ public long getFullContentOctets() {
+ return fullContentOctets;
+ }
+
+ @Override
+ public long getHeaderOctets() {
+ return headerOctets;
+ }
+
+ public Long getTextualLineCount() {
+ return textualLineCount;
+ }
+
+ public InputStream getHeaderContent() {
+ return headerContent;
+ }
+
+ public InputStream getFullContent() {
+ return fullContent;
+ }
+
+ public List<Property> getProperties() {
+ return properties;
+ }
+
+ public List<MessageAttachment> getAttachments() {
+ return attachments;
+ }
+
+ public MailboxId getMailboxId() {
+ return mailboxId;
+ }
+
+ public MessageUid getUid() {
+ return uid;
+ }
+
+ public long getModSeq() {
+ return modSeq;
+ }
+
+ public boolean isAnswered() {
+ return answered;
+ }
+
+ public boolean isDeleted() {
+ return deleted;
+ }
+
+ public boolean isDraft() {
+ return draft;
+ }
+
+ public boolean isFlagged() {
+ return flagged;
+ }
+
+ public boolean isRecent() {
+ return recent;
+ }
+
+ public boolean isSeen() {
+ return seen;
+ }
+
+ @Override
+ public int compareTo(MailboxMessage o) {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public void setUid(MessageUid uid) {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public void setModSeq(long modSeq) {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public void setFlags(Flags flags) {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public Flags createFlags() {
+ return FlagsBuilder.createFlags(this, userFlags);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 1bc28df..355070b 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -140,6 +140,8 @@ public class StoreMailboxManager implements MailboxManager {
private final int limitAnnotationSize;
+ private final ImmutableMailboxMessage.Factory immutableMailboxMessageFactory;
+
@Inject
public StoreMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, Authenticator authenticator, Authorizator authorizator,
MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver,
@@ -185,6 +187,7 @@ public class StoreMailboxManager implements MailboxManager {
this.limitAnnotationSize = limitAnnotationSize;
this.delegatingListener = delegatingListener;
this.dispatcher = mailboxEventDispatcher;
+ this.immutableMailboxMessageFactory = new ImmutableMailboxMessage.Factory(this);
}
protected Factory getMessageIdFactory() {
@@ -223,6 +226,10 @@ public class StoreMailboxManager implements MailboxManager {
return batchSizes;
}
+ public ImmutableMailboxMessage.Factory getImmutableMailboxMessageFactory() {
+ return immutableMailboxMessageFactory;
+ }
+
/**
* Init the {@link MailboxManager}
*
@@ -464,7 +471,7 @@ public class StoreMailboxManager implements MailboxManager {
protected StoreMessageManager createMessageManager(Mailbox mailbox, MailboxSession session) throws MailboxException {
return new StoreMessageManager(getMapperFactory(), getMessageSearchIndex(), getEventDispatcher(),
getLocker(), mailbox, getAclResolver(), getGroupMembershipResolver(), getQuotaManager(),
- getQuotaRootResolver(), getMessageParser(), getMessageIdFactory(), getBatchSizes());
+ getQuotaRootResolver(), getMessageParser(), getMessageIdFactory(), getBatchSizes(), getImmutableMailboxMessageFactory());
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 9964d6c..7c883bb 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -229,18 +229,17 @@ public class StoreMessageIdManager implements MessageIdManager {
MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
for (MailboxId mailboxId : mailboxIds) {
SimpleMailboxMessage copy = SimpleMailboxMessage.copy(mailboxId, mailboxMessage);
- MessageMetaData metaData = save(mailboxSession, messageIdMapper, copy);
- dispatcher.added(mailboxSession, metaData, mailboxMapper.findMailboxById(mailboxId));
+ save(mailboxSession, messageIdMapper, copy);
+ dispatcher.added(mailboxSession, mailboxMapper.findMailboxById(mailboxId), copy);
}
}
- private MessageMetaData save(MailboxSession mailboxSession, MessageIdMapper messageIdMapper, MailboxMessage mailboxMessage) throws MailboxException {
+ private void save(MailboxSession mailboxSession, MessageIdMapper messageIdMapper, MailboxMessage mailboxMessage) throws MailboxException {
long modSeq = mailboxSessionMapperFactory.getModSeqProvider().nextModSeq(mailboxSession, mailboxMessage.getMailboxId());
MessageUid uid = mailboxSessionMapperFactory.getUidProvider().nextUid(mailboxSession, mailboxMessage.getMailboxId());
mailboxMessage.setModSeq(modSeq);
mailboxMessage.setUid(uid);
messageIdMapper.save(mailboxMessage);
- return new SimpleMessageMetaData(uid, modSeq, mailboxMessage.createFlags(), mailboxMessage.getFullContentOctets(), mailboxMessage.getInternalDate(), mailboxMessage.getMessageId());
}
private Function<MailboxMessage, MessageResult> messageResultConverter(final MessageResult.FetchGroup fetchGroup) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/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 69233f7..137433c 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
@@ -91,6 +91,7 @@ import org.apache.james.mime4j.stream.EntityState;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -98,6 +99,7 @@ import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
/**
* Base class for {@link org.apache.james.mailbox.MessageManager}
@@ -171,9 +173,12 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
private BatchSizes batchSizes = BatchSizes.defaultValues();
+ private final ImmutableMailboxMessage.Factory immutableMailboxMessageFactory;
+
public StoreMessageManager(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)
+ QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory, BatchSizes batchSizes,
+ ImmutableMailboxMessage.Factory immutableMailboxMessageFactory)
throws MailboxException {
this.mailbox = mailbox;
this.dispatcher = dispatcher;
@@ -187,6 +192,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
this.messageParser = messageParser;
this.messageIdFactory = messageIdFactory;
this.batchSizes = batchSizes;
+ this.immutableMailboxMessageFactory = immutableMailboxMessageFactory;
}
protected Factory getMessageIdFactory() {
@@ -427,12 +433,9 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
public ComposedMessageId execute() throws MailboxException {
MessageMetaData data = appendMessageToStore(message, attachments, mailboxSession);
- SortedMap<MessageUid, MessageMetaData> uids = new TreeMap<MessageUid, MessageMetaData>();
- MessageUid messageUid = data.getUid();
- MailboxId mailboxId = getMailboxEntity().getMailboxId();
- uids.put(messageUid, data);
- dispatcher.added(mailboxSession, uids, getMailboxEntity());
- return new ComposedMessageId(mailboxId, data.getMessageId(), messageUid);
+ Mailbox mailbox = getMailboxEntity();
+ dispatcher.added(mailboxSession, mailbox, message);
+ return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid());
}
}, true);
@@ -632,7 +635,6 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
@Override
public List<MessageRange> execute() throws MailboxException {
SortedMap<MessageUid, MessageMetaData> copiedUids = copy(set, toMailbox, session);
- dispatcher.added(session, copiedUids, toMailbox.getMailboxEntity());
return MessageRange.toRanges(new ArrayList<MessageUid>(copiedUids.keySet()));
}
}, true);
@@ -660,7 +662,6 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
@Override
public List<MessageRange> execute() throws MailboxException {
SortedMap<MessageUid, MessageMetaData> movedUids = move(set, toMailbox, session);
- dispatcher.added(session, movedUids, toMailbox.getMailboxEntity());
return MessageRange.toRanges(new ArrayList<MessageUid>(movedUids.keySet()));
}
}, true);
@@ -795,15 +796,32 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
private SortedMap<MessageUid, MessageMetaData> copy(MessageRange set, StoreMessageManager to, MailboxSession session) throws MailboxException {
- Iterator<MailboxMessage> originalRows = retrieveOriginalRows(set, session);
- return collectMetadata(to.copy(originalRows, session));
+ IteratorWrapper<MailboxMessage> originalRows = new IteratorWrapper<MailboxMessage>(retrieveOriginalRows(set, session));
+
+ SortedMap<MessageUid, MessageMetaData> copiedUids = collectMetadata(to.copy(originalRows, session));
+
+ ImmutableMap.Builder<MessageUid, MailboxMessage> messagesMap = ImmutableMap.builder();
+ for(MailboxMessage message: originalRows.getEntriesSeen()) {
+ messagesMap.put(message.getUid(), immutableMailboxMessageFactory.from(to.getMailboxEntity().getMailboxId(), message));
+ }
+ dispatcher.added(session, copiedUids, to.getMailboxEntity(), messagesMap.build());
+
+ return copiedUids;
}
private SortedMap<MessageUid, MessageMetaData> move(MessageRange set, StoreMessageManager to, MailboxSession session) throws MailboxException {
- Iterator<MailboxMessage> originalRows = retrieveOriginalRows(set, session);
+ IteratorWrapper<MailboxMessage> originalRows = new IteratorWrapper<MailboxMessage>(retrieveOriginalRows(set, session));
+
MoveResult moveResult = to.move(originalRows, session);
+ SortedMap<MessageUid, MessageMetaData> moveUids = collectMetadata(moveResult.getMovedMessages());
+
+ ImmutableMap.Builder<MessageUid, MailboxMessage> messagesMap = ImmutableMap.builder();
+ for(MailboxMessage message: originalRows.getEntriesSeen()) {
+ messagesMap.put(message.getUid(), immutableMailboxMessageFactory.from(to.getMailboxEntity().getMailboxId(), message));
+ }
+ dispatcher.added(session, moveUids, to.getMailboxEntity(), messagesMap.build());
dispatcher.expunged(session, collectMetadata(moveResult.getOriginalMessages()), getMailboxEntity());
- return collectMetadata(moveResult.getMovedMessages());
+ return moveUids;
}
private Iterator<MailboxMessage> retrieveOriginalRows(MessageRange set, MailboxSession session) throws MailboxException {
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
index f2da9e5..1cffdc4 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java
@@ -31,6 +31,7 @@ import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.StoreMailboxPath;
import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -43,12 +44,14 @@ public class EventFactory {
public final class AddedImpl extends MailboxListener.Added implements MailboxAware {
private final Map<MessageUid, MessageMetaData> added;
+ private final Map<MessageUid, MailboxMessage> availableMessages;
private final Mailbox mailbox;
- public AddedImpl(MailboxSession session, Mailbox mailbox, SortedMap<MessageUid, MessageMetaData> uids) {
+ public AddedImpl(MailboxSession session, Mailbox mailbox, SortedMap<MessageUid, MessageMetaData> uids, Map<MessageUid, MailboxMessage> availableMessages) {
super(session, new StoreMailboxPath(mailbox));
this.added = ImmutableMap.copyOf(uids);
this.mailbox = mailbox;
+ this.availableMessages = ImmutableMap.copyOf(availableMessages);
}
public List<MessageUid> getUids() {
@@ -62,6 +65,10 @@ public class EventFactory {
public Mailbox getMailbox() {
return mailbox;
}
+
+ public Map<MessageUid, MailboxMessage> getAvailableMessages() {
+ return availableMessages;
+ }
}
public final class ExpungedImpl extends MailboxListener.Expunged implements MailboxAware {
@@ -167,8 +174,8 @@ public class EventFactory {
}
}
- public MailboxListener.Added added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
- return new AddedImpl(session, mailbox, uids);
+ public MailboxListener.Added added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox, Map<MessageUid, MailboxMessage> cachedMessages) {
+ return new AddedImpl(session, mailbox, uids, cachedMessages);
}
public MailboxListener.Expunged expunged(MailboxSession session, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
index 0d64ed9..91b7955 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java
@@ -31,7 +31,9 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.UpdatedFlags;
+import org.apache.james.mailbox.store.SimpleMessageMetaData;
import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
@@ -69,15 +71,23 @@ public class MailboxEventDispatcher {
* @param uids Sorted map with uids and message meta data
* @param mailbox The mailbox
*/
- public void added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
- listener.event(eventFactory.added(session, uids, mailbox));
+ public void added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox, Map<MessageUid, MailboxMessage> cachedMessages) {
+ listener.event(eventFactory.added(session, uids, mailbox, cachedMessages));
}
- public void added(MailboxSession session, MessageMetaData messageMetaData, Mailbox mailbox) {
+ public void added(MailboxSession session, Mailbox mailbox, MailboxMessage mailboxMessage) {
+ SimpleMessageMetaData messageMetaData = new SimpleMessageMetaData(mailboxMessage);
SortedMap<MessageUid, MessageMetaData> metaDataMap = ImmutableSortedMap.<MessageUid, MessageMetaData>naturalOrder()
.put(messageMetaData.getUid(), messageMetaData)
.build();
- added(session, metaDataMap, mailbox);
+ added(session, metaDataMap, mailbox, ImmutableMap.of(mailboxMessage.getUid(), mailboxMessage));
+ }
+
+ public void added(MailboxSession session, MessageMetaData messageMetaData, Mailbox mailbox) {
+ SortedMap<MessageUid, MessageMetaData> metaDataMap = ImmutableSortedMap.<MessageUid, MessageMetaData>naturalOrder()
+ .put(messageMetaData.getUid(), messageMetaData)
+ .build();
+ added(session, metaDataMap, mailbox, ImmutableMap.<MessageUid, MailboxMessage>of());
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
index 866c594..0621d55 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java
@@ -42,9 +42,12 @@ import org.apache.james.mailbox.store.json.event.dto.MailboxSessionDataTransferO
import org.apache.james.mailbox.store.json.event.dto.MessageMetaDataDataTransferObject;
import org.apache.james.mailbox.store.json.event.dto.UpdatedFlagsDataTransferObject;
import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.collect.ImmutableMap;
+
public class EventConverter {
private static final Logger LOG = LoggerFactory.getLogger(EventConverter.class);
@@ -98,7 +101,8 @@ public class EventConverter {
case ADDED:
return eventFactory.added(eventDataTransferObject.getSession().getMailboxSession(),
retrieveMetadata(eventDataTransferObject.getMetaDataProxyMap()),
- mailbox);
+ mailbox,
+ ImmutableMap.<MessageUid, MailboxMessage>of());
case DELETED:
return eventFactory.expunged(eventDataTransferObject.getSession().getMailboxSession(),
retrieveMetadata(eventDataTransferObject.getMetaDataProxyMap()),
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
index 11464d3..bd4521c 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
@@ -18,7 +18,6 @@
****************************************************************/
package org.apache.james.mailbox.store.search;
-import java.util.Iterator;
import java.util.List;
import org.apache.james.mailbox.MailboxListener;
@@ -33,6 +32,8 @@ import org.apache.james.mailbox.store.mail.MessageMapperFactory;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import com.google.common.base.Optional;
+
/**
* {@link MessageSearchIndex} which needs to get registered as global {@link MailboxListener} and so get
* notified about message changes. This will then allow to update the underlying index.
@@ -41,6 +42,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
*/
public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, MailboxListener {
+ public static final int UNLIMITED = -1;
private final MessageMapperFactory factory;
public ListeningMessageSearchIndex(MessageMapperFactory factory) {
@@ -76,17 +78,11 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
EventFactory.AddedImpl added = (EventFactory.AddedImpl) event;
final Mailbox mailbox = added.getMailbox();
- for (MessageUid next : (Iterable<MessageUid>) added.getUids()) {
- Iterator<MailboxMessage> messages = factory.getMessageMapper(session).findInMailbox(mailbox, MessageRange.one(next), FetchType.Full, -1);
- while (messages.hasNext()) {
- MailboxMessage message = messages.next();
- try {
- add(session, mailbox, message);
- } catch (MailboxException e) {
- session.getLog().error("Unable to index message " + message.getUid() + " for mailbox " + mailbox, e);
- }
+ for (final MessageUid next : (Iterable<MessageUid>) added.getUids()) {
+ Optional<MailboxMessage> mailboxMessage = retrieveMailboxMessage(session, added, mailbox, next);
+ if (mailboxMessage.isPresent()) {
+ addMessage(session, mailbox, mailboxMessage.get());
}
-
}
} else if (event instanceof EventFactory.ExpungedImpl) {
EventFactory.ExpungedImpl expunged = (EventFactory.ExpungedImpl) event;
@@ -113,6 +109,31 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
}
}
+ private Optional<MailboxMessage> retrieveMailboxMessage(MailboxSession session, EventFactory.AddedImpl added, Mailbox mailbox, MessageUid next) {
+ Optional<MailboxMessage> firstChoice = Optional.fromNullable(added.getAvailableMessages().get(next));
+ if (firstChoice.isPresent()) {
+ return firstChoice;
+ } else {
+ try {
+ return Optional.of(factory.getMessageMapper(session)
+ .findInMailbox(mailbox, MessageRange.one(next), FetchType.Full, UNLIMITED)
+ .next());
+ } catch (Exception e) {
+ session.getLog().error(String.format("Could not retrieve message %d in mailbox %s",
+ next, mailbox.getMailboxId().serialize()), e);
+ return Optional.absent();
+ }
+ }
+ }
+
+ private void addMessage(final MailboxSession session, final Mailbox mailbox, MailboxMessage message) {
+ try {
+ add(session, mailbox, message);
+ } catch (MailboxException e) {
+ session.getLog().error("Unable to index message " + message.getUid() + " for mailbox " + mailbox, e);
+ }
+ }
+
/**
* Add the {@link MailboxMessage} for the given {@link Mailbox} to the index
*
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index ec2dac1..5aa005e 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import java.util.List;
+import java.util.Map;
import javax.mail.Flags;
@@ -52,6 +53,7 @@ import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.quota.QuotaManager;
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.quota.QuotaImpl;
import org.junit.After;
import org.junit.Before;
@@ -151,9 +153,8 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
.from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
.filter(inMailbox(mailbox1.getMailboxId()))
.get(0);
- SimpleMessageMetaData simpleMessageMetaData = fromMessageResult(messageId, messageResult);
- verify(dispatcher).added(session, simpleMessageMetaData, mailbox1);
+ verify(dispatcher).added(eq(session), eq(mailbox1), any(MailboxMessage.class));
verifyNoMoreInteractions(dispatcher);
}
@@ -165,20 +166,10 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId(), mailbox3.getMailboxId()), session);
- List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
- MessageResult messageResultMailbox1 = FluentIterable
- .from(messageResults)
- .filter(inMailbox(mailbox1.getMailboxId()))
- .get(0);
- SimpleMessageMetaData metadataMailbox1 = fromMessageResult(messageId, messageResultMailbox1);
- MessageResult messageResultMailbox3 = FluentIterable
- .from(messageResults)
- .filter(inMailbox(mailbox3.getMailboxId()))
- .get(0);
- SimpleMessageMetaData metadataMailbox3 = fromMessageResult(messageId, messageResultMailbox3);
+ messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
- verify(dispatcher).added(session, metadataMailbox1, mailbox1);
- verify(dispatcher).added(session, metadataMailbox3, mailbox3);
+ verify(dispatcher).added(eq(session), eq(mailbox1), any(MailboxMessage.class));
+ verify(dispatcher).added(eq(session), eq(mailbox3), any(MailboxMessage.class));
verifyNoMoreInteractions(dispatcher);
}
@@ -207,7 +198,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session);
verify(dispatcher).expunged(eq(session), any(SimpleMessageMetaData.class), eq(mailbox2));
- verify(dispatcher).added(eq(session), any(SimpleMessageMetaData.class), eq(mailbox3));
+ verify(dispatcher).added(eq(session), eq(mailbox3), any(MailboxMessage.class));
verifyNoMoreInteractions(dispatcher);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
index daf5b2a..e360468 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/distributed/BroadcastDelegatingMailboxListenerIntegrationTest.java
@@ -36,11 +36,14 @@ import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.json.MessagePackEventSerializer;
import org.apache.james.mailbox.store.json.event.EventConverter;
import org.apache.james.mailbox.store.json.event.MailboxConverter;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.apache.james.mailbox.util.EventCollector;
import org.junit.Before;
import org.junit.Test;
+import com.google.common.collect.ImmutableMap;
+
/**
Integration tests for BroadcastDelegatingMailboxListener.
@@ -51,6 +54,7 @@ public class BroadcastDelegatingMailboxListenerIntegrationTest {
public static final MailboxPath MAILBOX_PATH_1 = new MailboxPath("#private", "user", "mbx");
public static final MailboxPath MAILBOX_PATH_2 = new MailboxPath("#private", "user", "mbx.other");
public static final String TOPIC = "TOPIC";
+ public static final ImmutableMap<MessageUid, MailboxMessage> EMPTY_MESSAGE_CACHE = ImmutableMap.<MessageUid, MailboxMessage>of();
private BroadcastDelegatingMailboxListener broadcastDelegatingMailboxListener1;
private BroadcastDelegatingMailboxListener broadcastDelegatingMailboxListener2;
private BroadcastDelegatingMailboxListener broadcastDelegatingMailboxListener3;
@@ -114,7 +118,7 @@ public class BroadcastDelegatingMailboxListenerIntegrationTest {
public void mailboxEventListenersShouldBeTriggeredIfRegistered() throws Exception {
SimpleMailbox simpleMailbox = new SimpleMailbox(MAILBOX_PATH_1, 42);
simpleMailbox.setMailboxId(TestId.of(52));
- final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<MessageUid, MessageMetaData>(), simpleMailbox);
+ final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<MessageUid, MessageMetaData>(), simpleMailbox, EMPTY_MESSAGE_CACHE);
broadcastDelegatingMailboxListener1.event(event);
@@ -127,7 +131,7 @@ public class BroadcastDelegatingMailboxListenerIntegrationTest {
public void onceEventListenersShouldBeTriggeredOnceAcrossTheCluster() {
SimpleMailbox simpleMailbox = new SimpleMailbox(MAILBOX_PATH_1, 42);
simpleMailbox.setMailboxId(TestId.of(52));
- final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<MessageUid, MessageMetaData>(), simpleMailbox);
+ final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<MessageUid, MessageMetaData>(), simpleMailbox, EMPTY_MESSAGE_CACHE);
broadcastDelegatingMailboxListener1.event(event);
@@ -140,7 +144,7 @@ public class BroadcastDelegatingMailboxListenerIntegrationTest {
public void eachEventListenersShouldBeTriggeredOnEachNode() {
SimpleMailbox simpleMailbox = new SimpleMailbox(MAILBOX_PATH_1, 42);
simpleMailbox.setMailboxId(TestId.of(52));
- final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<MessageUid, MessageMetaData>(), simpleMailbox);
+ final MailboxListener.Event event = new EventFactory().added(mailboxSession, new TreeMap<MessageUid, MessageMetaData>(), simpleMailbox, EMPTY_MESSAGE_CACHE);
broadcastDelegatingMailboxListener1.event(event);
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
index 900225a..76c1185 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
@@ -38,10 +38,12 @@ import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.SimpleMessageMetaData;
import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.event.EventSerializer;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.junit.Before;
import org.junit.Test;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
public abstract class EventSerializerTest {
@@ -80,7 +82,7 @@ public abstract class EventSerializerTest {
public void addedEventShouldBeWellConverted() throws Exception {
TreeMap<MessageUid, MessageMetaData> treeMap = new TreeMap<MessageUid, MessageMetaData>();
treeMap.put(UID, MESSAGE_META_DATA);
- MailboxListener.Event event = eventFactory.added(mailboxSession, treeMap, mailbox);
+ MailboxListener.Event event = eventFactory.added(mailboxSession, treeMap, mailbox, ImmutableMap.<MessageUid, MailboxMessage>of());
byte[] serializedEvent = serializer.serializeEvent(event);
MailboxListener.Event deserializedEvent = serializer.deSerializeEvent(serializedEvent);
assertThat(deserializedEvent.getMailboxPath()).isEqualTo(event.getMailboxPath());
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
index 21992e2..480d3f4 100644
--- a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
+++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/MailboxRegistrationTest.java
@@ -37,10 +37,12 @@ import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.SimpleMessageMetaData;
import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
import org.junit.Before;
import org.junit.Test;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
public class MailboxRegistrationTest {
@@ -73,7 +75,7 @@ public class MailboxRegistrationTest {
public void AddedEventsShouldNotBeReported() {
TreeMap<MessageUid, MessageMetaData> treeMap = new TreeMap<MessageUid, MessageMetaData>();
treeMap.put(UID, new SimpleMessageMetaData(UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId()));
- MailboxListener.Event event = eventFactory.added(session, treeMap, MAILBOX);
+ MailboxListener.Event event = eventFactory.added(session, treeMap, MAILBOX, ImmutableMap.<MessageUid, MailboxMessage> of());
mailboxRegistration.event(event);
assertThat(mailboxRegistration.getImpactingEvents(UID)).isEmpty();
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index cdeef78..33c61e4 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -50,6 +50,7 @@ import org.apache.james.mailbox.store.SimpleMessageMetaData;
import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -59,6 +60,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
public class SelectedMailboxImplTest {
@@ -169,6 +171,6 @@ public class SelectedMailboxImplTest {
private void emitEvent(MailboxListener mailboxListener) {
TreeMap<MessageUid, MessageMetaData> result = new TreeMap<MessageUid, MessageMetaData>();
result.put(EMITTED_EVENT_UID, new SimpleMessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId()));
- mailboxListener.event(new EventFactory().added(mock(MailboxSession.class), result, mailbox));
+ mailboxListener.event(new EventFactory().added(mock(MailboxSession.class), result, mailbox, ImmutableMap.<MessageUid, MailboxMessage> of()));
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/server/container/util/src/main/java/org/apache/james/util/IteratorWrapper.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/IteratorWrapper.java b/server/container/util/src/main/java/org/apache/james/util/IteratorWrapper.java
new file mode 100644
index 0000000..486e796
--- /dev/null
+++ b/server/container/util/src/main/java/org/apache/james/util/IteratorWrapper.java
@@ -0,0 +1,60 @@
+/****************************************************************
+ * 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.util;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+public class IteratorWrapper<U> implements Iterator<U> {
+
+ private final Iterator<U> underlying;
+ private final List<U> entriesSeen;
+
+ public IteratorWrapper(Iterator<U> underlying) {
+ Preconditions.checkNotNull(underlying);
+ this.underlying = underlying;
+ this.entriesSeen = new ArrayList<U>();
+ }
+
+ public List<U> getEntriesSeen() {
+ return ImmutableList.copyOf(entriesSeen);
+ }
+
+ @Override
+ public boolean hasNext() {
+ return underlying.hasNext();
+ }
+
+ @Override
+ public U next() {
+ U next = underlying.next();
+ entriesSeen.add(next);
+ return next;
+ }
+
+ @Override
+ public void remove() {
+ underlying.remove();
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3c6ff2c6/server/container/util/src/test/java/org/apache/james/util/IteratorWrapperTest.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/test/java/org/apache/james/util/IteratorWrapperTest.java b/server/container/util/src/test/java/org/apache/james/util/IteratorWrapperTest.java
new file mode 100644
index 0000000..61d7f2d
--- /dev/null
+++ b/server/container/util/src/test/java/org/apache/james/util/IteratorWrapperTest.java
@@ -0,0 +1,90 @@
+/****************************************************************
+ * 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.util;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.google.common.collect.ImmutableList;
+
+public class IteratorWrapperTest {
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void getEntriesSeenShouldReturnEmptyWhenNotConsumed() {
+ ImmutableList<Integer> originalData = ImmutableList.of(1, 2, 3);
+ IteratorWrapper<Integer> integerIteratorWrapper = new IteratorWrapper<Integer>(originalData.iterator());
+
+ assertThat(integerIteratorWrapper.getEntriesSeen()).isEmpty();
+ }
+
+ @Test
+ public void getEntriesSeenShouldReturnViewOfConsumedData() {
+ ImmutableList<Integer> originalData = ImmutableList.of(1, 2, 3);
+ IteratorWrapper<Integer> integerIteratorWrapper = new IteratorWrapper<Integer>(originalData.iterator());
+
+ consume(integerIteratorWrapper);
+
+ assertThat(integerIteratorWrapper.getEntriesSeen())
+ .containsExactlyElementsOf(originalData);
+ }
+
+ @Test
+ public void getEntriesSeenShouldReturnViewOfConsumedDataWhenPartiallyConsumed() {
+ ImmutableList<Integer> originalData = ImmutableList.of(1, 2, 3);
+ IteratorWrapper<Integer> integerIteratorWrapper = new IteratorWrapper<Integer>(originalData.iterator());
+
+ integerIteratorWrapper.next();
+ integerIteratorWrapper.next();
+
+ assertThat(integerIteratorWrapper.getEntriesSeen())
+ .containsOnly(1, 2);
+ }
+
+ @Test
+ public void getEntriesSeenShouldReturnEmptyWhenSuppliedEmpty() {
+ ImmutableList<Integer> originalData = ImmutableList.of();
+ IteratorWrapper<Integer> integerIteratorWrapper = new IteratorWrapper<Integer>(originalData.iterator());
+
+ consume(integerIteratorWrapper);
+
+ assertThat(integerIteratorWrapper.getEntriesSeen())
+ .containsExactlyElementsOf(originalData);
+ }
+
+ @Test
+ public void constructorShouldThrowOnNull() {
+ expectedException.expect(NullPointerException.class);
+
+ new IteratorWrapper<Integer>(null);
+ }
+
+ private void consume(IteratorWrapper<Integer> integerIteratorWrapper) {
+ while (integerIteratorWrapper.hasNext()) {
+ integerIteratorWrapper.next();
+ }
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org