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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]