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 no...@apache.org on 2010/11/03 20:17:46 UTC
svn commit: r1030622 - in /james/server/trunk: ./
queue-api/src/test/java/org/apache/james/queue/api/ smtpserver/
smtpserver/src/main/java/org/apache/james/smtpserver/
smtpserver/src/test/java/org/apache/james/smtpserver/
Author: norman
Date: Wed Nov 3 19:17:46 2010
New Revision: 1030622
URL: http://svn.apache.org/viewvc?rev=1030622&view=rev
Log:
Use queue-api to queue mail. Part of JAMES-1110
Modified:
james/server/trunk/pom.xml
james/server/trunk/queue-api/src/test/java/org/apache/james/queue/api/MockMailQueue.java
james/server/trunk/smtpserver/pom.xml
james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SendMailHandler.java
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
Modified: james/server/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=1030622&r1=1030621&r2=1030622&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Wed Nov 3 19:17:46 2010
@@ -247,6 +247,13 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-queue-api</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-queue-jms</artifactId>
<version>${project.version}</version>
</dependency>
Modified: james/server/trunk/queue-api/src/test/java/org/apache/james/queue/api/MockMailQueue.java
URL: http://svn.apache.org/viewvc/james/server/trunk/queue-api/src/test/java/org/apache/james/queue/api/MockMailQueue.java?rev=1030622&r1=1030621&r2=1030622&view=diff
==============================================================================
--- james/server/trunk/queue-api/src/test/java/org/apache/james/queue/api/MockMailQueue.java (original)
+++ james/server/trunk/queue-api/src/test/java/org/apache/james/queue/api/MockMailQueue.java Wed Nov 3 19:17:46 2010
@@ -26,7 +26,6 @@ import java.util.concurrent.ScheduledExe
import java.util.concurrent.TimeUnit;
import org.apache.james.queue.api.MailQueue;
-import org.apache.james.queue.api.MailQueue.MailQueueException;
import org.apache.mailet.Mail;
public class MockMailQueue implements MailQueue{
@@ -34,6 +33,7 @@ public class MockMailQueue implements Ma
private final LinkedBlockingQueue<Mail> queue = new LinkedBlockingQueue<Mail>();
private boolean throwException;
private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+ private Mail lastMail;
/**
* Throw an {@link MailQueueException} on next operation
@@ -49,6 +49,7 @@ public class MockMailQueue implements Ma
}
try {
final Mail mail = queue.take();
+ if (queue.isEmpty()) lastMail = null;
return new MailQueueItem() {
public Mail getMail() {
@@ -60,6 +61,7 @@ public class MockMailQueue implements Ma
}
};
+
} catch (InterruptedException e) {
throw new MailQueueException("Mock",e);
}
@@ -70,11 +72,13 @@ public class MockMailQueue implements Ma
throwException = false;
throw new MailQueueException("Mock");
}
+
scheduler.schedule(new Runnable() {
public void run() {
try {
queue.put(mail);
+ lastMail = mail;
} catch (InterruptedException e) {
e.printStackTrace();
}
@@ -90,11 +94,15 @@ public class MockMailQueue implements Ma
}
try {
queue.put(mail);
+ lastMail = mail;
} catch (InterruptedException e) {
throw new MailQueueException("Mock",e);
}
}
+ public Mail getLastMail() {
+ return lastMail;
+ }
public void clear() {
queue.clear();
Modified: james/server/trunk/smtpserver/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/pom.xml?rev=1030622&r1=1030621&r2=1030622&view=diff
==============================================================================
--- james/server/trunk/smtpserver/pom.xml (original)
+++ james/server/trunk/smtpserver/pom.xml Wed Nov 3 19:17:46 2010
@@ -34,6 +34,10 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-queue-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-user-api</artifactId>
</dependency>
<dependency>
@@ -115,6 +119,12 @@
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
+ <artifactId>james-server-queue-api</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.james</groupId>
<artifactId>james-server-core-library</artifactId>
<type>test-jar</type>
<scope>test</scope>
Modified: james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SendMailHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SendMailHandler.java?rev=1030622&r1=1030621&r2=1030622&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SendMailHandler.java (original)
+++ james/server/trunk/smtpserver/src/main/java/org/apache/james/smtpserver/SendMailHandler.java Wed Nov 3 19:17:46 2010
@@ -23,6 +23,7 @@ package org.apache.james.smtpserver;
import java.util.Collection;
+import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.mail.MessagingException;
@@ -30,7 +31,8 @@ import org.apache.james.protocols.smtp.S
import org.apache.james.protocols.smtp.dsn.DSNStatus;
import org.apache.james.protocols.smtp.hook.HookResult;
import org.apache.james.protocols.smtp.hook.HookReturnCode;
-import org.apache.james.services.MailServer;
+import org.apache.james.queue.api.MailQueue;
+import org.apache.james.queue.api.MailQueueFactory;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -40,23 +42,19 @@ import org.apache.mailet.MailAddress;
*/
public class SendMailHandler implements JamesMessageHook {
- private MailServer mailServer;
-
- /**
- * Gets the mail server.
- * @return the mailServer
- */
- public final MailServer getMailServer() {
- return mailServer;
- }
+ private MailQueue queue;
+ private MailQueueFactory queueFactory;
+
- /**
- * Sets the mail server.
- * @param mailServer the mailServer to set
- */
- @Resource(name="mailserver")
- public final void setMailServer(MailServer mailServer) {
- this.mailServer = mailServer;
+
+ @Resource(name="mailQueueFactory")
+ public void setMailQueueFactory(MailQueueFactory queueFactory) {
+ this.queueFactory = queueFactory;
+ }
+
+ @PostConstruct
+ public void init() {
+ queue = queueFactory.getQueue(MailQueueFactory.SPOOL);
}
/**
@@ -67,7 +65,7 @@ public class SendMailHandler implements
session.getLogger().debug("sending mail");
try {
- mailServer.sendMail(mail);
+ queue.enQueue(mail);
Collection<MailAddress> theRecipients = mail.getRecipients();
String recipientString = "";
if (theRecipients != null) {
Modified: james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java?rev=1030622&r1=1030621&r2=1030622&view=diff
==============================================================================
--- james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java (original)
+++ james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java Wed Nov 3 19:17:46 2010
@@ -42,6 +42,8 @@ import junit.framework.TestCase;
import org.apache.commons.logging.impl.SimpleLog;
import org.apache.commons.net.smtp.SMTPClient;
import org.apache.commons.net.smtp.SMTPReply;
+import org.apache.james.queue.api.MockMailQueue;
+import org.apache.james.queue.api.MockMailQueueFactory;
import org.apache.james.services.MockJSR250Loader;
import org.apache.james.dnsservice.api.DNSService;
import org.apache.james.lifecycle.LifecycleUtil;
@@ -148,6 +150,8 @@ public abstract class AbstractSMTPServer
protected MockFileSystem fileSystem;
protected SMTPServerDNSServiceAdapter dnsAdapter;
protected JamesProtocolHandlerChain chain;
+ protected MockMailQueueFactory queueFactory;
+ protected MockMailQueue queue;
public AbstractSMTPServerTest() {
super("AsyncSMTPServerTest");
@@ -183,11 +187,12 @@ public abstract class AbstractSMTPServer
protected void tearDown() throws Exception {
LifecycleUtil.dispose(m_mailServer);
+ queue.clear();
super.tearDown();
}
public void verifyLastMail(String sender, String recipient, MimeMessage msg) throws IOException, MessagingException {
- Mail mailData = m_mailServer.getLastMail();
+ Mail mailData = queue.getLastMail();
assertNotNull("mail received by mail server", mailData);
if (sender == null && recipient == null && msg == null)
@@ -291,6 +296,9 @@ public abstract class AbstractSMTPServer
});
m_serviceManager.put("org.apache.james.smtpserver.protocol.DNSService", dnsAdapter);
+ queueFactory = new MockMailQueueFactory();
+ queue = (MockMailQueue) queueFactory.getQueue(MockMailQueueFactory.SPOOL);
+ m_serviceManager.put("mailQueueFactory", queueFactory);
}
public void testSimpleMailSendWithEHLO() throws Exception {
@@ -323,7 +331,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.disconnect();
// mail was propagated by SMTPServer
- assertNotNull("mail received by mail server", m_mailServer.getLastMail());
+ assertNotNull("mail received by mail server", queue.getLastMail());
}
@@ -389,7 +397,7 @@ public abstract class AbstractSMTPServer
* not cloning the message (added a MimeMessageCopyOnWriteProxy there)
* System.gc();
*
- * int size = m_mailServer.getLastMail().getMessage().getSize();
+ * int size = queue.getLastMail().getMessage().getSize();
*
* assertEquals(size, 2); }
*/
@@ -401,7 +409,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
smtpProtocol.helo(InetAddress.getLocalHost().toString());
@@ -415,7 +423,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.disconnect();
// mail was propagated by SMTPServer
- assertNotNull("mail received by mail server", m_mailServer.getLastMail());
+ assertNotNull("mail received by mail server", queue.getLastMail());
}
public void testTwoSimultaneousMails() throws Exception {
@@ -430,7 +438,7 @@ public abstract class AbstractSMTPServer
assertTrue("second connection taken", smtpProtocol2.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
smtpProtocol1.helo(InetAddress.getLocalHost().toString());
smtpProtocol2.helo(InetAddress.getLocalHost().toString());
@@ -467,7 +475,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
smtpProtocol1.helo(InetAddress.getLocalHost().toString());
@@ -506,7 +514,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
String fictionalDomain = "abgsfe3rsf.de";
String existingDomain = "james.apache.org";
@@ -564,7 +572,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
String helo1 = "abgsfe3rsf.de";
String helo2 = "james.apache.org";
@@ -603,7 +611,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
smtpProtocol1.helo(InetAddress.getLocalHost().toString());
@@ -643,7 +651,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
smtpProtocol1.helo(InetAddress.getLocalHost().toString());
@@ -667,7 +675,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
smtpProtocol1.helo(InetAddress.getLocalHost().toString());
@@ -693,7 +701,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
smtpProtocol1.helo(InetAddress.getLocalHost().toString());
@@ -791,7 +799,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
String ehlo1 = "abgsfe3rsf.de";
String ehlo2 = "james.apache.org";
@@ -828,7 +836,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
String sender1 = "mail_sender1@localhost";
smtpProtocol1.setSender(sender1);
@@ -851,7 +859,7 @@ public abstract class AbstractSMTPServer
assertTrue("first connection taken", smtpProtocol1.isConnected());
// no message there, yet
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
String sender1 = "mail_sender1@localhost";
@@ -941,7 +949,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.quit();
// mail was propagated by SMTPServer
- assertNotNull("mail received by mail server", m_mailServer.getLastMail());
+ assertNotNull("mail received by mail server", queue.getLastMail());
}
public void testAuthWithEmptySender() throws Exception {
@@ -987,7 +995,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.quit();
// mail was propagated by SMTPServer
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
}
public void testMultipleMailsAndRset() throws Exception {
@@ -1007,7 +1015,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.quit();
// mail was propagated by SMTPServer
- assertNull("no mail received by mail server", m_mailServer.getLastMail());
+ assertNull("no mail received by mail server", queue.getLastMail());
}
public void testRelayingDenied() throws Exception {
@@ -1257,7 +1265,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.quit();
// mail was propagated by SMTPServer
- assertNotNull("mail received by mail server", m_mailServer.getLastMail());
+ assertNotNull("mail received by mail server", queue.getLastMail());
}
public void testDNSRBLRejectWorks() throws Exception {
@@ -1284,7 +1292,7 @@ public abstract class AbstractSMTPServer
smtpProtocol.quit();
// mail was rejected by SMTPServer
- assertNull("mail reject by mail server", m_mailServer.getLastMail());
+ assertNull("mail reject by mail server", queue.getLastMail());
}
public void testAddressBracketsEnforcementDisabled() throws Exception {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org