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 jo...@apache.org on 2006/11/18 10:45:47 UTC

svn commit: r476479 - in /james/server/sandbox/mailbox-namespaces/src: java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java

Author: joachim
Date: Sat Nov 18 01:45:46 2006
New Revision: 476479

URL: http://svn.apache.org/viewvc?view=rev&rev=476479
Log:
 - VirtualMailboxManager throws Exception when there is no mount for a mailbox name + corresponding test
 - VirtualMailboxManager.testSetSubscription

Modified:
    james/server/sandbox/mailbox-namespaces/src/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
    james/server/sandbox/mailbox-namespaces/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java

Modified: james/server/sandbox/mailbox-namespaces/src/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/mailbox-namespaces/src/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java?view=diff&rev=476479&r1=476478&r2=476479
==============================================================================
--- james/server/sandbox/mailbox-namespaces/src/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java (original)
+++ james/server/sandbox/mailbox-namespaces/src/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java Sat Nov 18 01:45:46 2006
@@ -20,11 +20,9 @@
 package org.apache.james.mailboxmanager.impl;
 
 import java.util.ArrayList;
-import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.TreeMap;
 import java.util.Map.Entry;
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
@@ -43,36 +41,45 @@
         MailboxManager {
 
     private Map mountMap = null;
-    
+
     private User user;
-    
-        
-    
+
     public VirtualMailboxManager() {
-        
+
     }
 
     Map getMountMap() {
         return mountMap;
     }
-    
+
     public void setMountMap(Map mountMap) {
-        this.mountMap=mountMap;
+        this.mountMap = mountMap;
     }
-    
-    
 
-    MailboxManager getMailboxManager(String mailboxName) throws MailboxManagerException {
+    MailboxManager getMailboxManager(String mailboxName)
+            throws MailboxManagerException {
         MailboxManager mailboxManager = null;
         Iterator it = getMountMap().entrySet().iterator();
         while (it.hasNext() && mailboxManager == null) {
             Entry entry = (Entry) it.next();
             String key = (String) entry.getKey();
             if (mailboxName.startsWith(key)) {
-                MailboxManagerFactory mailboxManagerFactory = (MailboxManagerFactory) entry.getValue();
-                mailboxManager=mailboxManagerFactory.getMailboxManagerInstance(user);
+                MailboxManagerFactory mailboxManagerFactory = (MailboxManagerFactory) entry
+                        .getValue();
+                mailboxManager = mailboxManagerFactory
+                        .getMailboxManagerInstance(user);
+                if (mailboxManager == null) {
+                    throw new MailboxManagerException(mailboxManagerFactory
+                            .getClass().getName()
+                            + " returned a null MailboxManager");
+                }
+                break;
             }
         }
+        if (mailboxManager == null) {
+            throw new MailboxManagerException("Unknown namespace for mailbox "+mailboxName);
+        }
+
         return mailboxManager;
     }
 
@@ -124,19 +131,22 @@
     public ListResult[] list(String base, String expression, boolean subscribed)
             throws MailboxManagerException {
         // TODO call only base matching managers
-        List listResults=new ArrayList();
+        List listResults = new ArrayList();
         Iterator it = getMountMap().entrySet().iterator();
-        
+
         while (it.hasNext()) {
             Entry entry = (Entry) it.next();
-            MailboxManagerFactory mailboxManagerFactory = (MailboxManagerFactory) entry.getValue();
-            MailboxManager mailboxManager=mailboxManagerFactory.getMailboxManagerInstance(user);
-            ListResult[] thisListResults=mailboxManager.list(base, expression, subscribed);
+            MailboxManagerFactory mailboxManagerFactory = (MailboxManagerFactory) entry
+                    .getValue();
+            MailboxManager mailboxManager = mailboxManagerFactory
+                    .getMailboxManagerInstance(user);
+            ListResult[] thisListResults = mailboxManager.list(base,
+                    expression, subscribed);
             for (int i = 0; i < thisListResults.length; i++) {
                 listResults.add(thisListResults[i]);
             }
         }
-        
+
         return (ListResult[]) listResults.toArray(new ListResult[0]);
     }
 
@@ -152,7 +162,7 @@
     }
 
     public void setUser(User user) {
-        this.user=user;
+        this.user = user;
     }
 
 }

Modified: james/server/sandbox/mailbox-namespaces/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/mailbox-namespaces/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java?view=diff&rev=476479&r1=476478&r2=476479
==============================================================================
--- james/server/sandbox/mailbox-namespaces/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java (original)
+++ james/server/sandbox/mailbox-namespaces/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java Sat Nov 18 01:45:46 2006
@@ -19,11 +19,8 @@
 
 package org.apache.james.mailboxmanager.impl;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
@@ -84,7 +81,12 @@
                 .getMailboxManager("#user.t1.t2.t3"));
         assertSame(manager[4], virtualMailboxManager
                 .getMailboxManager("#user.t1.t2.t3.t4"));
-        assertNull(virtualMailboxManager.getMailboxManager("#other"));
+        try {
+            virtualMailboxManager.getMailboxManager("#other");
+            fail("should throw exception");
+        } catch (MailboxManagerException e) {
+        }
+        
 
     }
 
@@ -120,6 +122,35 @@
         assertEquals(new HashSet(Arrays.asList(expected)), toNamesSet(result));
         System.out.println(toNamesSet(result));
 
+    }
+    
+    public void testSubscribe() throws MailboxManagerException {
+        String[] points = { "#mail" , "#mail.group", "#system"}; // , 
+        Mock[] mailboxManagerMocks = createMailboxManagerMocks(points.length);
+        MailboxManager[] mailboxManager = proxyMocks(mailboxManagerMocks);
+        Mock[] mailboxManagerFactoryMocks = createMailboxManagerFactoryMocks(
+                mailboxManager, 1);
+        MailboxManagerFactory[] mailboxManagerFactories = proxyFactoryMocks(mailboxManagerFactoryMocks);
+        addMountPoints(points, mailboxManagerFactories);
+        
+        String[] subscribe= {"#mail.user1.Trash","#mail.group.test","#system.go"};
+        for (int i = 0; i < subscribe.length; i++) {
+            Constraint[] args;
+            args=new Constraint[] {eq(subscribe[i]),eq(true)}; 
+            mailboxManagerMocks[i].expects(once()).method("setSubscription").with(args).isVoid();
+            
+            virtualMailboxManager.setSubscription(subscribe[i],true);            
+        }
+
+
+    }
+    
+    protected Mock[] createMailboxManagerMocks(int count) {
+        Mock[] mocks = new Mock[count];
+        for (int i = 0; i < mocks.length; i++) {
+            mocks[i]=mock(MailboxManager.class);
+        }
+        return mocks;
     }
 
     protected Mock[] createMailboxManagerFactoryMocks(MailboxManager[] manager,



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