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 2009/06/03 10:09:49 UTC

svn commit: r781291 - in /james/imap/trunk: mailbox/src/main/java/org/apache/james/imap/mailbox/ mailbox/src/main/java/org/apache/james/imap/mailbox/util/ processor/src/main/java/org/apache/james/imap/processor/ processor/src/main/java/org/apache/james...

Author: rdonkin
Date: Wed Jun  3 08:09:48 2009
New Revision: 781291

URL: http://svn.apache.org/viewvc?rev=781291&view=rev
Log:
IMAP-95 Using an interface seems like overengineering here. https://issues.apache.org/jira/browse/IMAP-95

Removed:
    james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/util/MessageRangeImpl.java
Modified:
    james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MessageRange.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
    james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java

Modified: james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MessageRange.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MessageRange.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MessageRange.java (original)
+++ james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MessageRange.java Wed Jun  3 08:09:48 2009
@@ -24,7 +24,7 @@
  * key or message object.<br />
  * The type of the set should be defined by using an appropriate constructor.
  */
-public interface MessageRange {
+public class MessageRange {
     
     public enum Type {
         /** All messages */
@@ -37,9 +37,84 @@
         RANGE
     }
 
-    Type getType();
+    private static final int NOT_A_UID = -1;
+    
+    /**
+     * Constructs a range consisting of a single message only.
+     * @param uid UID of the message
+     * @return not null
+     */
+    public static MessageRange one(long uid) {
+        final MessageRange result = new MessageRange(Type.ONE, uid, uid);
+        return result;
+    }
+
+    /**
+     * Constructs a range consisting of all messages.
+     * @return not null
+     */
+    public static MessageRange all() {
+        final MessageRange result = new MessageRange(Type.ALL, NOT_A_UID,
+                NOT_A_UID);
+        return result;
+    }
+
+    /**
+     * Constructs an inclusive ranges of messages.
+     * The parameters will be checked and {@link #from(long)}
+     * used where appropriate.
+     * @param from first message UID
+     * @param to last message UID
+     * @return not null
+     */
+    public static MessageRange range(long from, long to) {
+        final MessageRange result;
+        if (to == Long.MAX_VALUE || to < from) {
+            to = NOT_A_UID;
+            result = from(from);
+        } else {
+            result = new MessageRange(Type.RANGE, from, to);
+        }
+        return result;
+    }
+    
+    /**
+     * Constructs an inclusive, open ended range of messages.
+     * @param from first messege UID in range
+     * @return not null
+     */
+    public static MessageRange from(long from) {
+        final MessageRange result= new MessageRange(Type.FROM, from, NOT_A_UID);
+        return result;
+    }
+
+    private final Type type;
+
+    private final long uidFrom;
 
-    long getUidFrom();
+    private final long uidTo;
 
-    long getUidTo();
+    private MessageRange(final Type type, final long uidFrom,
+            final long uidTo) {
+        super();
+        this.type = type;
+        this.uidFrom = uidFrom;
+        this.uidTo = uidTo;
+    }
+
+    public Type getType() {
+        return type;
+    }
+
+    public long getUidFrom() {
+        return uidFrom;
+    }
+
+    public long getUidTo() {
+        return uidTo;
+    }
+
+    public String toString() {
+        return "TYPE: " + type + " UID: " + uidFrom + ":" + uidTo;
+    }
 }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java Wed Jun  3 08:09:48 2009
@@ -46,7 +46,6 @@
 import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.mailbox.MessageResult;
 import org.apache.james.imap.mailbox.util.FetchGroupImpl;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.response.ExistsResponse;
 import org.apache.james.imap.message.response.ExpungeResponse;
 import org.apache.james.imap.message.response.FetchResponse;
@@ -189,7 +188,7 @@
                 final Mailbox mailbox = getMailbox(session, selected);
                 final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
                 for (final Long uid: flagUpdateUids) {
-                    MessageRange messageSet = MessageRangeImpl.oneUid(uid.longValue());
+                    MessageRange messageSet = MessageRange.one(uid.longValue());
                     addFlagsResponses(session, selected, responder, useUid, messageSet, mailbox, mailboxSession);
                 }
             }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java Wed Jun  3 08:09:48 2009
@@ -39,10 +39,10 @@
 import org.apache.james.imap.mailbox.MailboxManager;
 import org.apache.james.imap.mailbox.MailboxNotFoundException;
 import org.apache.james.imap.mailbox.MailboxSession;
+import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.mailbox.MessageResult;
 import org.apache.james.imap.mailbox.Mailbox.MetaData;
 import org.apache.james.imap.mailbox.util.FetchGroupImpl;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest;
 import org.apache.james.imap.message.response.ExistsResponse;
 import org.apache.james.imap.message.response.FlagsResponse;
@@ -196,7 +196,7 @@
             final MailboxSession mailboxSession, ImapSession session, String name)
             throws MailboxException {
         final SelectedMailbox sessionMailbox;
-        final Iterator<MessageResult> it = mailbox.getMessages(MessageRangeImpl.all(),
+        final Iterator<MessageResult> it = mailbox.getMessages(MessageRange.all(),
                 FetchGroupImpl.MINIMAL, mailboxSession);
         final List<Long> uids = new ArrayList<Long>();
         while (it.hasNext()) {

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CloseProcessor.java Wed Jun  3 08:09:48 2009
@@ -29,7 +29,7 @@
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxManager;
 import org.apache.james.imap.mailbox.MailboxSession;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
+import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.message.request.CloseRequest;
 import org.apache.james.imap.processor.base.ImapSessionUtils;
 
@@ -52,7 +52,7 @@
                 
                     final MailboxSession mailboxSession = ImapSessionUtils
                             .getMailboxSession(session);
-                    mailbox.expunge(MessageRangeImpl.all(), mailboxSession);
+                    mailbox.expunge(MessageRange.all(), mailboxSession);
                     session.deselect();
                     // TODO: the following comment was present in the code before
                     // refactoring

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/CopyProcessor.java Wed Jun  3 08:09:48 2009
@@ -33,7 +33,6 @@
 import org.apache.james.imap.mailbox.MailboxManager;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.MessageRange;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.request.CopyRequest;
 import org.apache.james.imap.processor.base.ImapSessionUtils;
 
@@ -79,8 +78,7 @@
                         lowVal = session.getSelected().uid(
                                 (int) idSet[i].getLowVal());
                     }
-                    MessageRange messageSet = MessageRangeImpl.uidRange(lowVal,
-                            highVal);
+                    MessageRange messageSet = MessageRange.range(lowVal, highVal);
                     mailboxManager.copyMessages(messageSet, currentMailbox
                             .getName(), fullMailboxName, mailboxSession);
                 }

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java Wed Jun  3 08:09:48 2009
@@ -32,7 +32,7 @@
 import org.apache.james.imap.mailbox.Mailbox;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxManager;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
+import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.message.request.ExpungeRequest;
 import org.apache.james.imap.processor.base.ImapSessionUtils;
 
@@ -56,7 +56,7 @@
                 no(command, tag, responder,
                         HumanReadableText.MAILBOX_IS_READ_ONLY);
             } else {
-                final Iterator<Long> it = mailbox.expunge(MessageRangeImpl.all(),
+                final Iterator<Long> it = mailbox.expunge(MessageRange.all(),
                         ImapSessionUtils
                         .getMailboxSession(session));
                 final SelectedMailbox mailboxSession = session

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java Wed Jun  3 08:09:48 2009
@@ -36,7 +36,6 @@
 import org.apache.james.imap.mailbox.MailboxManager;
 import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.mailbox.MessageRange;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.request.StoreRequest;
 import org.apache.james.imap.message.response.FetchResponse;
 import org.apache.james.imap.processor.base.ImapSessionUtils;
@@ -87,8 +86,7 @@
                     lowVal = selected.uid((int) idSet[i].getLowVal());
                     highVal = selected.uid((int) idSet[i].getHighVal());
                 }
-                final MessageRange messageSet = MessageRangeImpl.uidRange(
-                        lowVal, highVal);
+                final MessageRange messageSet = MessageRange.range(lowVal, highVal);
                 final MailboxSession mailboxSession = ImapSessionUtils
                         .getMailboxSession(session);
                 final Map<Long, Flags> flagsByUid = mailbox.setFlags(flags, value, replace,

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java Wed Jun  3 08:09:48 2009
@@ -43,7 +43,6 @@
 import org.apache.james.imap.mailbox.MessageResult.FetchGroup;
 import org.apache.james.imap.mailbox.MessageResult.MimePath;
 import org.apache.james.imap.mailbox.util.FetchGroupImpl;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.request.FetchRequest;
 import org.apache.james.imap.message.response.FetchResponse;
 import org.apache.james.imap.processor.AbstractMailboxProcessor;
@@ -84,7 +83,7 @@
                     lowVal = session.getSelected().uid(
                             (int) idSet[i].getLowVal());
                 }
-                MessageRange messageSet = MessageRangeImpl.uidRange(lowVal, highVal);
+                MessageRange messageSet = MessageRange.range(lowVal, highVal);
                 final MailboxSession mailboxSession = ImapSessionUtils
                         .getMailboxSession(session);
                 final Iterator<MessageResult> it = mailbox.getMessages(messageSet, resultToFetch, mailboxSession);

Modified: james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java?rev=781291&r1=781290&r2=781291&view=diff
==============================================================================
--- james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java (original)
+++ james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java Wed Jun  3 08:09:48 2009
@@ -39,9 +39,9 @@
 import org.apache.james.imap.mailbox.Mailbox;
 import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxSession;
+import org.apache.james.imap.mailbox.MessageRange;
 import org.apache.james.imap.mailbox.MessageResult;
 import org.apache.james.imap.mailbox.MimeDescriptor;
-import org.apache.james.imap.mailbox.util.MessageRangeImpl;
 import org.apache.james.imap.message.response.FetchResponse;
 import org.apache.james.imap.processor.base.ImapSessionUtils;
 import org.apache.james.mime4j.field.address.parser.ParseException;
@@ -116,7 +116,7 @@
         final Flags resultFlags = result.getFlags();
         if (fetch.isSetSeen() && !resultFlags.contains(Flags.Flag.SEEN)) {
             mailbox.setFlags(new Flags(Flags.Flag.SEEN), true, false,
-                    MessageRangeImpl.oneUid(resultUid), mailboxSession);
+                    MessageRange.one(resultUid), mailboxSession);
             resultFlags.add(Flags.Flag.SEEN);
             ensureFlagsResponse = true;
         }



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