use HashMap rather than WeakHashMap
[org.ibex.mail.git] / src / org / ibex / mail / FileBasedMailbox.java
index 066781a..dd41566 100644 (file)
@@ -19,17 +19,20 @@ import javax.servlet.*;
 import javax.servlet.http.*;
 
 /** An exceptionally crude implementation of Mailbox relying on POSIXy filesystem semantics */
-public class FileBasedMailbox extends Mailbox.Default implements MailboxTree {
+public class FileBasedMailbox extends Mailbox.Default implements MailTree {
 
-    public static final long MAGIC_DATE = 0;
+    public static final long MAGIC_DATE =  0;
     private static final char slash = File.separatorChar;
-    private static final WeakHashMap<String,FileBasedMailbox> instances = new WeakHashMap<String,FileBasedMailbox>();
+
+    // FIXME: ideally this should be weak, but we end up getting duplicates of SqliteMailboxes
+    private static final HashMap<String,MailTree> instances = new HashMap<String,MailTree>();
+
     public String toString() { return "[FileBasedMailbox " + path.getAbsolutePath() + "]"; }
 
-    public MailboxTree slash(String name, boolean create) { return getFileBasedMailbox(path.getAbsolutePath()+slash+name, create); }
+    public MailTree slash(String name, boolean create) { return getFileBasedMailbox(path.getAbsolutePath()+slash+name, create); }
 
     public void         rmdir(String subdir) { throw new RuntimeException("FIXME not implemented"); }
-    public void         rename(String subdir, MailboxTree newParent, String newName) { throw new RuntimeException("FIXME not implemented"); }
+    public void         rename(String subdir, MailTree newParent, String newName) { throw new RuntimeException("FIXME not implemented"); }
     public Mailbox      getMailbox() { return this; }
 
     public JS get(JS key) throws JSExn {
@@ -37,9 +40,9 @@ public class FileBasedMailbox extends Mailbox.Default implements MailboxTree {
     }
 
     // FIXME: should be a File()
-    public static synchronized MailboxTree getFileBasedMailbox(String path, boolean create) {
+    public static synchronized MailTree getFileBasedMailbox(String path, boolean create) {
         try {
-            MailboxTree ret = instances.get(path);
+            MailTree ret = instances.get(path);
             if (ret == null) {
                 if (!create && !(new File(path).exists())) return null;
                 ret = new FileBasedMailbox(new File(path));