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:18:10 UTC

svn commit: r965270 [2/4] - in /james/imap/trunk: ./ api/src/main/java/org/apache/james/imap/api/ api/src/main/java/org/apache/james/imap/api/process/ deployment/src/test/java/org/apache/james/imap/functional/ jcr/src/main/java/org/apache/james/imap/jc...

Modified: james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/MailboxExpressionTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/MailboxExpressionTest.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/MailboxExpressionTest.java (original)
+++ james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/MailboxExpressionTest.java Sun Jul 18 18:18:08 2010
@@ -21,6 +21,7 @@ package org.apache.james.imap.mailbox;
 
 import static org.junit.Assert.*;
 
+import org.apache.james.imap.api.MailboxPath;
 import org.junit.Test;
 
 public class MailboxExpressionTest {
@@ -30,10 +31,11 @@ public class MailboxExpressionTest {
     private static final String SECOND_PART = "sub";
 
     private static final String BASE = "BASE";
+    private static final MailboxPath BASE_PATH = new MailboxPath(null, null, BASE);
 
 
     private MailboxQuery create(String expression) {
-        return new MailboxQuery(BASE, expression, '*', '%');
+        return new MailboxQuery(BASE_PATH, expression, '*', '%');
     }
 
     @Test
@@ -53,204 +55,178 @@ public class MailboxExpressionTest {
 
     @Test
     public void testCombinedNameEmptyPart() throws Exception {
-        MailboxQuery expression = new MailboxQuery(BASE, "", '*', '%');
-        assertEquals(BASE, expression.getCombinedName('.'));
-
+        MailboxQuery expression = new MailboxQuery(BASE_PATH, "", '*', '%');
+        assertEquals(BASE, expression.getCombinedName());
     }
 
     @Test
     public void testNullCombinedName() throws Exception {
-        MailboxQuery expression = new MailboxQuery(null, null, '*',
-                '%');
-        assertNotNull(expression.getCombinedName('.'));
-
+        MailboxQuery expression = new MailboxQuery(new MailboxPath(null, null, null), null, '*', '%');
+        assertNotNull(expression.getCombinedName());
     }
 
     @Test
     public void testSimpleCombinedName() throws Exception {
         MailboxQuery expression = create(PART);
-        assertEquals(BASE + "." + PART, expression.getCombinedName('.'));
-        assertEquals(BASE + "/" + PART, expression.getCombinedName('/'));
+        assertEquals(BASE + "." + PART, expression.getCombinedName());
     }
 
     @Test
     public void testCombinedNamePartStartsWithDelimiter() throws Exception {
         MailboxQuery expression = create("." + PART);
-        assertEquals(BASE + "." + PART, expression.getCombinedName('.'));
-        assertEquals(BASE + "/." + PART, expression.getCombinedName('/'));
+        assertEquals(BASE + "." + PART, expression.getCombinedName());
     }
 
     @Test
     public void testCombinedNameBaseEndsWithDelimiter() throws Exception {
-        MailboxQuery expression = new MailboxQuery(BASE + '.', PART,
-                '*', '%');
-        assertEquals(BASE + "." + PART, expression.getCombinedName('.'));
-        assertEquals(BASE + "./" + PART, expression.getCombinedName('/'));
+        MailboxQuery expression = new MailboxQuery(new MailboxPath(null, null, BASE + '.'), PART, '*', '%');
+        assertEquals(BASE + "." + PART, expression.getCombinedName());
     }
 
     @Test
     public void testCombinedNameBaseEndsWithDelimiterPartStarts()
             throws Exception {
-        MailboxQuery expression = new MailboxQuery(BASE + '.',
-                '.' + PART, '*', '%');
-        assertEquals(BASE + "." + PART, expression.getCombinedName('.'));
-        assertEquals(BASE + "./." + PART, expression.getCombinedName('/'));
+        MailboxQuery expression = new MailboxQuery(new MailboxPath(null, null, BASE + '.'), '.' + PART, '*', '%');
+        assertEquals(BASE + "." + PART, expression.getCombinedName());
     }
 
     @Test
     public void testSimpleExpression() throws Exception {
         MailboxQuery expression = create(PART);
-        assertTrue(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART, '/'));
-        assertFalse(expression.isExpressionMatch('.' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART + '.', '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
+        assertTrue(expression.isExpressionMatch(PART));
+        assertFalse(expression.isExpressionMatch('.' + PART));
+        assertFalse(expression.isExpressionMatch(PART + '.'));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
     }
 
     @Test
     public void testEmptyExpression() throws Exception {
         MailboxQuery expression = create("");
-        assertTrue(expression.isExpressionMatch("", '.'));
-        assertTrue(expression.isExpressionMatch("", '/'));
-        assertFalse(expression.isExpressionMatch("whatever", '.'));
-        assertFalse(expression.isExpressionMatch(BASE + '.' + "whatever", '.'));
-        assertFalse(expression.isExpressionMatch(BASE + "whatever", '.'));
+        assertTrue(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch("whatever"));
+        assertFalse(expression.isExpressionMatch(BASE + '.' + "whatever"));
+        assertFalse(expression.isExpressionMatch(BASE + "whatever"));
     }
 
     @Test
     public void testOnlyLocalWildcard() throws Exception {
         MailboxQuery expression = create("%");
-        assertTrue(expression.isExpressionMatch("", '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + SECOND_PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '/' + SECOND_PART, '.'));
+        assertTrue(expression.isExpressionMatch(""));
+        assertTrue(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(PART + SECOND_PART));
+        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART));
     }
 
     @Test
     public void testOnlyFreeWildcard() throws Exception {
         MailboxQuery expression = create("*");
-        assertTrue(expression.isExpressionMatch("", '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '/' + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
+        assertTrue(expression.isExpressionMatch(""));
+        assertTrue(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(PART + SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART));
     }
 
     @Test
     public void testEndsWithLocalWildcard() throws Exception {
         MailboxQuery expression = create(PART + '%');
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + SECOND_PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '/' + SECOND_PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(PART + SECOND_PART));
+        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART));
+        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART));
     }
 
     @Test
     public void testStartsWithLocalWildcard() throws Exception {
         MailboxQuery expression = create('%' + PART);
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + PART, '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART + '.'
-                + SECOND_PART, '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + PART));
+        assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART));
+        assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART + '.' + SECOND_PART));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
     }
 
     @Test
     public void testContainsLocalWildcard() throws Exception {
         MailboxQuery expression = create(SECOND_PART + '%' + PART);
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + PART, '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '/' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART, '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r"
-                + PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + PART));
+        assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART));
+        assertFalse(expression.isExpressionMatch(PART));
+        assertFalse(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r" + PART));
     }
 
     @Test
     public void testEndsWithFreeWildcard() throws Exception {
         MailboxQuery expression = create(PART + '*');
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '/' + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(PART + SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART));
     }
 
     @Test
     public void testStartsWithFreeWildcard() throws Exception {
         MailboxQuery expression = create('*' + PART);
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
     }
 
     @Test
     public void testContainsFreeWildcard() throws Exception {
         MailboxQuery expression = create(SECOND_PART + '*' + PART);
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '/' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r"
-                + PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART));
+        assertFalse(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r" + PART));
     }
 
     @Test
     public void testDoubleFreeWildcard() throws Exception {
         MailboxQuery expression = create(SECOND_PART + "**" + PART);
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '/' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r"
-                + PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART));
+        assertFalse(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r" + PART));
     }
 
     @Test
     public void testFreeLocalWildcard() throws Exception {
         MailboxQuery expression = create(SECOND_PART + "*%" + PART);
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '/' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r"
-                + PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART));
+        assertFalse(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r" + PART));
     }
 
     @Test
     public void testLocalFreeWildcard() throws Exception {
         MailboxQuery expression = create(SECOND_PART + "%*" + PART);
-        assertFalse(expression.isExpressionMatch("", '.'));
-        assertFalse(expression.isExpressionMatch(SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + '/' + PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART, '.'));
-        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r"
-                + PART, '.'));
+        assertFalse(expression.isExpressionMatch(""));
+        assertFalse(expression.isExpressionMatch(SECOND_PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART));
+        assertFalse(expression.isExpressionMatch(PART));
+        assertTrue(expression.isExpressionMatch(SECOND_PART + "w.hat.eve.r" + PART));
     }
 
     @Test
@@ -258,26 +234,26 @@ public class MailboxExpressionTest {
         MailboxQuery expression = create(SECOND_PART + '*' + PART + '*'
                 + SECOND_PART + "**");
         assertTrue(expression.isExpressionMatch(SECOND_PART + PART
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART + '.'
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + "tosh.bosh"
-                + PART + "tosh.bosh" + SECOND_PART + "boshtosh", '.'));
+                + PART + "tosh.bosh" + SECOND_PART + "boshtosh"));
         assertFalse(expression.isExpressionMatch(SECOND_PART + '.'
-                + PART.substring(1) + '.' + SECOND_PART, '.'));
+                + PART.substring(1) + '.' + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + '.'
                 + PART.substring(1) + '.' + SECOND_PART + PART + '.'
-                + SECOND_PART + "toshbosh", '.'));
+                + SECOND_PART + "toshbosh"));
         assertFalse(expression.isExpressionMatch(SECOND_PART + '.'
                 + PART.substring(1) + '.' + SECOND_PART + PART + '.'
-                + SECOND_PART.substring(1), '.'));
+                + SECOND_PART.substring(1)));
         assertTrue(expression.isExpressionMatch(SECOND_PART + "tosh.bosh"
                 + PART + "tosh.bosh" + PART + SECOND_PART + "boshtosh" + PART
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertFalse(expression.isExpressionMatch(SECOND_PART.substring(1)
                 + "tosh.bosh" + PART + "tosh.bosh" + SECOND_PART
                 + PART.substring(1) + SECOND_PART + "boshtosh" + PART
-                + SECOND_PART.substring(1), '.'));
+                + SECOND_PART.substring(1)));
     }
 
     @Test
@@ -285,15 +261,15 @@ public class MailboxExpressionTest {
         MailboxQuery expression = create(SECOND_PART + '%' + PART + '*'
                 + SECOND_PART);
         assertTrue(expression.isExpressionMatch(SECOND_PART + PART
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + PART + '.'
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + PART
-                + SECOND_PART + "Whatever", '.'));
+                + SECOND_PART + "Whatever"));
         assertTrue(expression.isExpressionMatch(SECOND_PART + PART
-                + SECOND_PART + ".Whatever.", '.'));
+                + SECOND_PART + ".Whatever."));
     }
 
     @Test
@@ -301,28 +277,28 @@ public class MailboxExpressionTest {
         MailboxQuery expression = create(SECOND_PART + '*' + PART + '%'
                 + SECOND_PART);
         assertTrue(expression.isExpressionMatch(SECOND_PART + PART
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertFalse(expression.isExpressionMatch(SECOND_PART + PART + '.'
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + PART + "Whatever"
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertFalse(expression.isExpressionMatch(SECOND_PART + PART
-                + SECOND_PART + ".Whatever.", '.'));
+                + SECOND_PART + ".Whatever."));
         assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART
-                + SECOND_PART, '.'));
+                + SECOND_PART));
         assertFalse(expression.isExpressionMatch(SECOND_PART + '.' + PART
-                + SECOND_PART + '.' + SECOND_PART, '.'));
+                + SECOND_PART + '.' + SECOND_PART));
         assertTrue(expression.isExpressionMatch(SECOND_PART + '.' + PART + '.'
-                + SECOND_PART + PART + SECOND_PART, '.'));
+                + SECOND_PART + PART + SECOND_PART));
     }
     
     @Test
     public void testTwoLocalWildcardsShouldMatchMailboxs() throws Exception {
         MailboxQuery expression = create("%.%");
-        assertFalse(expression.isExpressionMatch(PART, '.'));
-        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART + '.' + SECOND_PART, '.'));
-        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART, '.'));
+        assertFalse(expression.isExpressionMatch(PART));
+        assertFalse(expression.isExpressionMatch(PART + '.' + SECOND_PART + '.' + SECOND_PART));
+        assertTrue(expression.isExpressionMatch(PART + '.' + SECOND_PART));
     }
 }

Modified: james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/util/MailboxEventDispatcherFlagsTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/util/MailboxEventDispatcherFlagsTest.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/util/MailboxEventDispatcherFlagsTest.java (original)
+++ james/imap/trunk/mailbox/src/test/java/org/apache/james/imap/mailbox/util/MailboxEventDispatcherFlagsTest.java Sun Jul 18 18:18:08 2010
@@ -25,6 +25,7 @@ import java.util.Iterator;
 
 import javax.mail.Flags;
 
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.mailbox.MailboxListener;
 import org.apache.james.imap.mailbox.MessageResult;
 import org.jmock.Expectations;
@@ -48,7 +49,7 @@ public class MailboxEventDispatcherFlags
 
     private Mockery mockery = new JUnit4Mockery();
 
-    private String name = "test";
+    private MailboxPath path = new MailboxPath(null, null, "test");
     @Before
     public void setUp() throws Exception {
         dispatcher = new MailboxEventDispatcher();
@@ -63,7 +64,7 @@ public class MailboxEventDispatcherFlags
    
     @Test
     public void testShouldReturnNoChangesWhenOriginalNull() throws Exception {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, null, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, null, new Flags(
                 Flags.Flag.DELETED));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -76,7 +77,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldReturnNoChangesWhenSystemFlagsUnchanged() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId,name, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(
                 Flags.Flag.DELETED), new Flags(Flags.Flag.DELETED));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -89,7 +90,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowAnsweredAdded() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(),
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(),
                 new Flags(Flags.Flag.ANSWERED));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -104,7 +105,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowAnsweredRemoved() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(
                 Flags.Flag.ANSWERED), new Flags());
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -119,7 +120,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowDeletedAdded() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(),
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(),
                 new Flags(Flags.Flag.DELETED));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -134,7 +135,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowDeletedRemoved() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(
                 Flags.Flag.DELETED), new Flags());
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -149,7 +150,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowDraftAdded() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(),
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(),
                 new Flags(Flags.Flag.DRAFT));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -164,7 +165,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowDraftRemoved() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(
                 Flags.Flag.DRAFT), new Flags());
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -179,7 +180,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowFlaggedAdded() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(),
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(),
                 new Flags(Flags.Flag.FLAGGED));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -194,7 +195,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowFlaggedRemoved() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(
                 Flags.Flag.FLAGGED), new Flags());
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -209,7 +210,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowRecentAdded() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(),
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(),
                 new Flags(Flags.Flag.RECENT));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -224,7 +225,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowRecentRemoved() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(
                 Flags.Flag.RECENT), new Flags());
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -239,7 +240,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowSeenAdded() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(),
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(),
                 new Flags(Flags.Flag.SEEN));
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -254,7 +255,7 @@ public class MailboxEventDispatcherFlags
 
     @Test
     public void testShouldShowSeenRemoved() {
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, new Flags(
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, new Flags(
                 Flags.Flag.SEEN), new Flags());
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
@@ -277,7 +278,7 @@ public class MailboxEventDispatcherFlags
         updated.add(Flags.Flag.DRAFT);
         updated.add(Flags.Flag.SEEN);
 
-        dispatcher.flagsUpdated(result.getUid(), sessionId, name, originals, updated);
+        dispatcher.flagsUpdated(result.getUid(), sessionId, path, originals, updated);
         assertEquals(1, collector.events.size());
         assertTrue(collector.events.get(0) instanceof MailboxListener.FlagsUpdated);
         MailboxListener.FlagsUpdated event = (MailboxListener.FlagsUpdated) collector.events

Modified: james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java (original)
+++ james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/InMemoryMailboxManager.java Sun Jul 18 18:18:08 2010
@@ -19,6 +19,7 @@
 
 package org.apache.james.imap.inmemory;
 
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.inmemory.mail.model.InMemoryMailbox;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxSession;
@@ -50,8 +51,8 @@ public class InMemoryMailboxManager exte
     }
 
     @Override
-    protected void doCreateMailbox(String namespaceName, MailboxSession session) throws StorageException {
-        InMemoryMailbox mailbox = new InMemoryMailbox(randomId(), namespaceName, randomUidValidity());
+    protected void doCreateMailbox(MailboxPath mailboxPath, MailboxSession session) throws StorageException {
+        InMemoryMailbox mailbox = new InMemoryMailbox(randomId(), mailboxPath, randomUidValidity());
         try {
             mailboxSessionMapperFactory.getMailboxMapper(session).save(mailbox);
         } catch (MailboxException e) {

Modified: james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMailboxMapper.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMailboxMapper.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMailboxMapper.java (original)
+++ james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/InMemoryMailboxMapper.java Sun Jul 18 18:18:08 2010
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.inmemory.mail.model.InMemoryMailbox;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxNotFoundException;
@@ -75,16 +76,17 @@ public class InMemoryMailboxMapper imple
      * (non-Javadoc)
      * @see org.apache.james.imap.store.mail.MailboxMapper#findMailboxByName(java.lang.String)
      */
-    public synchronized Mailbox<Long> findMailboxByName(String name) throws StorageException, MailboxNotFoundException {
+    public synchronized Mailbox<Long> findMailboxByPath(MailboxPath path) throws StorageException, MailboxNotFoundException {
         Mailbox<Long> result = null;
         for (final InMemoryMailbox mailbox:mailboxesById.values()) {
-            if (mailbox.getName().equals(name)) {
+            MailboxPath mp = new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName());
+            if (mp.equals(path)) {
                 result = mailbox;
                 break;
             }
         }
         if (result == null) {
-            throw new MailboxNotFoundException(name);
+            throw new MailboxNotFoundException(path);
         } else {
             return result;
         }
@@ -94,8 +96,8 @@ public class InMemoryMailboxMapper imple
      * (non-Javadoc)
      * @see org.apache.james.imap.store.mail.MailboxMapper#findMailboxWithNameLike(java.lang.String)
      */
-    public List<Mailbox<Long>> findMailboxWithNameLike(String name) throws StorageException {
-        final String regex = name.replace("%", ".*");
+    public List<Mailbox<Long>> findMailboxWithPathLike(MailboxPath path) throws StorageException {
+        final String regex = path.getName().replace("%", ".*");
         List<Mailbox<Long>> results = new ArrayList<Mailbox<Long>>();
         for (final InMemoryMailbox mailbox:mailboxesById.values()) {
             if (mailbox.getName().matches(regex)) {

Modified: james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/model/InMemoryMailbox.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/model/InMemoryMailbox.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/model/InMemoryMailbox.java (original)
+++ james/imap/trunk/memory/src/main/java/org/apache/james/imap/inmemory/mail/model/InMemoryMailbox.java Sun Jul 18 18:18:08 2010
@@ -21,6 +21,7 @@ package org.apache.james.imap.inmemory.m
 
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.store.mail.model.Mailbox;
 
 /**
@@ -28,16 +29,20 @@ import org.apache.james.imap.store.mail.
  */
 public class InMemoryMailbox implements Mailbox<Long> {
 
-    private final long id;    
+    private final long id;
     private final long uidValidity;
     private final AtomicLong nextUid;
+    private String namespace;
+    private String user;
     private String name;
     
-    public InMemoryMailbox(final long id, final String name, final long uidValidity) {
+    public InMemoryMailbox(final long id, final MailboxPath path, final long uidValidity) {
         super();
         this.nextUid = new AtomicLong(0);
         this.id = id;
-        this.name = name;
+        this.namespace = path.getNamespace();
+        this.user = path.getUser();
+        this.name = path.getName();
         this.uidValidity = uidValidity;
     }
 
@@ -53,16 +58,31 @@ public class InMemoryMailbox implements 
         return id;
     }
 
-    public String getName() {
-        return name;
+    public String getNamespace() {
+        return namespace;
+    }
+
+    public void setNamespace(String namespace) {
+        this.namespace = namespace;
     }
 
+    public String getUser() {
+        return user;
+    }
 
-    public long getUidValidity() {
-        return uidValidity;
+    public void setuser(String user) {
+        this.user = user;
+    }
+
+    public String getName() {
+        return name;
     }
 
     public void setName(String name) {
         this.name = name;
     }
+
+    public long getUidValidity() {
+        return uidValidity;
+    }
 }

Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/encode/ListingEncodingUtils.java Sun Jul 18 18:18:08 2010
@@ -37,10 +37,8 @@ public class ListingEncodingUtils {
         final List<String> attributes = getNameAttributes(response);
 
         final String name = response.getName();
-        final String hierarchyDelimiter = response.getHierarchyDelimiter();
 
-        composer.listResponse(responseTypeName, attributes, hierarchyDelimiter,
-                name);
+        composer.listResponse(responseTypeName, attributes, ImapConstants.HIERARCHY_DELIMITER, name);
     }
 
     private static List<String> getNameAttributes(final AbstractListingResponse response) {

Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/AbstractListingResponse.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/AbstractListingResponse.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/AbstractListingResponse.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/AbstractListingResponse.java Sun Jul 18 18:18:08 2010
@@ -19,6 +19,8 @@
 
 package org.apache.james.imap.message.response;
 
+import org.apache.james.imap.api.ImapConstants;
+
 /**
  * <code>LIST</code> and <code>LSUB</code> return identical data.
  */
@@ -36,14 +38,14 @@ public abstract class AbstractListingRes
 
     private final boolean unmarked;
 
-    private final String hierarchyDelimiter;
+    private final String hierarchyDelimiter = ImapConstants.HIERARCHY_DELIMITER;
 
     private final String name;
 
     public AbstractListingResponse(final boolean noInferiors,
             final boolean noSelect, final boolean marked,
             final boolean unmarked, boolean hasChildren,
-            boolean hasNoChildren, final String hierarchyDelimiter, final String name) {
+            boolean hasNoChildren, final String name) {
         super();
         this.noInferiors = noInferiors;
         this.noSelect = noSelect;
@@ -51,7 +53,6 @@ public abstract class AbstractListingRes
         this.unmarked = unmarked;
         this.children = hasChildren;
         this.noChildren = hasNoChildren;
-        this.hierarchyDelimiter = hierarchyDelimiter;
         this.name = name;
     }
 

Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/LSubResponse.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/LSubResponse.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/LSubResponse.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/LSubResponse.java Sun Jul 18 18:18:08 2010
@@ -25,8 +25,7 @@ import org.apache.james.imap.api.message
  */
 public final class LSubResponse extends AbstractListingResponse implements
         ImapResponseMessage {
-    public LSubResponse(final String name, final String hierarchyDelimiter,
-            final boolean noSelect) {
-        super(false, noSelect, false, false, false, false, hierarchyDelimiter, name);
+    public LSubResponse(final String name, final boolean noSelect) {
+        super(false, noSelect, false, false, false, false, name);
     }
 }

Modified: james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/ListResponse.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/ListResponse.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/ListResponse.java (original)
+++ james/imap/trunk/message/src/main/java/org/apache/james/imap/message/response/ListResponse.java Sun Jul 18 18:18:08 2010
@@ -28,7 +28,7 @@ public final class ListResponse extends 
     
     public ListResponse(final boolean noInferiors, final boolean noSelect,
             final boolean marked, final boolean unmarked,
-            boolean hasChildren, boolean hasNoChildren, final String hierarchyDelimiter, final String name) {
-        super(noInferiors, noSelect, marked, unmarked, hasChildren, hasNoChildren, hierarchyDelimiter, name);
+            boolean hasChildren, boolean hasNoChildren, final String name) {
+        super(noInferiors, noSelect, marked, unmarked, hasChildren, hasNoChildren, name);
     }
 }

Modified: james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java (original)
+++ james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/LSubResponseEncoderTest.java Sun Jul 18 18:18:08 2010
@@ -60,8 +60,8 @@ public class LSubResponseEncoderTest  {
     @Test
     public void testIsAcceptable() {
         assertFalse(encoder.isAcceptable(new ListResponse(true, true, true,
-                true, false, false, ".", "name")));
-        assertTrue(encoder.isAcceptable(new LSubResponse("name", ".", true)));
+                true, false, false, "name")));
+        assertTrue(encoder.isAcceptable(new LSubResponse("name", true)));
         assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
         assertFalse(encoder.isAcceptable(null));
     }
@@ -70,35 +70,26 @@ public class LSubResponseEncoderTest  {
     @SuppressWarnings("unchecked")
 	public void testName() throws Exception {
         context.checking(new Expectations() {{
-            oneOf(composer).listResponse(with(same("LSUB")),with(aNull(List.class)), with(same(".")), with(same("INBOX.name")));
+            oneOf(composer).listResponse(with(equal("LSUB")),with(aNull(List.class)), with(equal(".")), with(equal("INBOX.name")));
         }});
-        encoder.encode(new LSubResponse("INBOX.name", ".", false), composer, new FakeImapSession());
+        encoder.encode(new LSubResponse("INBOX.name", false), composer, new FakeImapSession());
     }
 
     @Test
     @SuppressWarnings("unchecked")
 	public void testDelimiter() throws Exception {
         context.checking(new Expectations() {{
-            oneOf(composer).listResponse(with(same("LSUB")),with(aNull(List.class)), with(same("@")), with(same("INBOX.name")));
+            oneOf(composer).listResponse(with(equal("LSUB")),with(aNull(List.class)), with(equal(".")), with(equal("INBOX.name")));
         }});
-        encoder.encode(new LSubResponse("INBOX.name", "@", false), composer, new FakeImapSession());
-    }
-
-    @Test
-    @SuppressWarnings("unchecked")
-	public void testNoDelimiter() throws Exception {
-        context.checking(new Expectations() {{
-            oneOf(composer).listResponse(with(same("LSUB")),with(aNull(List.class)), with(aNull(String.class)), with(same("INBOX.name")));
-        }});
-        encoder.encode(new LSubResponse("INBOX.name", null, false), composer, new FakeImapSession());
+        encoder.encode(new LSubResponse("INBOX.name", false), composer, new FakeImapSession());
     }
 
     @Test
     public void testNoSelect() throws Exception {
         final String[] values = { ImapConstants.NAME_ATTRIBUTE_NOSELECT };
         context.checking(new Expectations() {{
-            oneOf(composer).listResponse(with(same("LSUB")),with(equal(Arrays.asList(values))), with(equal(".")), with(same("INBOX.name")));
+            oneOf(composer).listResponse(with(equal("LSUB")),with(equal(Arrays.asList(values))), with(equal(".")), with(equal("INBOX.name")));
         }});
-        encoder.encode(new LSubResponse("INBOX.name", ".", true), composer, new FakeImapSession());
+        encoder.encode(new LSubResponse("INBOX.name", true), composer, new FakeImapSession());
     }
 }

Modified: james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java (original)
+++ james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/ListingEncodingUtilsTest.java Sun Jul 18 18:18:08 2010
@@ -33,7 +33,6 @@ import org.junit.runner.RunWith;
 @RunWith(JMock.class)
 public class ListingEncodingUtilsTest  {
 
-    final String deliminatorParameter = ".";
     final String nameParameter = "LIST";
     final String typeNameParameters = "A Type Name";
     
@@ -50,7 +49,7 @@ public class ListingEncodingUtilsTest  {
         
         context.checking (new Expectations() {{
             oneOf(mock).listResponse(with(equal(typeNameParameters)), with(equal(attributesOutput)), 
-                    with(equal(deliminatorParameter)), with(equal(nameParameter)));
+                    with(equal(".")), with(equal(nameParameter)));
         }});
     }
 
@@ -58,7 +57,7 @@ public class ListingEncodingUtilsTest  {
     public void testShouldAddHasChildrenToAttributes() throws Exception {
         // Setup 
         attributesOutput.add("\\HasChildren");
-        ListResponse input = new ListResponse(false, false, false, false, true, false, deliminatorParameter, nameParameter);
+        ListResponse input = new ListResponse(false, false, false, false, true, false, nameParameter);
             
         // Exercise
         ListingEncodingUtils.encodeListingResponse(typeNameParameters, mock, input);
@@ -68,7 +67,7 @@ public class ListingEncodingUtilsTest  {
     public void testShouldAddHasNoChildrenToAttributes() throws Exception {
         // Setup 
         attributesOutput.add("\\HasNoChildren");
-        ListResponse input = new ListResponse(false, false, false, false, false, true, deliminatorParameter, nameParameter);
+        ListResponse input = new ListResponse(false, false, false, false, false, true, nameParameter);
             
         // Exercise
         ListingEncodingUtils.encodeListingResponse(typeNameParameters, mock, input);

Modified: james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java (original)
+++ james/imap/trunk/message/src/test/java/org/apache/james/imap/encode/SearchResponseEncoderTest.java Sun Jul 18 18:18:08 2010
@@ -60,8 +60,8 @@ public class SearchResponseEncoderTest {
     @Test
     public void testIsAcceptable() {
         assertTrue(encoder.isAcceptable(new ListResponse(true, true, true,
-                true, false, false, ".", "name")));
-        assertFalse(encoder.isAcceptable(new LSubResponse("name", ".", true)));
+                true, false, false, "name")));
+        assertFalse(encoder.isAcceptable(new LSubResponse("name", true)));
         assertFalse(encoder.isAcceptable(context.mock(ImapMessage.class)));
         assertFalse(encoder.isAcceptable(null));
     }
@@ -71,12 +71,12 @@ public class SearchResponseEncoderTest {
 	public void testName() throws Exception {
         context.checking(new Expectations() {{
             oneOf(composer).listResponse(
-                            with(same("LIST")), 
+                            with(equal("LIST")), 
                             with(aNull(List.class)), 
-                            with(same(".")), 
-                            with(same("INBOX.name")));
+                            with(equal(".")), 
+                            with(equal("INBOX.name")));
         }});
-        encoder.encode(new ListResponse(false, false, false, false, false, false, ".", "INBOX.name"), composer, new FakeImapSession());
+        encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
     }
 
     @Test
@@ -84,26 +84,14 @@ public class SearchResponseEncoderTest {
 	public void testDelimiter() throws Exception {
         context.checking(new Expectations() {{
             oneOf(composer).listResponse(
-                            with(same("LIST")), 
+                            with(equal("LIST")), 
                             with(aNull(List.class)), 
-                            with(same("@")), 
-                            with(same("INBOX.name")));
+                            with(equal(".")), 
+                            with(equal("INBOX.name")));
         }});
-        encoder.encode(new ListResponse(false, false, false, false, false, false, "@", "INBOX.name"), composer, new FakeImapSession());
+        encoder.encode(new ListResponse(false, false, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
     }
 
-    @Test
-    @SuppressWarnings("unchecked")
-	public void testNoDelimiter() throws Exception {
-        context.checking(new Expectations() {{
-            oneOf(composer).listResponse(
-                            with(same("LIST")), 
-                            with(aNull(List.class)), 
-                            with(aNull(String.class)), 
-                            with(same("INBOX.name")));
-        }});
-        encoder.encode(new ListResponse(false, false, false, false, false, false, null, "INBOX.name"), composer, new FakeImapSession());
-    }
 
     @Test
     public void testAllAttributes() throws Exception {
@@ -113,12 +101,12 @@ public class SearchResponseEncoderTest {
                 ImapConstants.NAME_ATTRIBUTE_UNMARKED };
         context.checking(new Expectations() {{
             oneOf(composer).listResponse(
-                            with(same("LIST")), 
+                            with(equal("LIST")), 
                             with(equal(Arrays.asList(all))), 
-                            with(same(".")), 
-                            with(same("INBOX.name")));
+                            with(equal(".")), 
+                            with(equal("INBOX.name")));
         }});
-        encoder.encode(new ListResponse(true, true, true, true, false, false, ".", "INBOX.name"), composer, new FakeImapSession());
+        encoder.encode(new ListResponse(true, true, true, true, false, false, "INBOX.name"), composer, new FakeImapSession());
     }
 
     @Test
@@ -126,12 +114,12 @@ public class SearchResponseEncoderTest {
         final String[] values = { ImapConstants.NAME_ATTRIBUTE_NOINFERIORS };
         context.checking(new Expectations() {{
             oneOf(composer).listResponse(
-                            with(same("LIST")), 
+                            with(equal("LIST")), 
                             with(equal(Arrays.asList(values))), 
-                            with(same(".")), 
-                            with(same("INBOX.name")));
+                            with(equal(".")), 
+                            with(equal("INBOX.name")));
         }});
-        encoder.encode(new ListResponse(true, false, false, false, false, false, ".", "INBOX.name"), composer, new FakeImapSession());
+        encoder.encode(new ListResponse(true, false, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
     }
 
     @Test
@@ -139,12 +127,12 @@ public class SearchResponseEncoderTest {
         final String[] values = { ImapConstants.NAME_ATTRIBUTE_NOSELECT };
         context.checking(new Expectations() {{
             oneOf(composer).listResponse(
-                            with(same("LIST")), 
+                            with(equal("LIST")), 
                             with(equal(Arrays.asList(values))), 
-                            with(same(".")), 
-                            with(same("INBOX.name")));
+                            with(equal(".")), 
+                            with(equal("INBOX.name")));
         }});
-        encoder.encode(new ListResponse(false, true, false, false, false, false, ".", "INBOX.name"), composer, new FakeImapSession());
+        encoder.encode(new ListResponse(false, true, false, false, false, false, "INBOX.name"), composer, new FakeImapSession());
     }
 
     @Test
@@ -152,12 +140,12 @@ public class SearchResponseEncoderTest {
         final String[] values = { ImapConstants.NAME_ATTRIBUTE_MARKED };
         context.checking(new Expectations() {{
             oneOf(composer).listResponse(
-                            with(same("LIST")), 
+                            with(equal("LIST")), 
                             with(equal(Arrays.asList(values))), 
-                            with(same(".")), 
-                            with(same("INBOX.name")));
+                            with(equal(".")), 
+                            with(equal("INBOX.name")));
         }});
-        encoder.encode(new ListResponse(false, false, true, false, false, false, ".", "INBOX.name"), composer, new FakeImapSession());
+        encoder.encode(new ListResponse(false, false, true, false, false, false, "INBOX.name"), composer, new FakeImapSession());
     }
 
     @Test
@@ -165,11 +153,11 @@ public class SearchResponseEncoderTest {
         final String[] values = { ImapConstants.NAME_ATTRIBUTE_UNMARKED };
         context.checking(new Expectations() {{
             oneOf(composer).listResponse(
-                            with(same("LIST")), 
+                            with(equal("LIST")), 
                             with(equal(Arrays.asList(values))), 
-                            with(same(".")), 
-                            with(same("INBOX.name")));
+                            with(equal(".")), 
+                            with(equal("INBOX.name")));
         }});
-        encoder.encode(new ListResponse(false, false, false, true, false, false, ".", "INBOX.name"), composer, new FakeImapSession());
+        encoder.encode(new ListResponse(false, false, false, true, false, false, "INBOX.name"), composer, new FakeImapSession());
     }
 }

Modified: james/imap/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/imap/trunk/pom.xml?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/pom.xml (original)
+++ james/imap/trunk/pom.xml Sun Jul 18 18:18:08 2010
@@ -41,13 +41,13 @@
     <module>mailbox</module>
     <module>store</module>
     <module>processor</module>
-    <module>torque</module>
     <module>jpa</module>
     <module>jcr</module>
     <module>memory</module>
     <module>seda</module>
     <module>deployment</module>
     <module>parent</module>
+    <module>torque</module>
     <!--  
     <module>maildir</module>
     -->

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java Sun Jul 18 18:18:08 2010
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.james.imap.processor;
 
-import static org.apache.james.imap.api.ImapConstants.NAMESPACE_PREFIX;
-
 import java.util.Collection;
 import java.util.Iterator;
 
@@ -28,7 +26,9 @@ import javax.mail.MessagingException;
 
 import org.apache.commons.logging.Log;
 import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.message.request.ImapRequest;
 import org.apache.james.imap.api.message.response.ImapResponseMessage;
@@ -38,6 +38,7 @@ import org.apache.james.imap.api.process
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.api.process.SelectedMailbox;
 import org.apache.james.imap.mailbox.Mailbox;
+import org.apache.james.imap.mailbox.MailboxConstants;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxExistsException;
 import org.apache.james.imap.mailbox.MailboxManager;
@@ -229,9 +230,8 @@ abstract public class AbstractMailboxPro
     }
 
     private Mailbox getMailbox(final ImapSession session, final SelectedMailbox selected) throws MailboxException {
-        final String fullMailboxName = buildFullName(session, selected.getName());
         final MailboxManager mailboxManager = getMailboxManager();
-        final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName, ImapSessionUtils.getMailboxSession(session));
+        final Mailbox mailbox = mailboxManager.getMailbox(selected.getPath(), ImapSessionUtils.getMailboxSession(session));
         return mailbox;
     }
 
@@ -311,13 +311,57 @@ abstract public class AbstractMailboxPro
             ImapSession session, String tag, ImapCommand command,
             Responder responder);
 
-    public String buildFullName(final ImapSession session, String mailboxName)
-            throws MailboxException {
+    public MailboxPath buildFullPath(final ImapSession session, String mailboxName) {
+        String namespace = null;
+        String name = null;
+        if (mailboxName.charAt(0) == ImapConstants.NAMESPACE_PREFIX_CHAR) {
+            int namespaceLength = mailboxName.indexOf(MailboxConstants.DEFAULT_DELIMITER);
+            if (namespaceLength > -1) {
+                namespace = mailboxName.substring(0, namespaceLength);
+                if (mailboxName.length() > namespaceLength)
+                    name = mailboxName.substring(++namespaceLength);
+            }
+            else {
+                namespace = mailboxName;
+            }
+        }
+        else {
+            namespace = MailboxConstants.USER_NAMESPACE;
+            name = mailboxName;
+        }
         final String user = ImapSessionUtils.getUserName(session);
-        if (!mailboxName.startsWith(NAMESPACE_PREFIX)) {
-            mailboxName = getMailboxManager().resolve(user, mailboxName);
+        return new MailboxPath(namespace, user, name);
+    }
+    
+    /**
+     * Joins the elements of a mailboxPath together and returns them as a string
+     * @param mailboxPath
+     * @return
+     */
+    public String joinMailboxPath(MailboxPath mailboxPath) {
+        StringBuffer sb = new StringBuffer("");
+        if (mailboxPath.getNamespace() != null && !mailboxPath.getNamespace().equals("")) {
+            sb.append(mailboxPath.getNamespace());
+        }
+        if (mailboxPath.getUser() != null && !mailboxPath.getUser().equals("")) {
+            if (sb.length() > 0)
+                sb.append(MailboxConstants.DEFAULT_DELIMITER);
+            sb.append(mailboxPath.getUser());
+        }
+        if (mailboxPath.getName() != null && !mailboxPath.getName().equals("")) {
+            if (sb.length() > 0)
+                sb.append(MailboxConstants.DEFAULT_DELIMITER);
+            sb.append(mailboxPath.getName());
+        }
+        return sb.toString();
+    }
+
+    public String mailboxName(final boolean relative, final MailboxPath path) {
+        if (relative) {
+            return path.getName();
+        } else {
+            return joinMailboxPath(path);
         }
-        return mailboxName;
     }
     
     public MailboxManager getMailboxManager() {
@@ -330,9 +374,8 @@ abstract public class AbstractMailboxPro
         if (selectedMailbox == null) {
             result = null;
         } else {
-            final String mailboxName = selectedMailbox.getName();
             final MailboxManager mailboxManager = getMailboxManager();
-            result = mailboxManager.getMailbox(mailboxName, ImapSessionUtils.getMailboxSession(session));
+            result = mailboxManager.getMailbox(selectedMailbox.getPath(), ImapSessionUtils.getMailboxSession(session));
         }
         return result;
     }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java Sun Jul 18 18:18:08 2010
@@ -26,6 +26,7 @@ import java.util.List;
 import javax.mail.Flags;
 
 import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.message.request.ImapRequest;
 import org.apache.james.imap.api.message.response.StatusResponse;
@@ -79,8 +80,8 @@ abstract class AbstractSelectionProcesso
         final AbstractMailboxSelectionRequest request = (AbstractMailboxSelectionRequest) message;
         final String mailboxName = request.getMailboxName();
         try {
-            final String fullMailboxName = buildFullName(session, mailboxName);
-            final Mailbox.MetaData metaData = selectMailbox(fullMailboxName, session);
+            final MailboxPath fullMailboxPath = buildFullPath(session, mailboxName);
+            final Mailbox.MetaData metaData = selectMailbox(fullMailboxPath, session);
             respond(tag, command, session, metaData, responder);
         } catch (MailboxNotFoundException e) {
             responder.respond(statusResponseFactory.taggedNo(tag, command,
@@ -172,18 +173,17 @@ abstract class AbstractSelectionProcesso
         responder.respond(existsResponse);
     }
 
-    private Mailbox.MetaData  selectMailbox(String mailboxName, ImapSession session)
+    private Mailbox.MetaData  selectMailbox(MailboxPath mailboxPath, ImapSession session)
             throws MailboxException {
         final MailboxManager mailboxManager = getMailboxManager();
         final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
-        final Mailbox mailbox = mailboxManager.getMailbox(mailboxName, mailboxSession);
+        final Mailbox mailbox = mailboxManager.getMailbox(mailboxPath, mailboxSession);
 
         final SelectedMailbox sessionMailbox;
         final SelectedMailbox currentMailbox = session.getSelected();
         if (currentMailbox == null
-                || !currentMailbox.getName().equals(mailboxName)) {
-            sessionMailbox = createNewSelectedMailbox(mailbox, mailboxSession,
-                    session, mailboxName);
+                || !currentMailbox.getPath().equals(mailboxPath)) {
+            sessionMailbox = createNewSelectedMailbox(mailbox, mailboxSession, session, mailboxPath);
         } else {
             sessionMailbox = currentMailbox;
         }
@@ -193,9 +193,8 @@ abstract class AbstractSelectionProcesso
     }
 
     private SelectedMailbox createNewSelectedMailbox(final Mailbox mailbox,
-            final MailboxSession mailboxSession, ImapSession session, String name)
+            final MailboxSession mailboxSession, ImapSession session, MailboxPath path)
             throws MailboxException {
-        final SelectedMailbox sessionMailbox;
         final Iterator<MessageResult> it = mailbox.getMessages(MessageRange.all(),
                 FetchGroupImpl.MINIMAL, mailboxSession);
 
@@ -205,8 +204,8 @@ abstract class AbstractSelectionProcesso
             uids.add(result.getUid());
         }
         
-        sessionMailbox = new SelectedMailboxImpl(getMailboxManager(), uids,
-                mailboxSession, name);
+        final SelectedMailbox sessionMailbox = new SelectedMailboxImpl(getMailboxManager(), uids,
+                                                                        mailboxSession, path);
         session.selected(sessionMailbox);
         return sessionMailbox;
     }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AppendProcessor.java Sun Jul 18 18:18:08 2010
@@ -28,6 +28,7 @@ import javax.mail.Flags;
 import org.apache.commons.logging.Log;
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.message.request.ImapRequest;
 import org.apache.james.imap.api.message.response.StatusResponse;
@@ -68,11 +69,11 @@ public class AppendProcessor extends Abs
         final Flags flags = request.getFlags();
         try {
 
-            final String fullMailboxName = buildFullName(session, mailboxName);
+            final MailboxPath mailboxPath = buildFullPath(session, mailboxName);
             final MailboxManager mailboxManager = getMailboxManager();
-            final Mailbox mailbox = mailboxManager.getMailbox(fullMailboxName, ImapSessionUtils.getMailboxSession(session));
+            final Mailbox mailbox = mailboxManager.getMailbox(mailboxPath, ImapSessionUtils.getMailboxSession(session));
             appendToMailbox(messageIn, datetime, flags, session, tag,
-                    command, mailbox, responder, fullMailboxName);
+                    command, mailbox, responder, mailboxPath);
         } catch (MailboxNotFoundException e) {
             // consume message on exception
             cosume(messageIn);
@@ -122,18 +123,16 @@ public class AppendProcessor extends Abs
         no(command, tag, responder,
                 HumanReadableText.FAILURE_NO_SUCH_MAILBOX,
                 StatusResponse.ResponseCode.tryCreate());
-       
     }
 
     private void appendToMailbox(final InputStream message, final Date datetime,
             final Flags flagsToBeSet, final ImapSession session, final String tag,
-            final ImapCommand command, final Mailbox mailbox, Responder responder, final String fullMailboxName) {
+            final ImapCommand command, final Mailbox mailbox, Responder responder, final MailboxPath mailboxPath) {
         try {
-            final MailboxSession mailboxSession = ImapSessionUtils
-                    .getMailboxSession(session);
+            final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
             final SelectedMailbox selectedMailbox = session.getSelected();
             final boolean isSelectedMailbox = selectedMailbox != null
-                    && fullMailboxName.equals(selectedMailbox.getName());
+                    && selectedMailbox.getPath().equals(mailboxPath);
             final long uid  = mailbox.appendMessage(message, datetime, mailboxSession, 
                     !isSelectedMailbox, flagsToBeSet);
             if (isSelectedMailbox) {
@@ -152,4 +151,6 @@ public class AppendProcessor extends Abs
             no(command, tag, responder, e, session);
         }
     }
+    
+    
 }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java Sun Jul 18 18:18:08 2010
@@ -21,6 +21,7 @@ package org.apache.james.imap.processor;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.message.IdRange;
 import org.apache.james.imap.api.message.request.ImapRequest;
@@ -51,19 +52,16 @@ public class CopyProcessor extends Abstr
     protected void doProcess(ImapRequest message, ImapSession session,
             String tag, ImapCommand command, Responder responder) {
         final CopyRequest request = (CopyRequest) message;
-        final String mailboxName = request.getMailboxName();
+        final MailboxPath targetMailbox = buildFullPath(session, request.getMailboxName());
         final IdRange[] idSet = request.getIdSet();
         final boolean useUids = request.isUseUids();
         final SelectedMailbox currentMailbox = session.getSelected();
         try {
             final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
-            final String fullMailboxName = buildFullName(session, mailboxName);
             final MailboxManager mailboxManager = getMailboxManager();
-            final boolean mailboxExists = mailboxManager
-                    .mailboxExists(fullMailboxName, mailboxSession);
+            final boolean mailboxExists = mailboxManager.mailboxExists(targetMailbox, mailboxSession);
             if (!mailboxExists) {
-                no(command, tag, responder,
-                        HumanReadableText.FAILURE_NO_SUCH_MAILBOX,
+                no(command, tag, responder, HumanReadableText.FAILURE_NO_SUCH_MAILBOX,
                         ResponseCode.tryCreate());
             } else {
                 for (int i = 0; i < idSet.length; i++) {
@@ -79,8 +77,9 @@ public class CopyProcessor extends Abstr
                                 (int) idSet[i].getLowVal());
                     }
                     MessageRange messageSet = MessageRange.range(lowVal, highVal);
-                    mailboxManager.copyMessages(messageSet, currentMailbox
-                            .getName(), fullMailboxName, mailboxSession);
+
+                    mailboxManager.copyMessages(messageSet, currentMailbox.getPath(),
+                                                targetMailbox, mailboxSession);
                 }
                 unsolicitedResponses(session, responder, useUids);
                 okComplete(command, tag, responder);

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CreateProcessor.java Sun Jul 18 18:18:08 2010
@@ -21,6 +21,7 @@ package org.apache.james.imap.processor;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.api.message.request.ImapRequest;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapProcessor;
@@ -45,12 +46,10 @@ public class CreateProcessor extends Abs
     protected void doProcess(ImapRequest message, ImapSession session,
             String tag, ImapCommand command, Responder responder) {
         final CreateRequest request = (CreateRequest) message;
-        final String mailboxName = request.getMailboxName();
+        final MailboxPath mailboxPath = buildFullPath(session, request.getMailboxName());
         try {
-
-            final String fullMailboxName = buildFullName(session, mailboxName);
             final MailboxManager mailboxManager = getMailboxManager();
-            mailboxManager.createMailbox(fullMailboxName, ImapSessionUtils.getMailboxSession(session));
+            mailboxManager.createMailbox(mailboxPath, ImapSessionUtils.getMailboxSession(session));
             unsolicitedResponses(session, responder, false);
             okComplete(command, tag, responder);
         } catch (MailboxException e) {

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/DeleteProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/DeleteProcessor.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/DeleteProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/DeleteProcessor.java Sun Jul 18 18:18:08 2010
@@ -21,6 +21,7 @@ package org.apache.james.imap.processor;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.api.message.request.ImapRequest;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapProcessor;
@@ -46,19 +47,16 @@ public class DeleteProcessor extends Abs
     protected void doProcess(ImapRequest message, ImapSession session,
             String tag, ImapCommand command, Responder responder) {
         final DeleteRequest request = (DeleteRequest) message;
-        final String mailboxName = request.getMailboxName();
+        final MailboxPath mailboxPath = buildFullPath(session, request.getMailboxName());
         try {
-            final String fullMailboxName = buildFullName(session, mailboxName);
             final SelectedMailbox selected = session.getSelected();
-            if (selected != null && selected.getName().equals(fullMailboxName)) {
+            if (selected != null && selected.getPath().equals(mailboxPath)) {
                 session.deselect();
             }
             final MailboxManager mailboxManager = getMailboxManager();
-            mailboxManager.deleteMailbox(fullMailboxName, ImapSessionUtils
-                    .getMailboxSession(session));
+            mailboxManager.deleteMailbox(mailboxPath, ImapSessionUtils.getMailboxSession(session));
             unsolicitedResponses(session, responder, false);
             okComplete(command, tag, responder);
-
         } catch (MailboxException e) {
             no(command, tag, responder, e, session);
         }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LSubProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LSubProcessor.java?rev=965270&r1=965269&r2=965270&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LSubProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LSubProcessor.java Sun Jul 18 18:18:08 2010
@@ -25,11 +25,13 @@ import java.util.Collection;
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
+import org.apache.james.imap.api.MailboxPath;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.message.request.ImapRequest;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapProcessor;
 import org.apache.james.imap.api.process.ImapSession;
+import org.apache.james.imap.mailbox.MailboxConstants;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxManager;
 import org.apache.james.imap.mailbox.MailboxQuery;
@@ -60,10 +62,8 @@ public class LSubProcessor extends Abstr
         try {
             if (mailboxPattern.length() == 0) {
                 respondWithHierarchyDelimiter(responder);
-
             } else {
-                listSubscriptions(session, responder, referenceName,
-                        mailboxPattern);
+                listSubscriptions(session, responder, referenceName, mailboxPattern);
             }
 
             okComplete(command, tag, responder);
@@ -86,42 +86,50 @@ public class LSubProcessor extends Abstr
     }
 
     private void listSubscriptions(ImapSession session, Responder responder,
-            final String referenceName, final String mailboxPattern)
+            final String referenceName, final String mailboxName)
             throws SubscriptionException, MailboxException {
         final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
         final MailboxManager manager = getMailboxManager();
         final Collection<String> mailboxes = manager.subscriptions(mailboxSession);
-        final MailboxQuery expression = new MailboxQuery(
-                referenceName, mailboxPattern, '*', '%');
+        // If the mailboxName is fully qualified, ignore the reference name.
+        String finalReferencename = referenceName;
+        if (mailboxName.charAt(0) == ImapConstants.NAMESPACE_PREFIX_CHAR) {
+            finalReferencename = "";
+        }
+        // Is the interpreted (combined) pattern relative?
+        boolean isRelative = ((finalReferencename + mailboxName).charAt(0) != ImapConstants.NAMESPACE_PREFIX_CHAR);
+        MailboxPath basePath = null;
+        if (isRelative) {
+            basePath = new MailboxPath(MailboxConstants.USER_NAMESPACE,
+                    mailboxSession.getUser().getUserName(), finalReferencename);
+        }
+        else {
+            basePath = buildFullPath(session, finalReferencename);
+        }
+        
+        final MailboxQuery expression = new MailboxQuery(basePath, mailboxName, '*', '%');
         final Collection<String> mailboxResponses = new ArrayList<String>();
-        for (final String mailboxName: mailboxes) {
-            respond(responder, expression, mailboxName, true, mailboxes,
-                    mailboxResponses);
+        for (final String mailbox: mailboxes) {
+            respond(responder, expression, mailbox, true, mailboxes, mailboxResponses);
         }
     }
 
-    private void respond(Responder responder,
-            final MailboxQuery expression, final String mailboxName,
-            final boolean originalSubscription, final Collection<String> mailboxes,
-            final Collection<String> mailboxResponses) {
-        if (expression.isExpressionMatch(mailboxName,
-                ImapConstants.HIERARCHY_DELIMITER_CHAR)) {
+    private void respond(Responder responder, final MailboxQuery expression,
+            final String mailboxName, final boolean originalSubscription,
+            final Collection<String> mailboxes, final Collection<String> mailboxResponses) {
+        if (expression.isExpressionMatch(mailboxName)) {
             if (!mailboxResponses.contains(mailboxName)) {
-                final LSubResponse response = new LSubResponse(mailboxName,
-                        ImapConstants.HIERARCHY_DELIMITER,
-                        !originalSubscription);
+                final LSubResponse response = new LSubResponse(mailboxName, !originalSubscription);
                 responder.respond(response);
                 mailboxResponses.add(mailboxName);
             }
-        } else {
-            final int lastDelimiter = mailboxName
-                    .lastIndexOf(ImapConstants.HIERARCHY_DELIMITER_CHAR);
+        }
+        else {
+            final int lastDelimiter = mailboxName.lastIndexOf(ImapConstants.HIERARCHY_DELIMITER_CHAR);
             if (lastDelimiter > 0) {
-                final String parentMailbox = mailboxName.substring(0,
-                        lastDelimiter);
+                final String parentMailbox = mailboxName.substring(0, lastDelimiter);
                 if (!mailboxes.contains(parentMailbox)) {
-                    respond(responder, expression, parentMailbox, false,
-                            mailboxes, mailboxResponses);
+                    respond(responder, expression, parentMailbox, false, mailboxes, mailboxResponses);
                 }
             }
         }
@@ -135,8 +143,7 @@ public class LSubProcessor extends Abstr
      *            IMAP reference name, possibly null
      */
     private void respondWithHierarchyDelimiter(final Responder responder) {
-        final LSubResponse response = new LSubResponse("",
-                ImapConstants.HIERARCHY_DELIMITER, true);
+        final LSubResponse response = new LSubResponse("", true);
         responder.respond(response);
     }
 }



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