Mailbox -> MailboxTree separation
[org.ibex.mail.git] / src / org / ibex / mail / Mailbox.java
index 1baf9f0..a0dc665 100644 (file)
@@ -13,7 +13,7 @@ import java.util.*;
 import java.text.*;
 
 /** abstract superclass for mailboxes, which store messages along with their flags */
-public abstract class Mailbox extends JS.Obj implements Target {
+public abstract class Mailbox extends MailboxTree implements Target {
 
     public JS get(JS key) throws JSExn {
         return slash(JSU.toString(key), true);
@@ -37,8 +37,7 @@ public abstract class Mailbox extends JS.Obj implements Target {
     public abstract int              uidNext();
     public abstract void             rename(String newName);      /* FIXME: IMAP semantics require creating parent dirs */
     public abstract void             destroy(boolean recursive);
-    public abstract Mailbox          slash(String name, boolean create);
-    public abstract String[]         children();
+    public          Mailbox          getMailbox() { return this; }
 
     // Thunks ////////////////////////////////////////////////////////////////////////////
 
@@ -59,7 +58,7 @@ public abstract class Mailbox extends JS.Obj implements Target {
         public int count(Query q) { int count = 0; for(Mailbox.Iterator it = iterator(q); it.next();) count++; return count; }
         public void rename(String newName) { throw new MailException("not supported"); }
         public void  destroy(boolean recursive) { throw new MailException("not supported"); }
-        public Mailbox slash(String name, boolean create) { return null; }
+        public MailboxTree slash(String name, boolean create) { return null; }
         public String[] children() { return new String[] { }; }
         public void post(Message message) { insert(message, Flag.RECENT); }
         public void move(Query q, Mailbox dest) {
@@ -166,7 +165,7 @@ public abstract class Mailbox extends JS.Obj implements Target {
         public int              uidNext() { return m.uidNext(); }
         public void             rename(String newName) { m.rename(newName); }
         public void             destroy(boolean recursive) { m.destroy(recursive); }
-        public Mailbox          slash(String name, boolean create) { return m.slash(name, create); }
+        public MailboxTree      slash(String name, boolean create) { return m.slash(name, create); }
         public String[]         children() { return m.children(); }
         public Mailbox.Iterator iterator() { return m.iterator(); }
         public int              uidValidity()  { return m.uidValidity(); }