Author: norman
Date: Mon Jun 13 11:45:47 2011
New Revision: 1135099

URL: http://svn.apache.org/viewvc?rev=1135099&view=rev
Log:
Make sure we use a in memory copy of the mailbox entity when pass it to the 
events. Otherwise it may fail to access properties if they are lazy loaded from 
the store.

Modified:
    
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java

Modified: 
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java?rev=1135099&r1=1135098&r2=1135099&view=diff
==============================================================================
--- 
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 (original)
+++ 
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 Mon Jun 13 11:45:47 2011
@@ -310,12 +310,76 @@ public abstract class StoreMailboxManage
         Mailbox<Id> mailbox = mapper.execute(new 
Mapper.Transaction<Mailbox<Id>>() {
 
             public Mailbox<Id> run() throws MailboxException {
-                Mailbox<Id> mailbox = mapper.findMailboxByPath(mailboxPath);
+                final Mailbox<Id> mailbox = 
mapper.findMailboxByPath(mailboxPath);
                 if (mailbox == null) {
                     throw new MailboxNotFoundException("Mailbox not found");
                 }
+                
+                // We need to create a copy of the mailbox as maybe we can not 
refer to the real
+                // mailbox once we remove it 
+                Mailbox<Id> m = new Mailbox<Id>() {
+                    private Id id = mailbox.getMailboxId();
+                    private String namespace = mailbox.getNamespace();
+                    private String name = mailbox.getName();
+                    private String user = mailbox.getUser();
+                    private long uidVal = mailbox.getUidValidity();
+                    private long lastUid = mailbox.getLastKnownUid();
+                    private long lastSeq = mailbox.getHighestKnownModSeq();
+                    
+                    
+                    public Id getMailboxId() {
+                        return id;
+                    }
+
+                    @Override
+                    public String getNamespace() {
+                        return namespace;
+                    }
+
+                    @Override
+                    public void setNamespace(String namespace) {
+                        this.namespace = namespace;
+                    }
+
+                    @Override
+                    public String getUser() {
+                        return user;
+                    }
+
+                    @Override
+                    public void setUser(String user) {
+                        this.user = user;
+                    }
+
+                    @Override
+                    public String getName() {
+                        return name;
+                    }
+
+                    @Override
+                    public void setName(String name) {
+                        this.name = name;
+                        
+                    }
+
+                    @Override
+                    public long getUidValidity() {
+                        return uidVal;
+                    }
+
+                    @Override
+                    public long getLastKnownUid() {
+                        return lastUid;
+                    }
+
+                    @Override
+                    public long getHighestKnownModSeq() {
+                        return lastSeq;
+                    }
+                    
+                };
                 mapper.delete(mailbox);
-                return mailbox;
+                return m;
             }
 
         });



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

Reply via email to