Author: norman Date: Mon Oct 10 19:13:46 2011 New Revision: 1181144 URL: http://svn.apache.org/viewvc?rev=1181144&view=rev Log: Don't lock mailbox longer then necessary...
Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java?rev=1181144&r1=1181143&r2=1181144&view=diff ============================================================================== --- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java (original) +++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java Mon Oct 10 19:13:46 2011 @@ -78,7 +78,8 @@ public class SelectedMailboxImpl impleme private boolean isDeletedByOtherSession = false; private boolean sizeChanged = false; private boolean silentFlagChanges = false; - private Flags applicableFlags; + private final Flags applicableFlags = new Flags(FLAGS); + private boolean applicableFlagsChanged; private final SortedMap<Integer, Long> msnToUid =new TreeMap<Integer, Long>();; @@ -101,23 +102,24 @@ public class SelectedMailboxImpl impleme } - private synchronized void init() throws MailboxException { + private void init() throws MailboxException { MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session); mailboxManager.addListener(path, this, mailboxSession); MessageResultIterator messages = mailboxManager.getMailbox(path, mailboxSession).getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, mailboxSession); - Flags applicableFlags = new Flags(FLAGS); - while(messages.hasNext()) { - MessageResult mr = messages.next(); - applicableFlags.add(mr.getFlags()); - add(mr.getUid()); + synchronized (this) { + while(messages.hasNext()) { + MessageResult mr = messages.next(); + applicableFlags.add(mr.getFlags()); + add(mr.getUid()); + } + + + // \RECENT is not a applicable flag in imap so remove it from the list + applicableFlags.remove(Flags.Flag.RECENT); } - - - // \RECENT is not a applicable flag in imap so remove it from the list - applicableFlags.remove(Flags.Flag.RECENT); - this.applicableFlags = applicableFlags; + } private void add(int msn, long uid) { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org