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