Mailbox inbox = null;
Mailbox selected = null;
- MailboxTree root = null;
+ MailTree root = null;
Mailbox selected() { if (selected == null) throw new Bad("no mailbox selected"); return selected; }
final Login auth;
final Client client;
private Mailbox mailbox(String name, boolean create) { return mailbox(name, create, true); }
private Mailbox mailbox(String name, boolean create, boolean throwexn) {
if (name.equalsIgnoreCase("inbox")) return inbox;
- MailboxTree mt = mailboxTree(name, create, throwexn);
+ MailTree mt = mailboxTree(name, create, throwexn);
return mt==null ? null : mt.getMailbox();
}
- private MailboxTree mailboxTree(String name, boolean create) { return mailboxTree(name, create, true); }
- private MailboxTree mailboxTree(String name, boolean create, boolean throwexn) {
- MailboxTree m = root;
+ private MailTree mailboxTree(String name, boolean create) { return mailboxTree(name, create, true); }
+ private MailTree mailboxTree(String name, boolean create, boolean throwexn) {
+ MailTree m = root;
for(StringTokenizer st = new StringTokenizer(name, sep + ""); st.hasMoreTokens();)
if ((m = m.slash(st.nextToken(), create)) == null) {
if (throwexn) throw new Server.No("no such mailbox " + name);
for(int i=0; i<children.length; i++) {
String s = children[i], pre = ref, kid = start + (start.length() > 0 ? sep+"" : "") + s;
if (mailbox(kid, false) == null) continue;
- MailboxTree phant = mailboxTree(kid, false, false);
+ MailTree phant = mailboxTree(kid, false, false);
if (phant != null) {
boolean phantom = phant.getMailbox()==null;
while(true) {
public void unselect() { selected = null; }
public void delete(String m0) { mailboxTree(dirname(m0),false).rmdir(basename(m0)); }
+
public void rename(String from0, String to) {
Mailbox from = mailbox(from0, false);
if (from.equals(inbox)) { from.copy(Query.all(), mailbox(to, true)); }
else if (to.equalsIgnoreCase("inbox")) { from.copy(Query.all(), mailbox(to, true)); delete(from0); }
- else mailboxTree(dirname(from0), false).rename(dirname(from0), mailboxTree(dirname(to), false), basename(to));
+ else mailboxTree(dirname(from0), false)
+ .rename(dirname(from0),
+ mailboxTree(dirname(to),
+ true /* required by IMAP */),
+ basename(to));
}
public void create(String m) { mailbox(m, true, false); }
public static class Listener implements Client {
String selectedName = null;
Mailbox inbox = null;
- MailboxTree root = null;
+ MailTree root = null;
Server api;
Parser parser = null;
Connection conn = null;
} else {
Account account = (Account)ret;
((MailboxWrapper)api).root = root = account.getMailbox(IMAP.class);
- MailboxTree ibt = root.slash("INBOX", false);
+ MailTree ibt = root.slash("INBOX", false);
Mailbox ib = ibt==null ? null : ibt.getMailbox();
((MailboxWrapper)api).inbox = inbox = ib;
}