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 bt...@apache.org on 2016/05/19 10:06:08 UTC
[1/4] james-project git commit: JAMES-1727 Memory mail queue should
copy mails instead of just wrapping them
Repository: james-project
Updated Branches:
refs/heads/master fef500291 -> f6ba5d502
JAMES-1727 Memory mail queue should copy mails instead of just wrapping them
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6090fa49
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6090fa49
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6090fa49
Branch: refs/heads/master
Commit: 6090fa4995b0d24079b1bbcca70c21720d574662
Parents: fef5002
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Apr 27 17:18:20 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu May 19 10:15:57 2016 +0700
----------------------------------------------------------------------
.../james/modules/server/MemoryMailQueueFactory.java | 9 ++++++++-
.../james/server/MemoryMailQueueFactoryTest.java | 14 ++++++++++----
2 files changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/6090fa49/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
index 39846ed..df24931 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
@@ -24,6 +24,9 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
+import javax.mail.MessagingException;
+
+import org.apache.james.core.MailImpl;
import org.apache.james.queue.api.MailQueue;
import org.apache.james.queue.api.MailQueueFactory;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
@@ -77,7 +80,11 @@ public class MemoryMailQueueFactory implements MailQueueFactory {
@Override
public void enQueue(Mail mail) throws MailQueueException {
- mailItems.addFirst(new MemoryMailQueueItem(mail));
+ try {
+ mailItems.addFirst(new MemoryMailQueueItem(new MailImpl(mail)));
+ } catch (MessagingException e) {
+ throw new MailQueueException("Error while copying mail " + mail.getName(), e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/6090fa49/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java b/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
index 560378f..34133e6 100644
--- a/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
+++ b/server/container/guice/memory-guice/src/test/java/org/apache/james/server/MemoryMailQueueFactoryTest.java
@@ -45,6 +45,8 @@ public class MemoryMailQueueFactoryTest {
public static final String KEY = "key";
public static final String BIS = "bis";
+ public static final String NAME_1 = "Name1";
+ public static final String NAME_2 = "Name2";
private MemoryMailQueueFactory memoryMailQueueFactory;
private ExecutorService executorService;
@@ -88,24 +90,28 @@ public class MemoryMailQueueFactoryTest {
@Test
public void dequeueShouldWork() throws Exception{
Mail mail = new FakeMail();
+ mail.setName(NAME_1);
memoryMailQueueFactory.getQueue(KEY).enQueue(mail);
- assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail()).isEqualTo(mail);
+ assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail().getName()).startsWith(NAME_1);
}
@Test
public void dequeueShouldWorkWithMultipleMessages() throws Exception{
Mail mail1 = new FakeMail();
Mail mail2 = new FakeMail();
+ mail1.setName(NAME_1);
+ mail2.setName(NAME_2);
memoryMailQueueFactory.getQueue(KEY).enQueue(mail1);
memoryMailQueueFactory.getQueue(KEY).enQueue(mail2);
- assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail()).isEqualTo(mail2);
- assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail()).isEqualTo(mail1);
+ assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail().getName()).startsWith(NAME_2);
+ assertThat(memoryMailQueueFactory.getQueue(KEY).deQueue().getMail().getName()).startsWith(NAME_1);
}
@Test(timeout = 20000)
public void deQueueShouldWaitForAMailToBeEnqueued() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
Mail mail = new FakeMail();
+ mail.setName(NAME_1);
executorService.submit(() -> {
try {
latch.await();
@@ -117,6 +123,6 @@ public class MemoryMailQueueFactoryTest {
Future<MailQueueItem> tryDequeue = executorService.submit(() -> memoryMailQueueFactory.getQueue(KEY).deQueue());
assertThatThrownBy(() -> tryDequeue.get(100, TimeUnit.MILLISECONDS)).isInstanceOf(TimeoutException.class);
latch.countDown();
- assertThat(tryDequeue.get().getMail()).isEqualTo(mail);
+ assertThat(tryDequeue.get().getMail().getName()).startsWith(NAME_1);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[4/4] james-project git commit: JAMES-1727 Camel processors should be
bound in scope singleton
Posted by bt...@apache.org.
JAMES-1727 Camel processors should be bound in scope singleton
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f6ba5d50
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f6ba5d50
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f6ba5d50
Branch: refs/heads/master
Commit: f6ba5d502abcb5ff632ca2ec04736cc36e81657a
Parents: eb3bfd0
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu May 19 15:17:30 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu May 19 15:22:33 2016 +0700
----------------------------------------------------------------------
.../james/modules/server/CamelMailetContainerModule.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/f6ba5d50/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
index b3aede8..de270d4 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
@@ -47,6 +47,7 @@ import com.google.common.collect.ImmutableList;
import com.google.inject.AbstractModule;
import com.google.inject.Inject;
import com.google.inject.Provides;
+import com.google.inject.Scopes;
import com.google.inject.Singleton;
import com.google.inject.multibindings.Multibinder;
@@ -58,10 +59,15 @@ public class CamelMailetContainerModule extends AbstractModule {
@Override
protected void configure() {
- bind(MailProcessor.class).to(CamelCompositeProcessor.class).in(Singleton.class);
+ bind(CamelCompositeProcessor.class).in(Scopes.SINGLETON);
+ bind(MailProcessor.class).to(CamelCompositeProcessor.class);
+
+ bind(JamesMailSpooler.class).in(Scopes.SINGLETON);
bind(MailSpoolerMBean.class).to(JamesMailSpooler.class);
+
bind(MailetLoader.class).to(GuiceMailetLoader.class);
bind(MatcherLoader.class).to(GuiceMatcherLoader.class);
+
Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(MailetModuleConfigurationPerformer.class);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/4] james-project git commit: JAMES-1727 Sending mail from a
mailetContext should append to the mailQueue
Posted by bt...@apache.org.
JAMES-1727 Sending mail from a mailetContext should append to the mailQueue
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7d2ef261
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7d2ef261
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7d2ef261
Branch: refs/heads/master
Commit: 7d2ef26134a960ebf2cbca0734661029ffaa300d
Parents: 6090fa4
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Apr 26 15:05:29 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu May 19 10:18:18 2016 +0700
----------------------------------------------------------------------
.../modules/server/CamelMailetContainerModule.java | 6 +++---
.../mailetcontainer/impl/JamesMailetContext.java | 14 ++++++--------
2 files changed, 9 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/7d2ef261/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
index 3974f8f..b3aede8 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/CamelMailetContainerModule.java
@@ -32,6 +32,7 @@ import org.apache.james.mailetcontainer.api.jmx.MailSpoolerMBean;
import org.apache.james.mailetcontainer.impl.JamesMailSpooler;
import org.apache.james.mailetcontainer.impl.JamesMailetContext;
import org.apache.james.mailetcontainer.impl.camel.CamelCompositeProcessor;
+import org.apache.james.queue.api.MailQueueFactory;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.utils.ConfigurationPerformer;
import org.apache.james.utils.ConfigurationProvider;
@@ -66,14 +67,14 @@ public class CamelMailetContainerModule extends AbstractModule {
@Provides
@Singleton
- private MailetContext provideMailetContext(MailProcessor processorList,
+ private MailetContext provideMailetContext(MailQueueFactory mailQueueFactory,
DNSService dns,
UsersRepository localusers,
DomainList domains) {
JamesMailetContext jamesMailetContext = new JamesMailetContext();
jamesMailetContext.setLog(MAILET_LOGGER);
jamesMailetContext.setDNSService(dns);
- jamesMailetContext.setMailProcessor(processorList);
+ jamesMailetContext.retrieveRootMailQueue(mailQueueFactory);
jamesMailetContext.setUsersRepository(localusers);
jamesMailetContext.setDomainList(domains);
return jamesMailetContext;
@@ -110,7 +111,6 @@ public class CamelMailetContainerModule extends AbstractModule {
jamesMailSpooler.init();
mailetContext.setLog(MAILET_LOGGER);
mailetContext.configure(configurationProvider.getConfiguration("mailetcontainer").configurationAt("context"));
- mailetContext.setMailProcessor(camelCompositeProcessor);
} catch (Exception e) {
Throwables.propagate(e);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/7d2ef261/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
index 732a303..7afe0b5 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
@@ -51,7 +51,8 @@ import org.apache.james.domainlist.api.DomainListException;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.lifecycle.api.LogEnabled;
-import org.apache.james.mailetcontainer.api.MailProcessor;
+import org.apache.james.queue.api.MailQueue;
+import org.apache.james.queue.api.MailQueueFactory;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
import org.apache.mailet.HostAddress;
@@ -75,15 +76,15 @@ public class JamesMailetContext implements MailetContext, LogEnabled, Configurab
private UsersRepository localusers;
- private MailProcessor processorList;
+ private MailQueue rootMailQueue;
private DomainList domains;
private MailAddress postmaster;
@Inject
- public void setMailProcessor(MailProcessor processorList) {
- this.processorList = processorList;
+ public void retrieveRootMailQueue(MailQueueFactory mailQueueFactory) {
+ this.rootMailQueue = mailQueueFactory.getQueue(MailQueueFactory.SPOOL);
}
@Inject
@@ -402,12 +403,9 @@ public class JamesMailetContext implements MailetContext, LogEnabled, Configurab
sendMail(sender, recipients, message, Mail.DEFAULT);
}
- /**
- * TODO: Should we use the MailProcessorList or the MailQueue here ?
- */
@Override
public void sendMail(Mail mail) throws MessagingException {
- processorList.service(mail);
+ rootMailQueue.enQueue(mail);
}
public void sendMail(MailAddress sender, Collection<MailAddress> recipients, MimeMessage message, String state) throws MessagingException {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/4] james-project git commit: JAMES-1727 Changing of processor
should not imply using the mail queue
Posted by bt...@apache.org.
JAMES-1727 Changing of processor should not imply using the mail queue
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/eb3bfd07
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/eb3bfd07
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/eb3bfd07
Branch: refs/heads/master
Commit: eb3bfd0727478c54ce1c2d9dc6572f81e1ad7680
Parents: 7d2ef26
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Apr 27 14:14:57 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu May 19 10:18:21 2016 +0700
----------------------------------------------------------------------
server/mailet/mailetcontainer-camel/pom.xml | 5 +++++
.../mailetcontainer/impl/camel/CamelCompositeProcessor.java | 1 +
.../mailetcontainer/lib/AbstractStateMailetProcessor.java | 7 ++++++-
.../mailetcontainer/impl/camel/CamelMailetProcessorTest.java | 4 ++++
4 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/eb3bfd07/server/mailet/mailetcontainer-camel/pom.xml
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/pom.xml b/server/mailet/mailetcontainer-camel/pom.xml
index 9c3c9c4..6de3849 100644
--- a/server/mailet/mailetcontainer-camel/pom.xml
+++ b/server/mailet/mailetcontainer-camel/pom.xml
@@ -128,6 +128,11 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
http://git-wip-us.apache.org/repos/asf/james-project/blob/eb3bfd07/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessor.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessor.java
index 6844cb4..80c5877 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessor.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelCompositeProcessor.java
@@ -108,6 +108,7 @@ public class CamelCompositeProcessor extends AbstractStateCompositeProcessor imp
processor.setMailetLoader(mailetLoader);
processor.setMatcherLoader(matcherLoader);
processor.configure(config);
+ processor.setRootMailProcessor(this);
processor.init();
return processor;
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/eb3bfd07/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java
index 9e93b16..ab84ba1 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessor.java
@@ -62,6 +62,7 @@ public abstract class AbstractStateMailetProcessor implements MailProcessor, Con
private MailetContext mailetContext;
private MatcherLoader matcherLoader;
+ private MailProcessor rootMailProcessor;
private final List<MailetProcessorListener> listeners = Collections.synchronizedList(new ArrayList<MailetProcessorListener>());
private JMXStateMailetProcessorListener jmxListener;
private boolean enableJmx = true;
@@ -75,6 +76,10 @@ public abstract class AbstractStateMailetProcessor implements MailProcessor, Con
this.matcherLoader = matcherLoader;
}
+ public void setRootMailProcessor(MailProcessor rootMailProcessor) {
+ this.rootMailProcessor = rootMailProcessor;
+ }
+
@Inject
public void setMailetContext(MailetContext mailetContext) {
this.mailetContext = mailetContext;
@@ -157,7 +162,7 @@ public abstract class AbstractStateMailetProcessor implements MailProcessor, Con
* @throws MessagingException
*/
protected void toProcessor(Mail mail) throws MessagingException {
- mailetContext.sendMail(mail);
+ rootMailProcessor.service(mail);
}
protected Logger getLogger() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/eb3bfd07/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
index 261980b..8afae28 100644
--- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
+++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/camel/CamelMailetProcessorTest.java
@@ -19,8 +19,11 @@
package org.apache.james.mailetcontainer.impl.camel;
+import static org.mockito.Mockito.mock;
+
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.mailetcontainer.api.MailProcessor;
import org.apache.james.mailetcontainer.api.mock.MockMailetContext;
import org.apache.james.mailetcontainer.api.mock.MockMailetLoader;
import org.apache.james.mailetcontainer.api.mock.MockMatcherLoader;
@@ -45,6 +48,7 @@ public class CamelMailetProcessorTest extends AbstractStateMailetProcessorTest {
processor.setMailetContext(new MockMailetContext());
processor.setMailetLoader(new MockMailetLoader());
processor.setMatcherLoader(new MockMatcherLoader());
+ processor.setRootMailProcessor(mock(MailProcessor.class));
processor.configure(configuration);
processor.init();
return processor;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org