You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2008/02/04 21:44:54 UTC

svn commit: r618429 [1/2] - in /james/server/trunk: core-library/src/main/java/org/apache/james/mailboxmanager/ core-library/src/main/java/org/apache/james/mailboxmanager/impl/ core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/ core-li...

Author: rdonkin
Date: Mon Feb  4 12:44:48 2008
New Revision: 618429

URL: http://svn.apache.org/viewvc?rev=618429&view=rev
Log:
Switched to using fetch groups. To allow mime parts and headers to be efficiently fetched.

Added:
    james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/FetchGroupImpl.java
    james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/OrFetchGroup.java
Modified:
    james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResult.java
    james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResultUtils.java
    james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/MessageResultImpl.java
    james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/AbstractImapMailbox.java
    james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/ImapMailbox.java
    james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultImplIncludedResultsTest.java
    james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultUtilsIsIncludedTest.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CloseProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/FetchProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/SelectedMailboxSession.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/AppendCommand.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/CloseCommand.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ExpungeCommand.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/FetchCommand.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SearchCommand.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SelectCommand.java
    james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/StoreCommand.java
    james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
    james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/AbstractImapMailboxSelfTestCase.java
    james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/torque/TorqueMailboxTestCase.java
    james/server/trunk/phoenix-deployment/src/test/org/apache/james/mailboxmanager/torque/repository/TorqueMailboxManagerMailRepositoryNativeTestCase.java
    james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MessageRowUtils.java
    james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java
    james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
    james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueResultIterator.java

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResult.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResult.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResult.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResult.java Mon Feb  4 12:44:48 2008
@@ -61,39 +61,56 @@
 public interface MessageResult extends Comparable {
 
     /**
-     * For example: could have best performance when doing store and then
-     * forget. UIDs are always returned
+     * Indicates the results fetched.
      */
-    public static final int MINIMAL = 0x00;
-
-    /**
-     * 
-     */
-    public static final int MIME_MESSAGE = 0x01;
-    
-    /**
-     * return a string baded key (used by James)
-     */
-    public static final int KEY = 0x10;
-
-    public static final int SIZE = 0x20;
-
-    public static final int INTERNAL_DATE = 0x40;
-
-    public static final int FLAGS = 0x80;
+    public interface FetchGroup {
+        
+        /**
+         * For example: could have best performance when doing store and then
+         * forget. UIDs are always returned
+         */
+        public static final int MINIMAL = 0x00;
+        /**
+         * 
+         */
+        public static final int MIME_MESSAGE = 0x01;
+        /**
+         * return a string baded key (used by James)
+         */
+        public static final int KEY = 0x10;
+        public static final int SIZE = 0x20;
+        public static final int INTERNAL_DATE = 0x40;
+        public static final int FLAGS = 0x80;
+        public static final int HEADERS = 0x100;
+        public static final int FULL_CONTENT = 0x200;
+        public static final int BODY_CONTENT = 0x400;
 
-    public static final int HEADERS = 0x100;
-    
-    public static final int FULL_CONTENT = 0x200;
-    
-    public static final int BODY_CONTENT = 0x400;
+        /**
+         * Contents to be retu
+         * @return  
+         */
+        public int content();
+        
+        /**
+         * Mime parts to be included in the results.
+         * @return array of mime parts numbered from one,
+         * or null
+         */
+        public int[] mimeParts();
+        
+        /**
+         * Mime headers to be included in the results.
+         * @return array of mime headers numbered from one
+         */
+        public int[] mimeHeaders();
+    }
     
     /**
      * Gets the results set.
      * @return bitwise indication of result set
      * @see MessageResultUtils#isIncluded(MessageResult, int)
      */
-    int getIncludedResults();
+    FetchGroup getIncludedResults();
 
     MimeMessage getMimeMessage() throws MailboxManagerException;
 
@@ -132,7 +149,7 @@
     /**
      * Gets headers for the message.
      * @return <code>Header</code> <code>Iterator</code>, 
-     * or null if {@link #HEADERS} was not fetched
+     * or null if {@link FetchGroup#HEADERS} was not fetched
      */
     Iterator iterateHeaders() throws MailboxManagerException;
     
@@ -160,7 +177,7 @@
      * Gets the full message including headers and body.
      * The message data should have normalised line endings (CRLF).
      * @return <code>Content</code>, 
-     * or or null if {@link #FULL_CONTENT} has not been included in the 
+     * or or null if {@link FetchGroup#FULL_CONTENT} has not been included in the 
      * results
      */
     Content getFullMessage() throws MailboxManagerException;
@@ -169,7 +186,7 @@
      * Gets the body of the message excluding headers.
      * The message data should have normalised line endings (CRLF).
      * @return <code>Content</code>,
-     * or or null if {@link #FULL_CONTENT} has not been included in the 
+     * or or null if {@link FetchGroup#FULL_CONTENT} has not been included in the 
      * results 
      */
     Content getMessageBody() throws MailboxManagerException;

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResultUtils.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResultUtils.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResultUtils.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/MessageResultUtils.java Mon Feb  4 12:44:48 2008
@@ -26,6 +26,7 @@
 import javax.mail.MessagingException;
 
 import org.apache.commons.collections.IteratorUtils;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
 
 public class MessageResultUtils {
 
@@ -143,17 +144,17 @@
         final boolean result;
         if (message == null) {
             result = false;
-        } else if (datum == MessageResult.MINIMAL) {
+        } else if (datum == FetchGroup.MINIMAL) {
             result = true;
         } else {
-            final int includes = message.getIncludedResults();
+            final int includes = message.getIncludedResults().content();
             result = (includes & datum) == datum;
         }
         return result;
     }
     
     /**
-     * Is {@link MessageResult#BODY_CONTENT} included in these results?
+     * Is {@link FetchGroup#BODY_CONTENT} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * BODY_CONTENT, false if <code>MessageResult</code> is null
@@ -161,11 +162,11 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isBodyContentIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.BODY_CONTENT);
+        return isIncluded(message, FetchGroup.BODY_CONTENT);
     }
     
     /**
-     * Is {@link MessageResult#FLAGS} included in these results?
+     * Is {@link FetchGroup#FLAGS} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * FLAGS, false if <code>MessageResult</code> is null
@@ -173,11 +174,11 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isFlagsIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.FLAGS);
+        return isIncluded(message, FetchGroup.FLAGS);
     }
     
     /**
-     * Is {@link MessageResult#FULL_CONTENT} included in these results?
+     * Is {@link FetchGroup#FULL_CONTENT} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * FULL_CONTENT, false if <code>MessageResult</code> is null
@@ -185,11 +186,11 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isFullContentIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.FULL_CONTENT);
+        return isIncluded(message, FetchGroup.FULL_CONTENT);
     }
     
     /**
-     * Is {@link MessageResult#HEADERS} included in these results?
+     * Is {@link FetchGroup#HEADERS} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * HEADERS, false if <code>MessageResult</code> is null
@@ -197,11 +198,11 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isHeadersIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.HEADERS);
+        return isIncluded(message, FetchGroup.HEADERS);
     }
     
     /**
-     * Is {@link MessageResult#KEY} included in these results?
+     * Is {@link FetchGroup#KEY} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * KEY, false if <code>MessageResult</code> is null
@@ -209,11 +210,11 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isKeyIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.KEY);
+        return isIncluded(message, FetchGroup.KEY);
     }
     
     /**
-     * Is {@link MessageResult#INTERNAL_DATE} included in these results?
+     * Is {@link FetchGroup#INTERNAL_DATE} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * INTERNAL_DATE, false if <code>MessageResult</code> is null
@@ -221,11 +222,11 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isInternalDateIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.INTERNAL_DATE);
+        return isIncluded(message, FetchGroup.INTERNAL_DATE);
     }
     
     /**
-     * Is {@link MessageResult#MIME_MESSAGE} included in these results?
+     * Is {@link FetchGroup#MIME_MESSAGE} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * MIME_MESSAGE, false if <code>MessageResult</code> is null
@@ -233,11 +234,11 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isMimeMessageIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.MIME_MESSAGE);
+        return isIncluded(message, FetchGroup.MIME_MESSAGE);
     }   
     
     /**
-     * Is {@link MessageResult#SIZE} included in these results?
+     * Is {@link FetchGroup#SIZE} included in these results?
      * @param message <code>MessageResult</code>, possibly null
      * @return true if <code>MessageResult</code> includes 
      * SIZE, false if <code>MessageResult</code> is null
@@ -245,6 +246,6 @@
      * @see #isIncluded(MessageResult, int)
      */
     public static boolean isSizeIncluded(final MessageResult message) {
-        return isIncluded(message, MessageResult.SIZE);
+        return isIncluded(message, FetchGroup.SIZE);
     }
 }

Added: james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/FetchGroupImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/FetchGroupImpl.java?rev=618429&view=auto
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/FetchGroupImpl.java (added)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/FetchGroupImpl.java Mon Feb  4 12:44:48 2008
@@ -0,0 +1,92 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.mailboxmanager.impl;
+
+import org.apache.james.mailboxmanager.MessageResult;
+
+/**
+ * Specifies a fetch group.
+ */
+public class FetchGroupImpl implements MessageResult.FetchGroup {
+    
+    public static final MessageResult.FetchGroup MINIMAL 
+            = new FetchGroupImpl(MessageResult.FetchGroup.MINIMAL);
+    public static final MessageResult.FetchGroup MIME_MESSAGE 
+            = new FetchGroupImpl(MessageResult.FetchGroup.MIME_MESSAGE);
+    public static final MessageResult.FetchGroup KEY 
+            = new FetchGroupImpl(MessageResult.FetchGroup.KEY);
+    public static final MessageResult.FetchGroup SIZE 
+            = new FetchGroupImpl(MessageResult.FetchGroup.SIZE);
+    public static final MessageResult.FetchGroup INTERNAL_DATE 
+            = new FetchGroupImpl(MessageResult.FetchGroup.INTERNAL_DATE);
+    public static final MessageResult.FetchGroup FLAGS 
+            = new FetchGroupImpl(MessageResult.FetchGroup.FLAGS);
+    public static final MessageResult.FetchGroup HEADERS 
+            = new FetchGroupImpl(MessageResult.FetchGroup.HEADERS);
+    public static final MessageResult.FetchGroup FULL_CONTENT 
+            = new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT);
+    public static final MessageResult.FetchGroup BODY_CONTENT 
+            = new FetchGroupImpl(MessageResult.FetchGroup.BODY_CONTENT);
+    
+    
+    private int content = MessageResult.FetchGroup.MINIMAL;
+    private int[] mimeParts = null;
+    private int[] mimeHeaders = null;
+    
+    public FetchGroupImpl() {
+        super();
+    }
+    
+    public FetchGroupImpl(int content) {
+        super();
+        this.content = content;
+    }
+    
+    public FetchGroupImpl(int content, int[] mimeParts, int[] mimeHeaders) {
+        super();
+        this.content = content;
+        this.mimeParts = mimeParts;
+        this.mimeHeaders = mimeHeaders;
+    }
+
+    public int content() {
+        return content;
+    }
+    
+    public int[] mimeHeaders() {
+        return mimeHeaders;
+    }
+
+    public int[] mimeParts() {
+        return mimeParts;
+    }
+    
+    public void setMimeParts(int[] mimeParts) {
+        this.mimeParts = mimeParts;
+    }
+    
+    public void setMimeHeaders(int[] mimeHeaders) {
+        this.mimeHeaders = mimeHeaders;
+    }
+    
+    public String toString() {
+        return "Fetch " + content;
+    }
+}

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/MessageResultImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/MessageResultImpl.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/MessageResultImpl.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/impl/MessageResultImpl.java Mon Feb  4 12:44:48 2008
@@ -47,7 +47,7 @@
     private List headers;
     private Content messageBody;
     private Content fullMessage;
-    private int includedResults = MINIMAL;
+    private int includedResults = FetchGroup.MINIMAL;
 
     public MessageResultImpl(long uid) {
         setUid(uid);
@@ -89,8 +89,8 @@
         }
     }
 
-    public int getIncludedResults() {
-        return includedResults;
+    public MessageResult.FetchGroup getIncludedResults() {
+        return new FetchGroupImpl(includedResults);
     }
 
     public MimeMessage getMimeMessage() {
@@ -100,7 +100,7 @@
     public void setMimeMessage(MimeMessage mimeMessage) {
         this.mimeMessage=mimeMessage;
         if (mimeMessage != null) {
-            includedResults |= MIME_MESSAGE;
+            includedResults |= FetchGroup.MIME_MESSAGE;
         }
     }
     
@@ -136,7 +136,7 @@
     public void setFlags(Flags flags) {
         this.flags=flags;
         if (flags != null) {
-            includedResults |= FLAGS;
+            includedResults |= FetchGroup.FLAGS;
         }
     }
 
@@ -157,13 +157,13 @@
 
     public void setSize(int size) {
         this.size=size;
-        includedResults |= SIZE;
+        includedResults |= FetchGroup.SIZE;
     }
 
     public void setInternalDate(Date internalDate) {
         this.internalDate = internalDate;
         if (internalDate != null) {
-            includedResults |= INTERNAL_DATE;
+            includedResults |= FetchGroup.INTERNAL_DATE;
         }
     }
     
@@ -208,7 +208,7 @@
     public void setKey(String key) {
         this.key=key;
         if (key != null) {
-            includedResults |= KEY;
+            includedResults |= FetchGroup.KEY;
         }
     }
 
@@ -223,7 +223,7 @@
     public void setHeaders(List headers) {
         this.headers = headers;
         if (headers != null) {
-            includedResults |= HEADERS;
+            includedResults |= FetchGroup.HEADERS;
         }
     }
 
@@ -234,7 +234,7 @@
     public final void setFullMessage(Content fullMessage) {
         this.fullMessage = fullMessage;
         if (fullMessage != null) {
-            includedResults |= FULL_CONTENT;
+            includedResults |= FetchGroup.FULL_CONTENT;
         }
     }
 
@@ -245,7 +245,7 @@
     public final void setMessageBody(Content messageBody) {
         this.messageBody = messageBody;
         if (messageBody != null) {
-            includedResults |= BODY_CONTENT;
+            includedResults |= FetchGroup.BODY_CONTENT;
         }
     }
 

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/AbstractImapMailbox.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/AbstractImapMailbox.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/AbstractImapMailbox.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/AbstractImapMailbox.java Mon Feb  4 12:44:48 2008
@@ -29,13 +29,15 @@
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
 import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.util.AbstractLogFactoryAware;
 
 public abstract class AbstractImapMailbox extends AbstractLogFactoryAware implements ImapMailbox {
     
     public Collection list(MailboxSession mailboxSession) throws MailboxManagerException {
-        final Iterator it = getMessages(GeneralMessageSetImpl.all(), MessageResult.KEY, mailboxSession);
+        final Iterator it = getMessages(GeneralMessageSetImpl.all(), FetchGroupImpl.KEY, mailboxSession);
         final Collection result = new ArrayList(100);
         while (it.hasNext()) {
             final MessageResult next = (MessageResult) it.next();
@@ -51,7 +53,7 @@
 
     public MimeMessage retrieve(final String key, MailboxSession mailboxSession) throws MailboxManagerException {
         final Iterator it = getMessages(GeneralMessageSetImpl.oneKey(key),
-                MessageResult.MIME_MESSAGE, mailboxSession);
+                FetchGroupImpl.MIME_MESSAGE, mailboxSession);
         final MimeMessage result;
         if (it.hasNext()) {
             final MessageResult message = (MessageResult) it.next();
@@ -63,7 +65,7 @@
     }
 
     public String store(MimeMessage message, MailboxSession mailboxSession) throws MailboxManagerException {
-        MessageResult result=appendMessage(message, new Date(), MessageResult.KEY, mailboxSession);
+        MessageResult result=appendMessage(message, new Date(), FetchGroupImpl.KEY, mailboxSession);
         return result.getKey();
     }
 }

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/ImapMailbox.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/ImapMailbox.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/ImapMailbox.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/ImapMailbox.java Mon Feb  4 12:44:48 2008
@@ -30,6 +30,7 @@
 import org.apache.james.mailboxmanager.MailboxSession;
 import org.apache.james.mailboxmanager.MessageResult;
 import org.apache.james.mailboxmanager.SearchParameters;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
 
 
 
@@ -42,7 +43,7 @@
     public static final long ANONYMOUS_SESSION = 0;
     
     /**
-     * @param result
+     * @param fetchGroup
      *            which fields to be returned in MessageResult
      * @param mailboxSession TODO
      * @return MessageResult with the fields defined by <b>result</b>
@@ -55,7 +56,7 @@
      * @throws UnsupportedCriteriaException when any of the search parameters are 
      * not supported by this mailbox
      */
-    Iterator search(GeneralMessageSet set,SearchParameters searchTerm, int result, 
+    Iterator search(GeneralMessageSet set, SearchParameters searchTerm, FetchGroup fetchGroup, 
             MailboxSession mailboxSession) throws MailboxManagerException;
     
     
@@ -82,7 +83,7 @@
     
     int getUnseenCount(MailboxSession mailboxSession) throws MailboxManagerException;
     
-    MessageResult getFirstUnseen(int result, MailboxSession mailboxSession) throws MailboxManagerException;
+    MessageResult getFirstUnseen(FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxManagerException;
     
     /**
      * 
@@ -91,7 +92,7 @@
      *            <li> IMAP, Javamail: not required, always expunge all</li>
      *            <li> UIDPLUS: requires the possibility of defining a uid range</li>
      *            </ul>
-     * @param result
+     * @param fetchGroup
      *            which fields to be returned in MessageResult
      * @param mailboxSession TODO
      * 
@@ -104,7 +105,7 @@
      * @throws MailboxManagerException
      *             if anything went wrong
      */
-    Iterator expunge(GeneralMessageSet set, int result, MailboxSession mailboxSession) throws MailboxManagerException;
+    Iterator expunge(GeneralMessageSet set, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxManagerException;
     
 
     /**
@@ -120,14 +121,14 @@
      *            replace all Flags with this flags, value has to be true
      * @param set
      *            the range of messages
-     * @param result fetch group for results 
+     * @param fetchGroup fetch group for results 
      * @param mailboxSession TODO
      * @return {@link MessageResult} <code>Iterator</code> containing messages
      * whose flags have been updated, not null
      * @throws MailboxManagerException
      */
     Iterator setFlags(Flags flags, boolean value, boolean replace, 
-            GeneralMessageSet set, int result, MailboxSession mailboxSession) throws MailboxManagerException;
+            GeneralMessageSet set, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxManagerException;
     
     /**
      * @param internalDate
@@ -135,7 +136,7 @@
      *            this server (by smtp). Clients are also allowed to set the
      *            internalDate on apppend.</p><p>Is this Mail.getLastUpdates() for 
      *            James delivery? Should we use MimeMessage.getReceivedDate()?
-     * @param result
+     * @param fetchGroup
      *            which fields to be returned in MessageResult
      * @param mailboxSession TODO
      * @return MessageResult with the fields defined by <b>result</b>
@@ -148,7 +149,7 @@
      *             if anything went wrong
      */
     MessageResult appendMessage(MimeMessage message, Date internalDate,
-            int result, MailboxSession mailboxSession) throws MailboxManagerException;
+            FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxManagerException;
     
     /**
      * 
@@ -163,7 +164,7 @@
      * @throws MailboxManagerException 
      */
 
-    Iterator getMessages(GeneralMessageSet set, int result, MailboxSession mailboxSession) 
+    Iterator getMessages(GeneralMessageSet set, FetchGroup fetchGroup, MailboxSession mailboxSession) 
         throws MailboxManagerException;
     
     void remove(GeneralMessageSet set, MailboxSession mailboxSession) throws MailboxManagerException;

Modified: james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultImplIncludedResultsTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultImplIncludedResultsTest.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultImplIncludedResultsTest.java (original)
+++ james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultImplIncludedResultsTest.java Mon Feb  4 12:44:48 2008
@@ -27,6 +27,7 @@
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
 import org.apache.james.mailboxmanager.impl.MessageResultImpl;
 import org.jmock.MockObjectTestCase;
 
@@ -48,118 +49,118 @@
     public void testShouldIncludedResultsWhenMimeMessageSet() throws Exception {
         MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
         result.setMimeMessage(null);
-        assertEquals(MessageResult.MINIMAL, result.getIncludedResults());
+        assertEquals(FetchGroup.MINIMAL, result.getIncludedResults().content());
         result.setMimeMessage(message);
-        assertEquals(MessageResult.MIME_MESSAGE, result.getIncludedResults());
+        assertEquals(FetchGroup.MIME_MESSAGE, result.getIncludedResults().content());
         MessageResultImpl result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.MIME_MESSAGE, result.getIncludedResults());
+        assertEquals(FetchGroup.MIME_MESSAGE, result.getIncludedResults().content());
     }
 
     public void testShouldIncludedResultsWhenFlagsSet() throws Exception {
         result.setFlags(null);
-        assertEquals(MessageResult.MINIMAL, result.getIncludedResults());
+        assertEquals(FetchGroup.MINIMAL, result.getIncludedResults().content());
         Flags flags = new Flags();
         result.setFlags(flags);
-        assertEquals(MessageResult.FLAGS, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS, result.getIncludedResults().content());
         MessageResultImpl result = new MessageResultImpl(77, flags);
-        assertEquals(MessageResult.FLAGS, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS, result.getIncludedResults().content());
         result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.FLAGS, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS, result.getIncludedResults().content());
     }
 
     public void testShouldIncludedResultsWhenSizeSet() throws Exception {
         result.setSize(100);
-        assertEquals(MessageResult.SIZE, result.getIncludedResults());
+        assertEquals(FetchGroup.SIZE, result.getIncludedResults().content());
         MessageResultImpl result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.SIZE, result.getIncludedResults());
+        assertEquals(FetchGroup.SIZE, result.getIncludedResults().content());
     }
 
     public void testShouldIncludedResultsWhenInternalDateSet() throws Exception {
         result.setInternalDate(null);
-        assertEquals(MessageResult.MINIMAL, result.getIncludedResults());
+        assertEquals(FetchGroup.MINIMAL, result.getIncludedResults().content());
         Date date = new Date();
         result.setInternalDate(date);
-        assertEquals(MessageResult.INTERNAL_DATE, result.getIncludedResults());
+        assertEquals(FetchGroup.INTERNAL_DATE, result.getIncludedResults().content());
         result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.INTERNAL_DATE, result.getIncludedResults());
+        assertEquals(FetchGroup.INTERNAL_DATE, result.getIncludedResults().content());
     }
 
     public void testShouldIncludedResultsWhenKeySet() throws Exception {
         result.setKey(null);
-        assertEquals(MessageResult.MINIMAL, result.getIncludedResults());
+        assertEquals(FetchGroup.MINIMAL, result.getIncludedResults().content());
         result.setKey("KEY");
-        assertEquals(MessageResult.KEY, result.getIncludedResults());
+        assertEquals(FetchGroup.KEY, result.getIncludedResults().content());
         result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.KEY, result.getIncludedResults());
+        assertEquals(FetchGroup.KEY, result.getIncludedResults().content());
     }
 
     public void testShouldIncludedResultsWhenHeadersSet() throws Exception {
         result.setHeaders(null);
-        assertEquals(MessageResult.MINIMAL, result.getIncludedResults());
+        assertEquals(FetchGroup.MINIMAL, result.getIncludedResults().content());
         result.setHeaders(new ArrayList());
-        assertEquals(MessageResult.HEADERS, result.getIncludedResults());
+        assertEquals(FetchGroup.HEADERS, result.getIncludedResults().content());
         result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.HEADERS, result.getIncludedResults());
+        assertEquals(FetchGroup.HEADERS, result.getIncludedResults().content());
     }
     
     public void testShouldIncludedResultsWhenFullMessageSet() throws Exception  {
         result.setFullMessage(null);
-        assertEquals(MessageResult.MINIMAL, result.getIncludedResults());
+        assertEquals(FetchGroup.MINIMAL, result.getIncludedResults().content());
         result.setFullMessage(content);
-        assertEquals(MessageResult.FULL_CONTENT, result.getIncludedResults());
+        assertEquals(FetchGroup.FULL_CONTENT, result.getIncludedResults().content());
         result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.FULL_CONTENT, result.getIncludedResults());
+        assertEquals(FetchGroup.FULL_CONTENT, result.getIncludedResults().content());
     }
 
     public void testShouldIncludedResultsWhenMessageBodySet() throws Exception {
         result.setMessageBody(null);
-        assertEquals(MessageResult.MINIMAL, result.getIncludedResults());
+        assertEquals(FetchGroup.MINIMAL, result.getIncludedResults().content());
         result.setMessageBody(content);
-        assertEquals(MessageResult.BODY_CONTENT, result.getIncludedResults());
+        assertEquals(FetchGroup.BODY_CONTENT, result.getIncludedResults().content());
         result = new MessageResultImpl(this.result);
-        assertEquals(MessageResult.BODY_CONTENT, result.getIncludedResults());
+        assertEquals(FetchGroup.BODY_CONTENT, result.getIncludedResults().content());
     }
     
     public void testShouldIncludedResultsWhenAllSet() {
         Flags flags = new Flags();
         result.setFlags(flags);
-        assertEquals(MessageResult.FLAGS, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS, result.getIncludedResults().content());
         assertTrue(MessageResultUtils.isFlagsIncluded(result));
         result.setUid(99);
-        assertEquals(MessageResult.FLAGS, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS, result.getIncludedResults().content());
         assertTrue(MessageResultUtils.isFlagsIncluded(result));
         result.setMessageBody(content);
-        assertEquals(MessageResult.FLAGS | MessageResult.BODY_CONTENT, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS | FetchGroup.BODY_CONTENT, result.getIncludedResults().content());
         assertTrue(MessageResultUtils.isFlagsIncluded(result));
         assertTrue(MessageResultUtils.isBodyContentIncluded(result));
         result.setFullMessage(content);
-        assertEquals(MessageResult.FLAGS | 
-                MessageResult.BODY_CONTENT | MessageResult.FULL_CONTENT, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS | 
+                FetchGroup.BODY_CONTENT | FetchGroup.FULL_CONTENT, result.getIncludedResults().content());
         assertTrue(MessageResultUtils.isFlagsIncluded(result));
         assertTrue(MessageResultUtils.isBodyContentIncluded(result));
         assertTrue(MessageResultUtils.isFullContentIncluded(result));
         result.setHeaders(new ArrayList());
-        assertEquals(MessageResult.FLAGS | 
-                MessageResult.BODY_CONTENT | MessageResult.FULL_CONTENT 
-                | MessageResult.HEADERS, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS | 
+                FetchGroup.BODY_CONTENT | FetchGroup.FULL_CONTENT 
+                | FetchGroup.HEADERS, result.getIncludedResults().content());
         assertTrue(MessageResultUtils.isFlagsIncluded(result));
         assertTrue(MessageResultUtils.isBodyContentIncluded(result));
         assertTrue(MessageResultUtils.isFullContentIncluded(result));
         assertTrue(MessageResultUtils.isHeadersIncluded(result));
         result.setInternalDate(new Date());
-        assertEquals(MessageResult.FLAGS | 
-                MessageResult.BODY_CONTENT | MessageResult.FULL_CONTENT 
-                | MessageResult.HEADERS | MessageResult.INTERNAL_DATE, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS | 
+                FetchGroup.BODY_CONTENT | FetchGroup.FULL_CONTENT 
+                | FetchGroup.HEADERS | FetchGroup.INTERNAL_DATE, result.getIncludedResults().content());
         assertTrue(MessageResultUtils.isFlagsIncluded(result));
         assertTrue(MessageResultUtils.isBodyContentIncluded(result));
         assertTrue(MessageResultUtils.isFullContentIncluded(result));
         assertTrue(MessageResultUtils.isHeadersIncluded(result));
         assertTrue(MessageResultUtils.isInternalDateIncluded(result));
         result.setSize(100);
-        assertEquals(MessageResult.FLAGS | 
-                MessageResult.BODY_CONTENT | MessageResult.FULL_CONTENT 
-                | MessageResult.HEADERS | MessageResult.INTERNAL_DATE
-                | MessageResult.SIZE, result.getIncludedResults());
+        assertEquals(FetchGroup.FLAGS | 
+                FetchGroup.BODY_CONTENT | FetchGroup.FULL_CONTENT 
+                | FetchGroup.HEADERS | FetchGroup.INTERNAL_DATE
+                | FetchGroup.SIZE, result.getIncludedResults().content());
         assertTrue(MessageResultUtils.isFlagsIncluded(result));
         assertTrue(MessageResultUtils.isBodyContentIncluded(result));
         assertTrue(MessageResultUtils.isFullContentIncluded(result));

Modified: james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultUtilsIsIncludedTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultUtilsIsIncludedTest.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultUtilsIsIncludedTest.java (original)
+++ james/server/trunk/core-library/src/test/java/org/apache/james/mailboxmanager/MessageResultUtilsIsIncludedTest.java Mon Feb  4 12:44:48 2008
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailboxmanager;
 
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
 
@@ -33,69 +35,69 @@
     }
 
     public void testShouldReturnFalseWhenNull() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(null, MessageResult.FLAGS));
+        assertFalse(MessageResultUtils.isIncluded(null, FetchGroup.FLAGS));
     }
    
     public void testBodyContentIncluded() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL), MessageResult.BODY_CONTENT));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS), MessageResult.BODY_CONTENT));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT), MessageResult.BODY_CONTENT));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL), FetchGroup.BODY_CONTENT));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.FLAGS), FetchGroup.BODY_CONTENT));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT), FetchGroup.BODY_CONTENT));
     }
    
     public void testFlagsIncluded() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL), MessageResult.FLAGS));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT), MessageResult.FLAGS));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS), MessageResult.FLAGS));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS | MessageResult.BODY_CONTENT), MessageResult.FLAGS));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL), FetchGroup.FLAGS));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT), FetchGroup.FLAGS));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.FLAGS), FetchGroup.FLAGS));
+        assertTrue(MessageResultUtils.isIncluded(mock(new FetchGroupImpl(FetchGroup.FLAGS | FetchGroup.BODY_CONTENT)), FetchGroup.FLAGS));
     }
     
     public void testFULL_CONTENTIncluded() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL), MessageResult.FULL_CONTENT));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT), MessageResult.FULL_CONTENT));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FULL_CONTENT), MessageResult.FULL_CONTENT));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS | MessageResult.FULL_CONTENT), MessageResult.FULL_CONTENT));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL), FetchGroup.FULL_CONTENT));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT), FetchGroup.FULL_CONTENT));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.FULL_CONTENT), FetchGroup.FULL_CONTENT));
+        assertTrue(MessageResultUtils.isIncluded(mock(new FetchGroupImpl(FetchGroup.FLAGS | FetchGroup.FULL_CONTENT)), FetchGroup.FULL_CONTENT));
     }
     
     public void testHEADERSIncluded() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL), MessageResult.HEADERS));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT), MessageResult.HEADERS));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.HEADERS), MessageResult.HEADERS));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS | MessageResult.HEADERS), MessageResult.HEADERS));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL), FetchGroup.HEADERS));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT), FetchGroup.HEADERS));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.HEADERS), FetchGroup.HEADERS));
+        assertTrue(MessageResultUtils.isIncluded(mock(new FetchGroupImpl(FetchGroup.FLAGS | FetchGroup.HEADERS)), FetchGroup.HEADERS));
     }
     
     public void testINTERNAL_DATEIncluded() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL), MessageResult.INTERNAL_DATE));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT), MessageResult.INTERNAL_DATE));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.INTERNAL_DATE), MessageResult.INTERNAL_DATE));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS | MessageResult.INTERNAL_DATE), MessageResult.INTERNAL_DATE));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL), FetchGroup.INTERNAL_DATE));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT), FetchGroup.INTERNAL_DATE));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.INTERNAL_DATE), FetchGroup.INTERNAL_DATE));
+        assertTrue(MessageResultUtils.isIncluded(mock(new FetchGroupImpl(FetchGroup.FLAGS | FetchGroup.INTERNAL_DATE)), FetchGroup.INTERNAL_DATE));
     }
     
     public void testMIME_MESSAGEIncluded() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL), MessageResult.MIME_MESSAGE));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT), MessageResult.MIME_MESSAGE));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.MIME_MESSAGE), MessageResult.MIME_MESSAGE));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS | MessageResult.MIME_MESSAGE), MessageResult.MIME_MESSAGE));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL), FetchGroup.MIME_MESSAGE));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT), FetchGroup.MIME_MESSAGE));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MIME_MESSAGE), FetchGroup.MIME_MESSAGE));
+        assertTrue(MessageResultUtils.isIncluded(mock(new FetchGroupImpl(FetchGroup.FLAGS | FetchGroup.MIME_MESSAGE)), FetchGroup.MIME_MESSAGE));
     }
     
     public void testShouldNOTHINGAlwaysBeIncluded() throws Exception {
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL, false), MessageResult.MINIMAL));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT, false), MessageResult.MINIMAL));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.INTERNAL_DATE, false), MessageResult.MINIMAL));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS | MessageResult.MIME_MESSAGE, false), MessageResult.MINIMAL));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL, false), FetchGroup.MINIMAL));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT, false), FetchGroup.MINIMAL));
+        assertTrue(MessageResultUtils.isIncluded(mock(FetchGroupImpl.INTERNAL_DATE, false), FetchGroup.MINIMAL));
+        assertTrue(MessageResultUtils.isIncluded(mock(new FetchGroupImpl(FetchGroup.FLAGS | FetchGroup.MIME_MESSAGE), false), FetchGroup.MINIMAL));
     }
     
     public void testMultipleData() throws Exception {
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MINIMAL), MessageResult.MIME_MESSAGE | MessageResult.FLAGS));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.BODY_CONTENT), MessageResult.MIME_MESSAGE | MessageResult.FLAGS));
-        assertFalse(MessageResultUtils.isIncluded(mock(MessageResult.MIME_MESSAGE), MessageResult.MIME_MESSAGE | MessageResult.FLAGS));
-        assertTrue(MessageResultUtils.isIncluded(mock(MessageResult.FLAGS | MessageResult.MIME_MESSAGE), MessageResult.MIME_MESSAGE | MessageResult.FLAGS));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MINIMAL), FetchGroup.MIME_MESSAGE | FetchGroup.FLAGS));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.BODY_CONTENT), FetchGroup.MIME_MESSAGE | FetchGroup.FLAGS));
+        assertFalse(MessageResultUtils.isIncluded(mock(FetchGroupImpl.MIME_MESSAGE), FetchGroup.MIME_MESSAGE | FetchGroup.FLAGS));
+        assertTrue(MessageResultUtils.isIncluded(mock(new FetchGroupImpl(FetchGroup.FLAGS | FetchGroup.MIME_MESSAGE)), FetchGroup.MIME_MESSAGE | FetchGroup.FLAGS));
     }
     
-    private MessageResult mock(int included) {
+    private MessageResult mock(FetchGroup included) {
         return mock(included, true);
     }
     
-    private MessageResult mock(int included, boolean willBeCalled) {
+    private MessageResult mock(FetchGroup included, boolean willBeCalled) {
         Mock result = mock(MessageResult.class);
         if (willBeCalled) {
             result.expects(once()).method("getIncludedResults").will(returnValue(included));

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java Mon Feb  4 12:44:48 2008
@@ -37,6 +37,7 @@
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
 import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.tracking.UidToMsnConverter;
@@ -132,7 +133,7 @@
             for (final Iterator it = events.flagUpdateUids(); it.hasNext();) {
                 Long uid = (Long) it.next();
                 GeneralMessageSet messageSet = GeneralMessageSetImpl.oneUid(uid.longValue());
-                final Iterator messages = mailbox.getMessages(messageSet, MessageResult.FLAGS, mailboxSession);
+                final Iterator messages = mailbox.getMessages(messageSet, FetchGroupImpl.FLAGS, mailboxSession);
                 while (messages.hasNext()) {
                     MessageResult mr = (MessageResult) it.next();
                     int msn = msn(mr.getUid());

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java Mon Feb  4 12:44:48 2008
@@ -43,6 +43,8 @@
 import org.apache.james.mailboxmanager.MailboxNotFoundException;
 import org.apache.james.mailboxmanager.MailboxSession;
 import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
@@ -90,7 +92,7 @@
         final boolean resetRecent = !isExamine;
         final int recentCount = mailbox.getRecentCount(resetRecent, mailboxSession);
         final long uidValidity = mailbox.getUidValidity(mailboxSession);
-        final MessageResult firstUnseen = mailbox.getFirstUnseen(MessageResult.MINIMAL, mailboxSession);
+        final MessageResult firstUnseen = mailbox.getFirstUnseen(FetchGroupImpl.MINIMAL, mailboxSession);
         final int messageCount = mailbox.getMessageCount(mailboxSession);
         final int msn;
         if (firstUnseen == null) {
@@ -109,7 +111,7 @@
         final ImapMailbox mailbox = mailboxManager.getImapMailbox(mailboxName, false);
         final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
         final Iterator it = mailbox.getMessages(GeneralMessageSetImpl
-                .all(), MessageResult.MINIMAL, mailboxSession);
+                .all(), FetchGroupImpl.MINIMAL, mailboxSession);
         final List uids = new ArrayList();
         while(it.hasNext()) {
             final MessageResult result = (MessageResult) it.next();

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java Mon Feb  4 12:44:48 2008
@@ -42,6 +42,7 @@
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
 import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
@@ -111,7 +112,7 @@
         try {
             message.setFlag(Flag.RECENT, true);
             final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
-            mailbox.appendMessage(message, datetime, 0, mailboxSession);
+            mailbox.appendMessage(message, datetime, FetchGroupImpl.MINIMAL, mailboxSession);
         } catch (MailboxManagerException e) {
             // TODO why not TRYCREATE?
             throw new MailboxException(e);

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CloseProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CloseProcessor.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CloseProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/CloseProcessor.java Mon Feb  4 12:44:48 2008
@@ -33,7 +33,7 @@
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
-import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
@@ -55,7 +55,7 @@
             try {
                 final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
                 mailbox.expunge(GeneralMessageSetImpl.all(),
-                        MessageResult.MINIMAL, mailboxSession);
+                        FetchGroupImpl.MINIMAL, mailboxSession);
             } catch (MailboxManagerException e) {
                 throw new MailboxException(e);
             }

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java Mon Feb  4 12:44:48 2008
@@ -24,18 +24,16 @@
 import org.apache.james.api.imap.ProtocolException;
 import org.apache.james.api.imap.display.HumanReadableTextKey;
 import org.apache.james.api.imap.message.request.ImapRequest;
-import org.apache.james.api.imap.message.response.ImapResponseMessage;
 import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
 import org.apache.james.api.imap.process.ImapProcessor;
 import org.apache.james.api.imap.process.ImapSession;
-import org.apache.james.api.imap.process.ImapProcessor.Responder;
 import org.apache.james.imap.message.request.imap4rev1.ExpungeRequest;
 import org.apache.james.imapserver.processor.base.AbstractImapRequestProcessor;
 import org.apache.james.imapserver.processor.base.AuthorizationException;
 import org.apache.james.imapserver.processor.base.ImapSessionUtils;
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
-import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.manager.MailboxManagerProvider;
@@ -61,7 +59,7 @@
         } else {
             try {
                 mailbox.expunge(GeneralMessageSetImpl.all(),
-                        MessageResult.MINIMAL, ImapSessionUtils.getMailboxSession(session));
+                        FetchGroupImpl.MINIMAL, ImapSessionUtils.getMailboxSession(session));
                 unsolicitedResponses(session, responder, false);
                 okComplete(command, tag, responder);
             } catch (MailboxManagerException e) {

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/FetchProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/FetchProcessor.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/FetchProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/FetchProcessor.java Mon Feb  4 12:44:48 2008
@@ -59,6 +59,8 @@
 import org.apache.james.mailboxmanager.MessageResultUtils;
 import org.apache.james.mailboxmanager.UnsupportedCriteriaException;
 import org.apache.james.mailboxmanager.MessageResult.Content;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mime4j.field.address.Address;
@@ -98,7 +100,7 @@
             AuthorizationException, ProtocolException {
         try
         {
-            int resultToFetch = getNeededMessageResult(fetch);
+            FetchGroup resultToFetch = getFetchGroup(fetch);
             ImapMailbox mailbox = ImapSessionUtils.getMailbox(session);
             for (int i = 0; i < idSet.length; i++) {
                 final FetchResponseBuilder builder = new FetchResponseBuilder(getLogger());
@@ -129,28 +131,28 @@
         }
     }
 
-    private int getNeededMessageResult(FetchData fetch) {
-        int result = MessageResult.MINIMAL;
+    private FetchGroup getFetchGroup(FetchData fetch) {
+        int result = FetchGroup.MINIMAL;
         if (fetch.isFlags() || fetch.isSetSeen()) {
-            result |= MessageResult.FLAGS;
+            result |= FetchGroup.FLAGS;
         }
         if (fetch.isInternalDate()) {
-            result |= MessageResult.INTERNAL_DATE;
+            result |= FetchGroup.INTERNAL_DATE;
         }
         if (fetch.isSize()) {
-            result |= MessageResult.SIZE;
+            result |= FetchGroup.SIZE;
         }
         if (fetch.isEnvelope()) {
-            result |= MessageResult.HEADERS;
+            result |= FetchGroup.HEADERS;
         }
         if (fetch.isBody() || fetch.isBodyStructure()) {
             // TODO: structure
-            result |= MessageResult.MIME_MESSAGE;
+            result |= FetchGroup.MIME_MESSAGE;
         }
 
         result |= fetchForBodyElements(fetch.getBodyElements());
 
-        return result;
+        return new FetchGroupImpl(result);
     }
 
     private int fetchForBodyElements(final Collection bodyElements) {
@@ -160,16 +162,16 @@
                 final BodyFetchElement element = (BodyFetchElement) it.next();
                 final String section = element.getParameters();
                 if ("HEADER".equalsIgnoreCase(section)) {
-                    result |= MessageResult.HEADERS;
+                    result |= FetchGroup.HEADERS;
                 } else if (section.startsWith("HEADER.FIELDS.NOT ")) {
-                    result |= MessageResult.HEADERS;
+                    result |= FetchGroup.HEADERS;
                 } else if (section.startsWith("HEADER.FIELDS ")) {
-                    result |= MessageResult.HEADERS;
+                    result |= FetchGroup.HEADERS;
                 } else if (section.equalsIgnoreCase("TEXT")) {
                     ;
-                    result |= MessageResult.BODY_CONTENT;
+                    result |= FetchGroup.BODY_CONTENT;
                 } else if (section.length() == 0) {
-                    result |= MessageResult.FULL_CONTENT;
+                    result |= FetchGroup.FULL_CONTENT;
                 }
             }
         }
@@ -232,7 +234,7 @@
                 if (fetch.isSetSeen()
                         && !result.getFlags().contains(Flags.Flag.SEEN)) {
                     mailbox.setFlags(new Flags(Flags.Flag.SEEN), true, false,
-                            GeneralMessageSetImpl.oneUid(result.getUid()), MessageResult.MINIMAL, mailboxSession);
+                            GeneralMessageSetImpl.oneUid(result.getUid()), FetchGroupImpl.MINIMAL, mailboxSession);
                     result.getFlags().add(Flags.Flag.SEEN);
                     ensureFlagsResponse = true;
                 }

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessor.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/SearchProcessor.java Mon Feb  4 12:44:48 2008
@@ -41,6 +41,8 @@
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MessageResult;
 import org.apache.james.mailboxmanager.SearchParameters;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
@@ -68,7 +70,7 @@
             final ImapCommand command, final Responder responder) throws MailboxException,
             AuthorizationException, ProtocolException {
         ImapMailbox mailbox = ImapSessionUtils.getMailbox(session);
-        final int resultCode = MessageResult.MINIMAL;
+        final FetchGroup resultCode = FetchGroupImpl.MINIMAL;
 
         final Iterator it;
         try {

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/StoreProcessor.java Mon Feb  4 12:44:48 2008
@@ -39,12 +39,14 @@
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
 import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
 public class StoreProcessor extends AbstractImapRequestProcessor {
 
-    private static final int STORE_FETCH_GROUP = MessageResult.FLAGS;
+    private static final FetchGroup STORE_FETCH_GROUP = FetchGroupImpl.FLAGS;
 
     public StoreProcessor(final ImapProcessor next, final StatusResponseFactory factory) {
         super(next, factory);

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/SelectedMailboxSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/SelectedMailboxSession.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/SelectedMailboxSession.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/SelectedMailboxSession.java Mon Feb  4 12:44:48 2008
@@ -29,7 +29,7 @@
 import org.apache.james.mailboxmanager.GeneralMessageSet;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
-import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.tracking.UidToMsnConverter;
@@ -72,7 +72,7 @@
         for (final Iterator it = events.flagUpdateUids(); it.hasNext();) {
             Long uid = (Long) it.next();
             GeneralMessageSet messageSet = GeneralMessageSetImpl.oneUid(uid.longValue());
-            final Iterator messages = mailbox.getMessages(messageSet, MessageResult.FLAGS, mailboxSession);
+            final Iterator messages = mailbox.getMessages(messageSet, FetchGroupImpl.FLAGS, mailboxSession);
             results.addAll(IteratorUtils.toList(messages));
         }
         return results.iterator();

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/AppendCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/AppendCommand.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/AppendCommand.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/AppendCommand.java Mon Feb  4 12:44:48 2008
@@ -35,6 +35,7 @@
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
 /**
@@ -80,7 +81,7 @@
 
         try {
             final MailboxSession mailboxSession = session.getMailboxSession();
-            mailbox.appendMessage( message, datetime ,0, mailboxSession);
+            mailbox.appendMessage( message, datetime, FetchGroupImpl.MINIMAL, mailboxSession);
         } catch (MailboxManagerException e) {
             // TODO why not TRYCREATE?
             throw new MailboxException(e);

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/CloseCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/CloseCommand.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/CloseCommand.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/CloseCommand.java Mon Feb  4 12:44:48 2008
@@ -25,7 +25,8 @@
 import org.apache.james.imapserver.ProtocolException;
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
-import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
@@ -49,7 +50,7 @@
         ImapMailbox mailbox = session.getSelected().getMailbox();
         if ( session.getSelected().getMailbox().isWriteable() ) {
             try {
-                mailbox.expunge(GeneralMessageSetImpl.all(),MessageResult.MINIMAL, session.getMailboxSession());
+                mailbox.expunge(GeneralMessageSetImpl.all(),FetchGroupImpl.MINIMAL, session.getMailboxSession());
             } catch (MailboxManagerException e) {
                throw new MailboxException(e);
             }

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ExpungeCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ExpungeCommand.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ExpungeCommand.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/ExpungeCommand.java Mon Feb  4 12:44:48 2008
@@ -25,7 +25,8 @@
 import org.apache.james.imapserver.ProtocolException;
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
-import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
@@ -53,7 +54,7 @@
         }
        
         try {
-            mailbox.expunge(GeneralMessageSetImpl.all(),MessageResult.MINIMAL, session.getMailboxSession());
+            mailbox.expunge(GeneralMessageSetImpl.all(),FetchGroupImpl.MINIMAL, session.getMailboxSession());
         } catch (MailboxManagerException e) {
             throw new MailboxException(e);
         }

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/FetchCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/FetchCommand.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/FetchCommand.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/FetchCommand.java Mon Feb  4 12:44:48 2008
@@ -45,6 +45,8 @@
 import org.apache.james.mailboxmanager.MessageResult;
 import org.apache.james.mailboxmanager.MessageResultUtils;
 import org.apache.james.mailboxmanager.MessageResult.Content;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mime4j.field.address.Address;
@@ -93,7 +95,7 @@
             fetch.uid = true;
         }
 
-        final int resultToFetch = fetch.getNeededMessageResult();
+        final FetchGroup resultToFetch = fetch.getFetchGroup();
         final SelectedMailboxSession selected = session.getSelected();
         final ImapMailbox mailbox = selected.getMailbox();
         for (int i = 0; i < idSet.length; i++) {
@@ -141,7 +143,7 @@
             if (fetch.isSetSeen()
                     && !result.getFlags().contains(Flags.Flag.SEEN)) {
                 mailbox.setFlags(new Flags(Flags.Flag.SEEN), true, false,
-                        GeneralMessageSetImpl.oneUid(result.getUid()), MessageResult.MINIMAL, session);
+                        GeneralMessageSetImpl.oneUid(result.getUid()), FetchGroupImpl.MINIMAL, session);
                 result.getFlags().add(Flags.Flag.SEEN);
                 ensureFlagsResponse = true;
             }
@@ -660,37 +662,37 @@
             bodyElements.add(element);
         }
                 
-        public int getNeededMessageResult() {
-            int result = MessageResult.MINIMAL;
+        public FetchGroup getFetchGroup() {
+            int result = FetchGroup.MINIMAL;
             if (flags || setSeen) {
-                result |= MessageResult.FLAGS;
+                result |= FetchGroup.FLAGS;
             }
             if (internalDate) {
-                result |= MessageResult.INTERNAL_DATE;
+                result |= FetchGroup.INTERNAL_DATE;
             }
             if (size) {
-                result |= MessageResult.SIZE;
+                result |= FetchGroup.SIZE;
             }
             if (mailFetchElement) {
-                result |= MessageResult.MIME_MESSAGE;
+                result |= FetchGroup.MIME_MESSAGE;
             }
             if (envelope) {
-                result |= MessageResult.HEADERS;
+                result |= FetchGroup.HEADERS;
             }
             if (body || bodyStructure) {
                 // TODO: structure
-                result |= MessageResult.MIME_MESSAGE;
+                result |= FetchGroup.MIME_MESSAGE;
             }
             if (headerFetchElement || mailFetchElement) {
-                result |= MessageResult.HEADERS;
+                result |= FetchGroup.HEADERS;
             }
             if (bodyFetch) {
-                result |= MessageResult.BODY_CONTENT;
+                result |= FetchGroup.BODY_CONTENT;
             }
             if (fullContentFetch) {
-                result |= MessageResult.FULL_CONTENT;
+                result |= FetchGroup.FULL_CONTENT;
             }
-            return result;
+            return new FetchGroupImpl(result);
         }
     }
 

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SearchCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SearchCommand.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SearchCommand.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SearchCommand.java Mon Feb  4 12:44:48 2008
@@ -30,8 +30,10 @@
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MessageResult;
 import org.apache.james.mailboxmanager.SearchParameters;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
 import org.apache.james.mailboxmanager.SearchParameters.NumericRange;
 import org.apache.james.mailboxmanager.SearchParameters.SearchCriteria;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
@@ -68,7 +70,7 @@
 
         final SelectedMailboxSession selected = session.getSelected();
         ImapMailbox mailbox = selected.getMailbox();
-        final int result = MessageResult.MINIMAL;
+        final FetchGroup result = FetchGroupImpl.MINIMAL;
         final Iterator it;
         try {
             it = mailbox.search(GeneralMessageSetImpl.all(),searchTerm, result, session.getMailboxSession());

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SelectCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SelectCommand.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SelectCommand.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/SelectCommand.java Mon Feb  4 12:44:48 2008
@@ -31,6 +31,8 @@
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
@@ -68,7 +70,7 @@
             response
                     .okResponse("UIDVALIDITY " + mailbox.getUidValidity(session.getMailboxSession()), null);
 
-            MessageResult firstUnseen = mailbox.getFirstUnseen(MessageResult.MINIMAL, session.getMailboxSession());
+            MessageResult firstUnseen = mailbox.getFirstUnseen(FetchGroupImpl.MINIMAL, session.getMailboxSession());
                    
             response.existsResponse(mailbox.getMessageCount(session.getMailboxSession()));
 
@@ -94,7 +96,7 @@
     private boolean selectMailbox(String mailboxName, ImapSession session, boolean readOnly) throws MailboxException, MailboxManagerException {
         ImapMailbox mailbox = session.getMailboxManager().getImapMailbox(mailboxName, false);
         final Iterator it = mailbox.getMessages(GeneralMessageSetImpl
-                .all(), MessageResult.MINIMAL, session.getMailboxSession());
+                .all(), FetchGroupImpl.MINIMAL, session.getMailboxSession());
         final List uids = new ArrayList();
         while(it.hasNext()) {
             final MessageResult result = (MessageResult) it.next();

Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/StoreCommand.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/StoreCommand.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/StoreCommand.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/commands/StoreCommand.java Mon Feb  4 12:44:48 2008
@@ -30,7 +30,8 @@
 import org.apache.james.mailboxmanager.GeneralMessageSet;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
-import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 
@@ -102,7 +103,7 @@
                     final GeneralMessageSet messageSet = GeneralMessageSetImpl
                     .uidRange(lowVal, highVal);
 
-                    mailbox.setFlags(flags, value, replace, messageSet, MessageResult.MINIMAL, mailboxSession);
+                    mailbox.setFlags(flags, value, replace, messageSet, FetchGroupImpl.MINIMAL, mailboxSession);
                 }
             } catch (MailboxManagerException e) {
                 throw new MailboxException(e);

Modified: james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java?rev=618429&r1=618428&r2=618429&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java (original)
+++ james/server/trunk/phoenix-deployment/src/test/org/apache/james/imapserver/handler/session/AbstractSessionTest.java Mon Feb  4 12:44:48 2008
@@ -53,6 +53,8 @@
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
 import org.apache.james.mailboxmanager.MessageResult;
+import org.apache.james.mailboxmanager.MessageResult.FetchGroup;
+import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.manager.MailboxExpression;
@@ -98,7 +100,7 @@
         ImapMailbox mailbox=getImapMailbox(folder);
         for (int i = 0; i < msgs.length; i++) {
             msgs[i].setFlags(new Flags(Flags.Flag.RECENT), true);
-            mailbox.appendMessage(msgs[i],new Date(),MessageResult.MINIMAL, mailboxSession);
+            mailbox.appendMessage(msgs[i],new Date(),FetchGroupImpl.MINIMAL, mailboxSession);
             
         }
     }
@@ -108,7 +110,7 @@
         long[] uids=new long[msgs.length];
         for (int i = 0; i < msgs.length; i++) {
             msgs[i].setFlags(new Flags(Flags.Flag.RECENT), false);
-            uids[i]=mailbox.appendMessage(msgs[i],new Date(),MessageResult.MINIMAL, mailboxSession).getUid();
+            uids[i]=mailbox.appendMessage(msgs[i],new Date(),FetchGroupImpl.MINIMAL, mailboxSession).getUid();
         }
         return uids;
     }
@@ -127,7 +129,7 @@
     
     public MimeMessage[] getMessages(String folder) throws MailboxManagerException {
         ImapMailbox mailbox=getImapMailbox(folder);
-        Iterator iterator =mailbox.getMessages(GeneralMessageSetImpl.all(),MessageResult.MIME_MESSAGE, mailboxSession);
+        Iterator iterator =mailbox.getMessages(GeneralMessageSetImpl.all(),FetchGroupImpl.MIME_MESSAGE, mailboxSession);
         List messages = IteratorUtils.toList(iterator);
         MimeMessage[] mms=new MimeMessage[messages.size()];
         for (int i = 0; i < messages.size(); i++) {
@@ -138,7 +140,7 @@
     
     public long[] getUids(String folder) throws MailboxManagerException {
         ImapMailbox mailbox=getImapMailbox(folder);
-        Iterator iterator = mailbox.getMessages(GeneralMessageSetImpl.all(),MessageResult.MINIMAL, mailboxSession);
+        Iterator iterator = mailbox.getMessages(GeneralMessageSetImpl.all(),FetchGroupImpl.MINIMAL, mailboxSession);
         List messages = IteratorUtils.toList(iterator);
         long[] uids=new long[messages.size()];
         for (int i = 0; i < messages.size(); i++) {
@@ -184,8 +186,8 @@
     
     public void deleteAll(String folder) throws MailboxManagerException {
         ImapMailbox mailbox=getImapMailbox(folder);
-        mailbox.setFlags(new Flags(Flag.DELETED),true,false,GeneralMessageSetImpl.all(), MessageResult.MINIMAL, mailboxSession);
-        mailbox.expunge(GeneralMessageSetImpl.all(),MessageResult.MINIMAL, mailboxSession);
+        mailbox.setFlags(new Flags(Flag.DELETED),true,false,GeneralMessageSetImpl.all(), FetchGroupImpl.MINIMAL, mailboxSession);
+        mailbox.expunge(GeneralMessageSetImpl.all(),FetchGroupImpl.MINIMAL, mailboxSession);
     }
     public BufferedReader handleRequestReader(String s) throws ProtocolException
     {
@@ -269,11 +271,11 @@
     
     public void setFlags(String mailboxName,long fromUid,long toUid,Flags flags, boolean value, boolean replace) throws MailboxManagerException {
         ImapMailbox mailbox=getImapMailbox(mailboxName);
-        mailbox.setFlags(flags, value, replace, GeneralMessageSetImpl.uidRange(fromUid, toUid), MessageResult.MINIMAL, mailboxSession);
+        mailbox.setFlags(flags, value, replace, GeneralMessageSetImpl.uidRange(fromUid, toUid), FetchGroupImpl.MINIMAL, mailboxSession);
     }
     private ImapMailbox getImapMailbox(String mailboxName) throws MailboxManagerException {
         int[] neededSets = new int[] {GeneralMessageSet.TYPE_UID};
-        int neededResults= MessageResult.MIME_MESSAGE + MessageResult.FLAGS;
+        int neededResults= FetchGroup.MIME_MESSAGE + FetchGroup.FLAGS;
         ImapMailbox mailboxSession= mailboxManager.getImapMailbox(mailboxName, false);
         return mailboxSession;
     }



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