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: [email protected]
For additional commands, e-mail: [email protected]