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/07/18 20:19:54 UTC

svn commit: r965271 - in /james/server/trunk: mailets/src/main/java/org/apache/james/transport/matchers/ pop3server/src/main/java/org/apache/james/pop3server/core/ pop3server/src/test/java/org/apache/james/pop3server/ spoolmanager/src/main/java/org/apa...

Author: norman
Date: Sun Jul 18 18:19:54 2010
New Revision: 965271

URL: http://svn.apache.org/viewvc?rev=965271&view=rev
Log:
Introduce a MailboxPath to better handle the identification of a mailbox. This will allow us to have different namespaces later. The code is based on a patch of Tim Christian Mundt (thx). See IMAP-168

Modified:
    james/server/trunk/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java
    james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
    james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
    james/server/trunk/spoolmanager/src/main/java/org/apache/james/MailboxManagerPoster.java

Modified: james/server/trunk/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java?rev=965271&r1=965270&r2=965271&view=diff
==============================================================================
--- james/server/trunk/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java (original)
+++ james/server/trunk/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java Sun Jul 18 18:19:54 2010
@@ -29,6 +29,7 @@ import javax.mail.MessagingException;
 import org.apache.commons.logging.Log;
 import org.apache.james.api.user.JamesUser;
 import org.apache.james.api.user.UsersRepository;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.mailbox.Mailbox;
 import org.apache.james.imap.mailbox.MailboxConstants;
 import org.apache.james.imap.mailbox.MailboxManager;
@@ -170,7 +171,9 @@ abstract public class AbstractStorageQuo
         	
         });
         manager.startProcessingRequest(session);
-        Mailbox mailbox = manager.getMailbox(MailboxConstants.USER_NAMESPACE + manager.getDelimiter() + "INBOX", session);
+        Mailbox mailbox = manager.getMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE,
+                                            session.getUser().getUserName(), "INBOX"),
+                                            session);
         Iterator<MessageResult> results = mailbox.getMessages(MessageRange.all(), new FetchGroupImpl(FetchGroup.MINIMAL), session);
         
         while (results.hasNext()) {

Modified: james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java?rev=965271&r1=965270&r2=965271&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java (original)
+++ james/server/trunk/pop3server/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java Sun Jul 18 18:19:54 2010
@@ -25,6 +25,7 @@ import java.util.List;
 
 import javax.annotation.Resource;
 
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.mailbox.BadCredentialsException;
 import org.apache.james.imap.mailbox.Mailbox;
 import org.apache.james.imap.mailbox.MailboxConstants;
@@ -62,20 +63,13 @@ public class PassCmdHandler extends Rset
             String passArg = parameters;
             try {
                 MailboxSession mSession = mailboxManager.login(session.getUser(), passArg, session.getLogger());
-                StringBuffer sb = new StringBuffer();
-                sb.append(MailboxConstants.USER_NAMESPACE);
-                sb.append(mailboxManager.getDelimiter());
-                sb.append(session.getUser());
-                sb.append(mailboxManager.getDelimiter());
-                sb.append("INBOX");
-                ;
-                String mailboxName = sb.toString();
-
+                MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, session.getUser(), "INBOX");
+                
                 // check if mailbox exists.. if not just create it
-                if (mailboxManager.mailboxExists(mailboxName, mSession) == false) {
-                    mailboxManager.createMailbox(mailboxName, mSession);
+                if (mailboxManager.mailboxExists(mailboxPath, mSession) == false) {
+                    mailboxManager.createMailbox(mailboxPath, mSession);
                 }
-                Mailbox mailbox = mailboxManager.getMailbox(mailboxName, mSession);
+                Mailbox mailbox = mailboxManager.getMailbox(mailboxPath, mSession);
 
                 session.getState().put(POP3Session.MAILBOX_SESSION, mSession);
                 session.setUserMailbox(mailbox);

Modified: james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java?rev=965271&r1=965270&r2=965271&view=diff
==============================================================================
--- james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java (original)
+++ james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/AbstractAsyncPOP3ServerTest.java Sun Jul 18 18:19:54 2010
@@ -40,10 +40,12 @@ import org.apache.james.api.dnsservice.A
 import org.apache.james.api.dnsservice.DNSService;
 import org.apache.james.services.FakeLoader;
 import org.apache.james.api.user.UsersRepository;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.inmemory.InMemoryMailboxManager;
 import org.apache.james.imap.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.imap.inmemory.InMemorySubscriptionManager;
 import org.apache.james.imap.mailbox.Mailbox;
+import org.apache.james.imap.mailbox.MailboxConstants;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.store.Authenticator;
 import org.apache.james.lifecycle.LifecycleUtil;
@@ -251,12 +253,12 @@ public abstract class AbstractAsyncPOP3S
         assertEquals("Found unexpected messages", 0, list.length);
 
         m_pop3Protocol.disconnect();
-        String mailboxName = "#private.foo.INBOX";
+        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "foo", "INBOX");
         MailboxSession session = manager.login("foo", "bar", new SimpleLog("Test"));
-        if (manager.mailboxExists(mailboxName, session) == false) {
-            manager.createMailbox(mailboxName, session);
+        if (manager.mailboxExists(mailboxPath, session) == false) {
+            manager.createMailbox(mailboxPath, session);
         }
-        setupTestMails(session,manager.getMailbox(mailboxName, session));
+        setupTestMails(session,manager.getMailbox(mailboxPath, session));
         
         m_pop3Protocol.connect("127.0.0.1",m_pop3ListenerPort);
         m_pop3Protocol.login("foo", "bar");
@@ -267,7 +269,7 @@ public abstract class AbstractAsyncPOP3S
         POP3MessageInfo p3i = m_pop3Protocol.listUniqueIdentifier(1);
         assertNotNull(p3i);
         
-        manager.deleteMailbox("#private.foo.INBOX", session);
+        manager.deleteMailbox(mailboxPath, session);
 
 
     }
@@ -332,15 +334,15 @@ public abstract class AbstractAsyncPOP3S
         m_pop3Protocol.connect("127.0.0.1",m_pop3ListenerPort);
 
         m_usersRepository.addUser("foo2", "bar2");
-        
-        String mailboxName = "#private.foo2.INBOX";
+
+        MailboxPath mailboxPath = new MailboxPath(MailboxConstants.USER_NAMESPACE, "foo2", "INBOX");
         MailboxSession session = manager.login("foo2", "bar2", new SimpleLog("Test"));
         
-        if (manager.mailboxExists(mailboxName, session) == false) {
-            manager.createMailbox(mailboxName, session);
+        if (manager.mailboxExists(mailboxPath, session) == false) {
+            manager.createMailbox(mailboxPath, session);
         }
         
-        setupTestMails(session,manager.getMailbox(mailboxName, session));
+        setupTestMails(session,manager.getMailbox(mailboxPath, session));
         
         m_pop3Protocol.sendCommand("retr","1");
         assertEquals(0, m_pop3Protocol.getState());
@@ -406,7 +408,7 @@ public abstract class AbstractAsyncPOP3S
         Reader r3 = m_pop3Protocol.retrieveMessageTop(entries[0].number, 0);
         assertNotNull(r3);
         r3.close();
-        manager.deleteMailbox(mailboxName, session);
+        manager.deleteMailbox(mailboxPath, session);
     }
 
     private void setupTestMails(MailboxSession session, Mailbox mailbox) throws MessagingException {

Modified: james/server/trunk/spoolmanager/src/main/java/org/apache/james/MailboxManagerPoster.java
URL: http://svn.apache.org/viewvc/james/server/trunk/spoolmanager/src/main/java/org/apache/james/MailboxManagerPoster.java?rev=965271&r1=965270&r2=965271&view=diff
==============================================================================
--- james/server/trunk/spoolmanager/src/main/java/org/apache/james/MailboxManagerPoster.java (original)
+++ james/server/trunk/spoolmanager/src/main/java/org/apache/james/MailboxManagerPoster.java Sun Jul 18 18:19:54 2010
@@ -31,6 +31,7 @@ import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.logging.Log;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.mailbox.Mailbox;
 import org.apache.james.imap.mailbox.MailboxConstants;
 import org.apache.james.imap.mailbox.MailboxManager;
@@ -64,7 +65,7 @@ public class MailboxManagerPoster implem
     /**
      * @see org.apache.jsieve.mailet.Poster#post(java.lang.String, javax.mail.internet.MimeMessage)
      */
-    public void post(String url, MimeMessage mail)throws MessagingException {
+    public void post(String url, MimeMessage mail) throws MessagingException {
         final int endOfScheme = url.indexOf(':');
         if (endOfScheme < 0) {
             throw new MessagingException("Malformed URI");
@@ -110,13 +111,15 @@ public class MailboxManagerPoster implem
                         if (destination == null || "".equals(destination)) {
                             destination = "INBOX";
                         }
-                        final String name = mailboxManager.resolve(user, destination);
+                        if (destination.startsWith(MailboxConstants.DEFAULT_DELIMITER_STRING))
+                            destination = destination.substring(1);
+                        final MailboxPath path = new MailboxPath(MailboxConstants.USER_NAMESPACE, user, destination);
                         try
                         {
-                            if ("INBOX".equalsIgnoreCase(destination) && !(mailboxManager.mailboxExists(name, session))) {
-                                mailboxManager.createMailbox(name, session);
+                            if ("INBOX".equalsIgnoreCase(destination) && !(mailboxManager.mailboxExists(path, session))) {
+                                mailboxManager.createMailbox(path, session);
                             }
-                            final Mailbox mailbox = mailboxManager.getMailbox(name, session);
+                            final Mailbox mailbox = mailboxManager.getMailbox(path, session);
                             
                             if (mailbox == null) {
                                 final String error = "Mailbox for user " + user



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org