Author: rdonkin
Date: Sun Nov 25 06:24:59 2007
New Revision: 597992

URL: http://svn.apache.org/viewvc?rev=597992&view=rev
Log:
Replaced strings in mailboxmanager.list interface with MailboxExpression 
object. 

Added:
    
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java
      - copied, changed from r597976, 
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java
    
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/
    
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java
      - copied, changed from r597976, 
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java
Removed:
    
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java
    
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java
Modified:
    
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
    
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
    
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
    
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
    
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
    
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
    
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
    
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
    
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java

Modified: 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
 (original)
+++ 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/VirtualMailboxManager.java
 Sun Nov 25 06:24:59 2007
@@ -33,6 +33,7 @@
 import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
 import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
 import org.apache.james.mailboxmanager.mailbox.MailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.mailboxmanager.manager.MailboxManagerFactory;
 import org.apache.james.services.User;
@@ -128,7 +129,7 @@
         return getMailboxManager(mailboxName).getMailboxSession(mailboxName, 
autoCreate);
     }
 
-    public ListResult[] list(String base, String expression, boolean 
subscribed)
+    public ListResult[] list(MailboxExpression expression)
             throws MailboxManagerException {
         // TODO call only base matching managers
         List listResults = new ArrayList();
@@ -140,8 +141,7 @@
                     .getValue();
             MailboxManager mailboxManager = mailboxManagerFactory
                     .getMailboxManagerInstance(user);
-            ListResult[] thisListResults = mailboxManager.list(base,
-                    expression, subscribed);
+            ListResult[] thisListResults = mailboxManager.list(expression);
             for (int i = 0; i < thisListResults.length; i++) {
                 listResults.add(thisListResults[i]);
             }

Modified: 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
 (original)
+++ 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailstore/MailStoreMailboxManager.java
 Sun Nov 25 06:24:59 2007
@@ -27,6 +27,7 @@
 import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
 import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
 import org.apache.james.mailboxmanager.mailbox.MailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.mailboxmanager.repository.MailRepositoryMailboxSession;
 import org.apache.james.services.User;
@@ -74,7 +75,7 @@
         return mailstoreMailboxCache.getMailboxSession(mailboxName);
     }
 
-    public ListResult[] list(String base, String expression, boolean 
subscribed)
+    public ListResult[] list(MailboxExpression expression)
             throws MailboxManagerException {
         return new ListResult[0];
     }

Copied: 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java
 (from r597976, 
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java)
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java?p2=james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java&p1=james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java&r1=597976&r2=597992&rev=597992&view=diff
==============================================================================
--- 
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MailboxExpression.java
 (original)
+++ 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxExpression.java
 Sun Nov 25 06:24:59 2007
@@ -17,8 +17,11 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mailboxmanager.torque;
+package org.apache.james.mailboxmanager.manager;
 
+/**
+ * Expresses select criteria for mailboxes.
+ */
 public class MailboxExpression {
     
     private final String base;
@@ -87,7 +90,7 @@
     public final char getLocalWildcard() {
         return localWildcard;
     }
-
+     
     /**
      * Is the given name a match for [EMAIL PROTECTED] #getExpression()}?
      * @param name name to be matched

Modified: 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
 (original)
+++ 
james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/manager/MailboxManager.java
 Sun Nov 25 06:24:59 2007
@@ -116,18 +116,12 @@
     /**
      * TODO: Expression requires parsing. Probably easier for the caller to 
      * parse the expression into an object representation and use that instead.
-     * @param base
-     *            hierarchy starting point like #mail.user1 to list mailboxes 
of
-     *            user1
-     * @param expression
-     *            allows the use of wildcards
-     * @param subscribed
-     *            if true, only list subscribed mailboxes (needs interaction
-     *            with the user-object)
+     * @param expression <code>MailboxExpression</code> used to select 
mailboxes
+     * to be returned
      * @throws MailboxManagerException 
      */
 
-    ListResult[] list(String base, String expression, boolean subscribed) 
throws MailboxManagerException;
+    ListResult[] list(MailboxExpression expression) throws 
MailboxManagerException;
 
     /**
      * could be implemented later. There could be enviroments where

Copied: 
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java
 (from r597976, 
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java)
URL: 
http://svn.apache.org/viewvc/james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java?p2=james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java&p1=james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java&r1=597976&r2=597992&rev=597992&view=diff
==============================================================================
--- 
james/server/trunk/torque-mailboxmanager-function/src/test/java/org/apache/james/mailboxmanager/torque/MailboxExpressionTest.java
 (original)
+++ 
james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/manager/MailboxExpressionTest.java
 Sun Nov 25 06:24:59 2007
@@ -17,7 +17,9 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.mailboxmanager.torque;
+package org.apache.james.mailboxmanager.manager;
+
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 
 import junit.framework.TestCase;
 

Modified: 
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
 (original)
+++ 
james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractListingProcessor.java
 Sun Nov 25 06:24:59 2007
@@ -34,6 +34,7 @@
 import org.apache.james.mailboxmanager.ListResult;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.impl.ListResultImpl;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
 import org.apache.james.services.User;
@@ -227,7 +228,7 @@
             String pattern) throws MailboxException {
         try {
             final MailboxManager mailboxManager = getMailboxManager(session);
-            final ListResult[] result = mailboxManager.list(base, pattern, 
subscribedOnly);
+            final ListResult[] result = mailboxManager.list(new 
MailboxExpression(base,pattern, '*', '%'));
             return result;
         } catch (MailboxManagerException e) {
             throw new MailboxException(e);

Modified: 
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
 (original)
+++ 
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ListCommand.java
 Sun Nov 25 06:24:59 2007
@@ -27,6 +27,7 @@
 import org.apache.james.mailboxmanager.ListResult;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.impl.ListResultImpl;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 
 /**
  * Handles processeing for the LIST imap command.
@@ -154,7 +155,8 @@
     protected ListResult[] doList( ImapSession session, String base, String 
pattern, boolean subscribed ) throws MailboxException
     {
         try {
-            return session.getMailboxManager().list(base,pattern,false);
+            // TODO: LSUB should use user meta-data
+            return session.getMailboxManager().list(new 
MailboxExpression(base, pattern, '*', '%'));
         } catch (MailboxManagerException e) {
             throw new MailboxException(e);  
         }

Modified: 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
 (original)
+++ 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
 Sun Nov 25 06:24:59 2007
@@ -57,6 +57,7 @@
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
 import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.test.mock.avalon.MockLogger;
 import org.jmock.MockObjectTestCase;
@@ -158,7 +159,7 @@
     }
     
     public String[] getFolderNames() throws MailboxManagerException {
-        ListResult[] listResults=mailboxManager.list("","*",false);
+        ListResult[] listResults=mailboxManager.list(new 
MailboxExpression("","*", '*', '%'));
         String[] names=new String[listResults.length];
         for (int i = 0; i < listResults.length; i++) {
             names[i]=listResults[i].getName();

Modified: 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
 (original)
+++ 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractMailboxManagerSelfTestCase.java
 Sun Nov 25 06:24:59 2007
@@ -24,6 +24,7 @@
 import java.util.Set;
 
 import org.apache.james.mailboxmanager.mailbox.GeneralMailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
 
@@ -36,9 +37,9 @@
     
     public void testCreateList() throws MailboxManagerException {
         ListResult[] listResult;
-        listResult=mailboxManager.list("","*",false);
+        listResult=mailboxManager.list(new MailboxExpression("","*", '*', 
'%'));
         assertNotNull(listResult);
-        assertEquals(0,mailboxManager.list("","*",false).length);
+        assertEquals(0,mailboxManager.list(new MailboxExpression("","*", '*', 
'%')).length);
         Set boxes=new HashSet();
         boxes.add("#users.joachim.INBOX");
         boxes.add("#users.joachim.INBOX.Drafts");
@@ -47,7 +48,7 @@
             String box = (String) iter.next();
             mailboxManager.createMailbox(box);    
         }
-        listResult=mailboxManager.list("","*",false);
+        listResult=mailboxManager.list(new MailboxExpression("","*", '*', 
'%'));
         assertEquals(3,listResult.length);
         for (int i = 0; i < listResult.length; i++) {
             assertTrue(boxes.contains(listResult[i].getName()));
@@ -71,7 +72,7 @@
         mailboxManager.createMailbox("INBOX");
         mailboxManager.createMailbox("INBOX2");
         
-        ListResult[] listResult=mailboxManager.list("","INBOX",false);
+        ListResult[] listResult=mailboxManager.list(new 
MailboxExpression("","*", '*', '%'));
         assertNotNull(listResult);
         assertEquals(1, listResult.length);
         assertEquals("INBOX", listResult[0].getName());

Modified: 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
 (original)
+++ 
james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/impl/VirtualMailboxManagerTest.java
 Sun Nov 25 06:24:59 2007
@@ -28,6 +28,7 @@
 import org.apache.james.mailboxmanager.ListResult;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import 
org.apache.james.mailboxmanager.impl.VirtualMailboxManagerFactory.LengthComparator;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.mailboxmanager.manager.MailboxManagerFactory;
 import org.apache.james.mailboxmanager.mock.MockUser;
@@ -91,6 +92,8 @@
     }
 
     public void testList() throws MailboxManagerException {
+        final MailboxExpression mailboxExpression = new 
MailboxExpression("","%", '*', '%');
+        
         String[] expected = { "#mail.t1.t2", "#mail.t1.t3", "#mail",
                 "#mail.group.t5", "#mail.group.6", "#system.t1" };
         String[] points = { "#mail", "#mail.group", "#system" };
@@ -101,23 +104,20 @@
                 mailboxManager, 1);
         MailboxManagerFactory[] mailboxManagerFactories = 
proxyFactoryMocks(mailboxManagerFactoryMocks);
 
-        Constraint[] args = { new IsEqual(""), new IsEqual("%"),
-                new IsEqual(Boolean.FALSE) };
-
-        mailboxManagerMocks[0].expects(once()).method("list").with(args).will(
+        
mailboxManagerMocks[0].expects(once()).method("list").with(eq(mailboxExpression)).will(
                 returnValue(generateListResults(new String[] { expected[0],
                         expected[1], expected[2] })));
 
-        mailboxManagerMocks[1].expects(once()).method("list").with(args).will(
+        
mailboxManagerMocks[1].expects(once()).method("list").with(eq(mailboxExpression)).will(
                 returnValue(generateListResults(new String[] { expected[3],
                         expected[4] })));
 
-        mailboxManagerMocks[2].expects(once()).method("list").with(args).will(
+        
mailboxManagerMocks[2].expects(once()).method("list").with(eq(mailboxExpression)).will(
                 returnValue(generateListResults(new String[] { expected[5] 
})));
 
         addMountPoints(points, mailboxManagerFactories);
 
-        ListResult[] result = virtualMailboxManager.list("", "%", false);
+        ListResult[] result = virtualMailboxManager.list(mailboxExpression);
         assertEquals(expected.length, result.length);
         assertEquals(new HashSet(Arrays.asList(expected)), toNamesSet(result));
         System.out.println(toNamesSet(result));

Modified: 
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java?rev=597992&r1=597991&r2=597992&view=diff
==============================================================================
--- 
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
 (original)
+++ 
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
 Sun Nov 25 06:24:59 2007
@@ -39,6 +39,7 @@
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
 import org.apache.james.mailboxmanager.mailbox.MailboxSession;
+import org.apache.james.mailboxmanager.manager.MailboxExpression;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.mailboxmanager.torque.om.MailboxRow;
 import org.apache.james.mailboxmanager.torque.om.MailboxRowPeer;
@@ -49,10 +50,12 @@
 import org.apache.torque.TorqueException;
 import org.apache.torque.util.CountHelper;
 import org.apache.torque.util.Criteria;
+
 import EDU.oswego.cs.dl.util.concurrent.ReadWriteLock;
 
 public class TorqueMailboxManager implements MailboxManager {
 
+    private static final char SQL_WILDCARD_CHAR = '%';
     private final static Random random = new Random();
     private MailboxCache mailboxCache;
 
@@ -222,31 +225,33 @@
         toMailbox.close();
     }
 
-    public ListResult[] list(String base, String expression, boolean 
subscribed) throws MailboxManagerException {
-        Criteria c=new Criteria();
-        if (base.length()>0) {
-            if (base.charAt(base.length()-1)==HIERARCHY_DELIMITER) {
-                base=base.substring(0, base.length()-1);
-            }
-            if (expression.length()>0) {
-                if (expression.charAt(0)==HIERARCHY_DELIMITER) {
-                    expression=base+expression;
-                } else {
-                    expression=base+HIERARCHY_DELIMITER+expression;
-                }
-            }
+    public ListResult[] list(final MailboxExpression mailboxExpression) throws 
MailboxManagerException {
+        final char localWildcard = mailboxExpression.getLocalWildcard();
+        final char freeWildcard = mailboxExpression.getFreeWildcard();
+        final String base = mailboxExpression.getBase();
+        final int baseLength;
+        if (base == null) {
+            baseLength = 0;
+        } else {
+            baseLength = base.length();
         }
+        
+        final String search = 
mailboxExpression.getCombinedName(HIERARCHY_DELIMITER)
+            .replace(freeWildcard, SQL_WILDCARD_CHAR).replace(localWildcard, 
SQL_WILDCARD_CHAR);
        
-        MailboxExpression mailboxExpression = new MailboxExpression(base, 
expression, '*', '%');
-        
c.add(MailboxRowPeer.NAME,(Object)(expression.replaceAll("\\*","%")),Criteria.LIKE);
+        Criteria criteria = new Criteria();
+        criteria.add(MailboxRowPeer.NAME,(Object)(search),Criteria.LIKE);
         try {
-            List mailboxRows=MailboxRowPeer.doSelect(c);
+            List mailboxRows=MailboxRowPeer.doSelect(criteria);
             List listResults=new ArrayList(mailboxRows.size());
             for (Iterator iter = mailboxRows.iterator(); iter.hasNext();) {
                 final MailboxRow mailboxRow = (MailboxRow) iter.next();
                 final String name = mailboxRow.getName();
-                if (mailboxExpression.isExpressionMatch(name, 
HIERARCHY_DELIMITER)) { 
-                    listResults.add(new ListResultImpl(name,"."));
+                if (name.startsWith(base)) {
+                    final String match = name.substring(baseLength);
+                    if (mailboxExpression.isExpressionMatch(match, 
HIERARCHY_DELIMITER)) { 
+                        listResults.add(new ListResultImpl(name,"."));
+                    }
                 }
             }
             return (ListResult[]) listResults.toArray(ListResult.EMPTY_ARRAY); 
   



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to