Author: norman
Date: Wed Nov  3 19:43:58 2010
New Revision: 1030632

URL: http://svn.apache.org/viewvc?rev=1030632&view=rev
Log:
Remove sendMail method from MailServer interface (JAMES-1110)

Modified:
    
james/server/trunk/core-api/src/main/java/org/apache/james/services/MailServer.java
    
james/server/trunk/core-function/src/main/java/org/apache/james/JamesMailServer.java
    
james/server/trunk/core-library/src/test/java/org/apache/james/services/MockMailServer.java
    james/server/trunk/fetchmail/pom.xml
    
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchMail.java
    
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
    
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
    
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java
    
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ProcessorAbstract.java
    
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/JamesMailetContext.java
    
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/AbstractSMTPServerTest.java
    
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java

Modified: 
james/server/trunk/core-api/src/main/java/org/apache/james/services/MailServer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-api/src/main/java/org/apache/james/services/MailServer.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/core-api/src/main/java/org/apache/james/services/MailServer.java
 (original)
+++ 
james/server/trunk/core-api/src/main/java/org/apache/james/services/MailServer.java
 Wed Nov  3 19:43:58 2010
@@ -21,9 +21,7 @@
 
 package org.apache.james.services;
 
-import javax.mail.MessagingException;
 
-import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
 /**
@@ -33,16 +31,6 @@ import org.apache.mailet.MailAddress;
  * @version This is $Revision$
  */
 public interface MailServer{
-
-    /**
-     *  Pass a Mail to this MailServer for processing
-     *  
-     * @param mail the Mail to be processed
-     * @throws MessagingException
-     */
-    void sendMail(Mail mail)
-        throws MessagingException;
-   
   
     /**
      * Generate a new identifier/name for a mail being processed by this 
server.

Modified: 
james/server/trunk/core-function/src/main/java/org/apache/james/JamesMailServer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-function/src/main/java/org/apache/james/JamesMailServer.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/core-function/src/main/java/org/apache/james/JamesMailServer.java
 (original)
+++ 
james/server/trunk/core-function/src/main/java/org/apache/james/JamesMailServer.java
 Wed Nov  3 19:43:58 2010
@@ -26,7 +26,6 @@ import java.util.Locale;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
-import javax.mail.MessagingException;
 import javax.mail.internet.ParseException;
 
 import org.apache.commons.configuration.ConfigurationException;
@@ -35,12 +34,8 @@ import org.apache.commons.logging.Log;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.lifecycle.Configurable;
-import org.apache.james.lifecycle.LifecycleUtil;
 import org.apache.james.lifecycle.LogEnabled;
-import org.apache.james.queue.api.MailQueue;
-import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.services.MailServer;
-import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
 /**
@@ -82,11 +77,7 @@ public class JamesMailServer
 
     private Log logger;
 
-    private DNSService dns;
-
-    private MailQueueFactory queueFactory;
-    
-    private MailQueue queue;
+    private DNSService dns;    
 
     private MailAddress postmaster;
 
@@ -100,11 +91,6 @@ public class JamesMailServer
         this.dns = dns;
     }
     
-    @Resource(name="mailQueueFactory")
-    public void setMailQueueFactory(MailQueueFactory queueFactory) {
-        this.queueFactory = queueFactory;
-    }
-    
     /*
      * (non-Javadoc)
      * @see 
org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
@@ -126,8 +112,6 @@ public class JamesMailServer
     public void init() throws Exception {
 
         logger.info("JAMES init...");                
-
-        queue = queueFactory.getQueue("spool");
         
         if (conf.getKeys("usernames").hasNext()) {
                throw new ConfigurationException("<usernames> parameter in 
James block was removed. Please configure this data in UsersRepository block");
@@ -190,30 +174,6 @@ public class JamesMailServer
  
 
     /**
-     * @see org.apache.james.services.MailServer#sendMail(Mail)
-     */
-    public void sendMail(Mail mail) throws MessagingException {
-        try {
-            queue.enQueue(mail);
-                        
-        } catch (Exception e) {
-            logger.error("Error storing message: " + e.getMessage(),e);
-            LifecycleUtil.dispose(mail);
-
-            throw new MessagingException("Exception spooling message: " + 
e.getMessage(), e);
-
-        }
-        if (logger.isDebugEnabled()) {
-            StringBuffer logBuffer =
-                new StringBuffer(64)
-                        .append("Mail ")
-                        .append(mail.getName())
-                        .append(" pushed in spool");
-            logger.debug(logBuffer.toString());
-        }
-    }
-
-    /**
      * <p>Note that this method ensures that James cannot be run in a 
distributed
      * fashion.</p>
      * <p>Two instances may return the same ID. 

Modified: 
james/server/trunk/core-library/src/test/java/org/apache/james/services/MockMailServer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/test/java/org/apache/james/services/MockMailServer.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/core-library/src/test/java/org/apache/james/services/MockMailServer.java
 (original)
+++ 
james/server/trunk/core-library/src/test/java/org/apache/james/services/MockMailServer.java
 Wed Nov  3 19:43:58 2010
@@ -19,39 +19,17 @@
 
 package org.apache.james.services;
 
-import java.util.concurrent.LinkedBlockingQueue;
 
-import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 
-import org.apache.james.lifecycle.Disposable;
-import org.apache.james.lifecycle.LifecycleUtil;
-import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.MailUtil;
 
-public class MockMailServer implements MailServer, Disposable {
+public class MockMailServer implements MailServer {
 
-    private int m_maxMessageSizeBytes = 0;
-
-    private final LinkedBlockingQueue<Mail> mails = new 
LinkedBlockingQueue<Mail>();
     
     private boolean virtualHosting;
 
-    private Mail lastMail;
-
-
-    public void sendMail(Mail mail) throws MessagingException {
-        int bodySize = mail.getMessage().getSize();
-        if (m_maxMessageSizeBytes != 0 && m_maxMessageSizeBytes < bodySize) 
throw new MessagingException("message size exception");
-        
-        try {
-            this.lastMail = mail;
-            mails.put(mail);
-        } catch (InterruptedException e) {
-            throw new MessagingException("Unable to queue", e);
-        }
-    }
 
     public synchronized String getId() {
         return MailUtil.newId();
@@ -60,29 +38,6 @@ public class MockMailServer implements M
     public boolean isLocalServer(String serverName) {
         return "localhost".equals(serverName);
     }
-
-    public Mail getLastMail()
-    {
-        if (mails.size() == 0) return null; 
-        return lastMail;
-      
-    }
-
-    public void setMaxMessageSizeBytes(int maxMessageSizeBytes) {
-        m_maxMessageSizeBytes = maxMessageSizeBytes;
-    }
-
-    public void dispose() {
-        while(mails.isEmpty() == false) {
-            try {
-                LifecycleUtil.dispose(mails.take());
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-        
-    }
-
     
     public void setVirtualHosting(boolean virtualHosting) {
         this.virtualHosting = virtualHosting;

Modified: james/server/trunk/fetchmail/pom.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail/pom.xml?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- james/server/trunk/fetchmail/pom.xml (original)
+++ james/server/trunk/fetchmail/pom.xml Wed Nov  3 19:43:58 2010
@@ -30,6 +30,10 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.james</groupId>
+      <artifactId>james-server-queue-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.james</groupId>
       <artifactId>james-server-core-api</artifactId>
     </dependency>
     <dependency>

Modified: 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchMail.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchMail.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchMail.java
 (original)
+++ 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchMail.java
 Wed Nov  3 19:43:58 2010
@@ -30,7 +30,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
-import javax.annotation.Resource;
 import javax.mail.MessagingException;
 import javax.mail.Session;
 
@@ -42,6 +41,7 @@ import org.apache.commons.logging.Log;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.lifecycle.Configurable;
 import org.apache.james.lifecycle.LogEnabled;
+import org.apache.james.queue.api.MailQueue;
 import org.apache.james.services.MailServer;
 import org.apache.james.user.api.UsersRepository;
 
@@ -404,6 +404,8 @@ public class FetchMail implements Runnab
     private DNSService dnsServer;
 
     private Log logger;
+
+    private MailQueue queue;
     
     /**
      * Constructor for POP3mail.
@@ -657,18 +659,15 @@ public class FetchMail implements Runnab
     }
     
     
-    @Resource(name="dnsservice")
     public void setDNSService(DNSService dns) {
         this.dnsServer = dns;
     }
 
 
-    @Resource(name="mailserver")
     public void setMailServer(MailServer mailserver) {
         this.fieldServer = mailserver;
     }
    
-    @Resource(name="localusersrepository")
     public void setUsersRepository(UsersRepository urepos) {
         this.fieldLocalUsers = urepos;
     }
@@ -992,5 +991,13 @@ public class FetchMail implements Runnab
             }
         }
     }    
+    
+    public void setMailQueue(MailQueue queue) {
+        this.queue = queue;
+    }
+    
+    public MailQueue getMailQueue() {
+        return queue;
+    }
 
 }

Modified: 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchScheduler.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
 (original)
+++ 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/FetchScheduler.java
 Wed Nov  3 19:43:58 2010
@@ -38,6 +38,8 @@ import org.apache.commons.logging.Log;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.lifecycle.Configurable;
 import org.apache.james.lifecycle.LogEnabled;
+import org.apache.james.queue.api.MailQueue;
+import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.services.MailServer;
 import org.apache.james.user.api.UsersRepository;
 
@@ -78,6 +80,17 @@ public class FetchScheduler implements F
     
     private Log logger;
 
+
+    private MailQueue queue;
+    private MailQueueFactory queueFactory;
+ 
+
+    
+    @Resource(name="mailQueueFactory")
+    public void setMailQueueFactory(MailQueueFactory queueFactory) {
+        this.queueFactory = queueFactory;
+    }
+
     @Resource(name="scheduler")
     public void setScheduledExecutorService(ScheduledExecutorService 
scheduler) {
         this.scheduler = scheduler;
@@ -116,6 +129,7 @@ public class FetchScheduler implements F
         enabled = conf.getBoolean("[...@enabled]", false);
         if (enabled)
         {
+            queue = queueFactory.getQueue(MailQueueFactory.SPOOL);
 
             List<HierarchicalConfiguration> fetchConfs = 
conf.configurationsAt("fetch");
             for (int i = 0; i < fetchConfs.size(); i++)
@@ -130,7 +144,7 @@ public class FetchScheduler implements F
                 fetcher.setDNSService(dns);
                 fetcher.setMailServer(mailserver);
                 fetcher.setUsersRepository(urepos);
-                
+                fetcher.setMailQueue(queue);
                 fetcher.configure(fetchConf);
                 
                 // initialize scheduling

Modified: 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
 (original)
+++ 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java
 Wed Nov  3 19:43:58 2010
@@ -946,8 +946,8 @@ public class MessageProcessor extends Pr
     @SuppressWarnings("unchecked")
     protected void sendMail(Mail mail) throws MessagingException
     {
-        // send the mail
-        getServer().sendMail(mail);
+        // queue the mail
+        getMailQueue().enQueue(mail);
 
         // Update the flags of the received message
         if (!isLeave())

Modified: 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java
 (original)
+++ 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ParsedConfiguration.java
 Wed Nov  3 19:43:58 2010
@@ -32,6 +32,7 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.logging.Log;
 import org.apache.james.dnsservice.api.DNSService;
+import org.apache.james.queue.api.MailQueue;
 import org.apache.james.services.MailServer;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.MailAddress;
@@ -308,6 +309,8 @@ class ParsedConfiguration
      */
     private DNSService dnsServer;
 
+    private MailQueue queue;
+
 
 
     /**
@@ -1180,5 +1183,13 @@ protected void setDNSServer(DNSService d
         fieldRejectRemoteReceivedHeaderInvalid =
             rejectRemoteReceivedHeaderInvalid;
     }
+    
+    public void setMailQueue(MailQueue queue) {
+        this.queue = queue;
+    }
+    
+    public MailQueue getMailQueue() {
+        return queue;
+    }
 
 }

Modified: 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ProcessorAbstract.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ProcessorAbstract.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ProcessorAbstract.java
 (original)
+++ 
james/server/trunk/fetchmail/src/main/java/org/apache/james/fetchmail/ProcessorAbstract.java
 Wed Nov  3 19:43:58 2010
@@ -29,6 +29,7 @@ import javax.mail.Session;
 
 import org.apache.commons.logging.Log;
 import org.apache.james.dnsservice.api.DNSService;
+import org.apache.james.queue.api.MailQueue;
 import org.apache.james.services.MailServer;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.MailAddress;
@@ -595,5 +596,8 @@ abstract public class ProcessorAbstract
         return getConfiguration().getMaxMessageSizeLimit();
     }
     
+    protected MailQueue getMailQueue() {
+        return getConfiguration().getMailQueue();
+    }
 
 }

Modified: 
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/JamesMailetContext.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/JamesMailetContext.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/JamesMailetContext.java
 (original)
+++ 
james/server/trunk/mailetcontainer-library/src/main/java/org/apache/james/mailetcontainer/lib/JamesMailetContext.java
 Wed Nov  3 19:43:58 2010
@@ -43,6 +43,7 @@ import org.apache.james.dnsservice.api.D
 import org.apache.james.dnsservice.api.TemporaryResolutionException;
 import org.apache.james.lifecycle.LifecycleUtil;
 import org.apache.james.lifecycle.LogEnabled;
+import org.apache.james.mailetcontainer.api.MailProcessor;
 import org.apache.james.services.MailServer;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.mailet.HostAddress;
@@ -65,11 +66,19 @@ public class JamesMailetContext implemen
 
     private UsersRepository localusers;
 
+    private MailProcessor processorList;
+
     @Resource(name = "mailserver")
     public void setMailServer(MailServer mailServer) {
         this.mailServer = mailServer;
     }
 
+    @Resource(name="mailProcessor")
+    public void setMailProcessor(MailProcessor processorList) {
+        this.processorList = processorList;
+    }
+    
+    
     @Resource(name = "dnsservice")
     public void setDNSService(DNSService dns) {
         this.dns = dns;
@@ -363,11 +372,13 @@ public class JamesMailetContext implemen
     }
 
     /*
+     * TODO: Should we use the MailProcessorList or the MailQueue here ?
+     * 
      * (non-Javadoc)
      * @see org.apache.mailet.MailetContext#sendMail(org.apache.mailet.Mail)
      */
     public void sendMail(Mail mail) throws MessagingException {
-        mailServer.sendMail(mail);
+        processorList.service(mail);
     }
 
     /*

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=1030632&r1=1030631&r2=1030632&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:43:58 2010
@@ -181,7 +181,7 @@ public abstract class AbstractSMTPServer
         
         initSMTPServer(testConfiguration);
         
-        
m_mailServer.setMaxMessageSizeBytes(m_testConfiguration.getMaxMessageSize() * 
1024);
+        
//m_mailServer.setMaxMessageSizeBytes(m_testConfiguration.getMaxMessageSize() * 
1024);
     }
 
 
@@ -308,7 +308,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.sendCommand("EHLO " + InetAddress.getLocalHost());
         String[] capabilityRes = smtpProtocol.getReplyStrings();
@@ -344,7 +344,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.sendCommand("EHLO " + InetAddress.getLocalHost());
         String[] capabilityRes = smtpProtocol.getReplyStrings();

Modified: 
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java?rev=1030632&r1=1030631&r2=1030632&view=diff
==============================================================================
--- 
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
 (original)
+++ 
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/ValidRcptHandlerTest.java
 Wed Nov  3 19:43:58 2010
@@ -85,13 +85,6 @@ public class ValidRcptHandlerTest extend
 
        
 
-            public void sendMail(Mail mail) throws MessagingException {
-                // TODO Auto-generated method stub
-                
-            }
-
-           
-
             public boolean supportVirtualHosting() {
                 // TODO Auto-generated method stub
                 return false;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to