MAILBOX-363 Line breaks in StoreMessageResultIterator

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c739d3ae
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c739d3ae
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c739d3ae

Branch: refs/heads/master
Commit: c739d3aecda4cd7b781694d7e9bb35e8df04923f
Parents: b16d06f
Author: Benoit Tellier <[email protected]>
Authored: Tue Dec 18 17:17:28 2018 +0700
Committer: Benoit Tellier <[email protected]>
Committed: Wed Dec 19 10:58:07 2018 +0700

----------------------------------------------------------------------
 .../store/StoreMessageResultIterator.java       | 678 ++++++++++---------
 1 file changed, 340 insertions(+), 338 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c739d3ae/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
index 664d91c..cbcf8ae 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
@@ -1,338 +1,340 @@
-/****************************************************************
- * 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.mailbox.store;
-
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Objects;
-
-import javax.mail.Flags;
-
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.Content;
-import org.apache.james.mailbox.model.Headers;
-import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MessageAttachment;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.MessageMetaData;
-import org.apache.james.mailbox.model.MessageRange;
-import org.apache.james.mailbox.model.MessageRange.Type;
-import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
-import org.apache.james.mailbox.model.MessageResultIterator;
-import org.apache.james.mailbox.model.MimeDescriptor;
-import org.apache.james.mailbox.store.mail.MessageMapper;
-import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class StoreMessageResultIterator implements MessageResultIterator {
-
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(StoreMessageResultIterator.class);
-
-    private Iterator<MailboxMessage> next = null;
-    private MailboxException exception;
-    private final Mailbox mailbox;
-    private final FetchGroup group;
-    private final MessageUid from;
-    private MessageUid cursor;
-    private final MessageUid to;
-    private final BatchSizes batchSizes;
-    private final Type type;
-    private final MessageMapper mapper;
-    private final FetchType ftype;
-
-    public StoreMessageResultIterator(MessageMapper mapper, Mailbox mailbox, 
MessageRange range, BatchSizes batchSizes, 
org.apache.james.mailbox.model.MessageResult.FetchGroup group) {
-        this.mailbox = mailbox;
-        this.group = group;
-        this.mapper = mapper;
-        this.from = range.getUidFrom();
-        this.cursor = this.from;
-        this.to = range.getUidTo();
-        this.batchSizes = batchSizes;
-        this.type = range.getType();
-        this.ftype = getFetchType(group);
-        LOGGER.debug("batchSizes used: {}", batchSizes);
-    }
-
-    /**
-     * Use the passed {@link FetchGroup} and calculate the right
-     * {@link FetchType} for it
-     * 
-     * @param group
-     * @return fetchType
-     */
-    private static FetchType getFetchType(FetchGroup group) {
-        int content = group.content();
-        boolean headers = false;
-        boolean body = false;
-        boolean full = false;
-
-        if ((content & FetchGroup.HEADERS) > 0) {
-            headers = true;
-            content -= FetchGroup.HEADERS;
-        }
-        if (group.getPartContentDescriptors().size() > 0) {
-            full = true;
-        }
-        if ((content & FetchGroup.BODY_CONTENT) > 0) {
-            body = true;
-            content -= FetchGroup.BODY_CONTENT;
-        }
-
-        if ((content & FetchGroup.FULL_CONTENT) > 0) {
-            full = true;
-            content -= FetchGroup.FULL_CONTENT;
-        }
-
-        if ((content & FetchGroup.MIME_DESCRIPTOR) > 0) {
-            // If we need the mimedescriptor we MAY need the full content later
-            // too.
-            // This gives us no other choice then request it
-            full = true;
-            content -= FetchGroup.MIME_DESCRIPTOR;
-        }
-        if (full || (body && headers)) {
-            return FetchType.Full;
-        } else if (body) {
-            return FetchType.Body;
-        } else if (headers) {
-            return FetchType.Headers;
-        } else {
-            return FetchType.Metadata;
-        }
-    }
-
-    @Override
-    public boolean hasNext() {
-        if (cursor.compareTo(to) > 0) {
-            return false;
-        }
-
-        if (next == null || !next.hasNext()) {
-            try {
-                readBatch();
-            } catch (MailboxException e) {
-                this.exception = e;
-                return false;
-            }
-        }
-        
-        return next.hasNext();
-    }
-
-    private void readBatch() throws MailboxException {
-        MessageRange range;
-        switch (type) {
-        default:
-        case ALL:
-            // In case of all, we start on cursor and don't specify a to
-            range = MessageRange.from(cursor);
-            break;
-        case FROM:
-            range = MessageRange.from(cursor);
-            break;
-        case ONE:
-            range = MessageRange.one(cursor);
-            break;
-        case RANGE:
-            range = MessageRange.range(cursor, to);
-            break;
-        }
-        next = mapper.findInMailbox(mailbox, range, ftype, 
batchSizeFromFetchType(ftype));
-    }
-
-    private int batchSizeFromFetchType(FetchType fetchType) {
-        switch (fetchType) {
-        case Metadata:
-            return batchSizes.getFetchMetadata();
-        case Headers:
-            return batchSizes.getFetchHeaders();
-        case Body:
-            return batchSizes.getFetchBody();
-        case Full:
-            return batchSizes.getFetchFull();
-        }
-        throw new RuntimeException("Unknown fetchTpe: " + fetchType);
-    }
-
-    @Override
-    public MessageResult next() {
-        if (!hasNext()) {
-          throw new NoSuchElementException();
-        }
-        
-        final MailboxMessage message = next.next();
-        MessageResult result;
-        try {
-            result = ResultUtils.loadMessageResult(message, group);
-            cursor = result.messageMetaData().getUid();
-        } catch (MailboxException e) {
-            result = new UnloadedMessageResult(message, e);
-        }
-
-        cursor = cursor.next();
-        return result;
-    }
-
-    @Override
-    public void remove() {
-        throw new UnsupportedOperationException("Read only");
-    }
-
-    @Override
-    public MailboxException getException() {
-        return exception;
-    }
-
-    private static final class UnloadedMessageResult implements MessageResult {
-        private final MailboxException exception;
-
-        private final MessageMetaData messageMetaData;
-        private final MessageId messageId;
-        private final MailboxId mailboxId;
-
-        public UnloadedMessageResult(MailboxMessage message, MailboxException 
exception) {
-            messageMetaData = message.metaData();
-            mailboxId = message.getMailboxId();
-            messageId = message.getMessageId();
-            this.exception = exception;
-        }
-
-        @Override
-        public MessageMetaData messageMetaData() {
-            return messageMetaData;
-        }
-
-        @Override
-        public MessageUid getUid() {
-            return messageMetaData().getUid();
-        }
-
-        @Override
-        public MessageId getMessageId() {
-            return messageMetaData().getMessageId();
-        }
-
-        @Override
-        public Date getInternalDate() {
-            return messageMetaData().getInternalDate();
-        }
-
-        @Override
-        public Flags getFlags() {
-            return messageMetaData().getFlags();
-        }
-
-        @Override
-        public long getModSeq() {
-            return messageMetaData().getModSeq();
-        }
-
-        @Override
-        public long getSize() {
-            return messageMetaData().getSize();
-        }
-
-        @Override
-        public MailboxId getMailboxId() {
-            return mailboxId;
-        }
-
-        @Override
-        public Content getFullContent() throws MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public Content getBody() throws MailboxException {
-            throw exception;
-        }
-        
-        @Override
-        public int compareTo(MessageResult that) {
-            return getUid().compareTo(that.getUid());
-        }
-
-        @Override
-        public final boolean equals(Object o) {
-            if (o instanceof UnloadedMessageResult) {
-                UnloadedMessageResult that = (UnloadedMessageResult) o;
-
-                return Objects.equals(this.exception, that.exception)
-                    && Objects.equals(this.messageMetaData, 
that.messageMetaData)
-                    && Objects.equals(this.messageId, that.messageId)
-                    && Objects.equals(this.mailboxId, that.mailboxId);
-            }
-            return false;
-        }
-
-        @Override
-        public final int hashCode() {
-            return Objects.hash(exception, messageMetaData, messageId, 
mailboxId);
-        }
-
-        @Override
-        public Content getFullContent(MimePath path) throws MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public Iterator<Header> iterateHeaders(MimePath path) throws 
MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public Iterator<Header> iterateMimeHeaders(MimePath path) throws 
MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public Content getBody(MimePath path) throws MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public Content getMimeBody(MimePath path) throws MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public MimeDescriptor getMimeDescriptor() throws MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public Headers getHeaders() throws MailboxException {
-            throw exception;
-        }
-
-        @Override
-        public List<MessageAttachment> getAttachments() throws 
MailboxException {
-            throw exception;
-        }
-
-    }
-
-}
+/****************************************************************
+ * 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.mailbox.store;
+
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Objects;
+
+import javax.mail.Flags;
+
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Content;
+import org.apache.james.mailbox.model.Headers;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageAttachment;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.MessageMetaData;
+import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.MessageRange.Type;
+import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.MessageResult.FetchGroup;
+import org.apache.james.mailbox.model.MessageResultIterator;
+import org.apache.james.mailbox.model.MimeDescriptor;
+import org.apache.james.mailbox.store.mail.MessageMapper;
+import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class StoreMessageResultIterator implements MessageResultIterator {
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(StoreMessageResultIterator.class);
+
+    private Iterator<MailboxMessage> next = null;
+    private MailboxException exception;
+    private final Mailbox mailbox;
+    private final FetchGroup group;
+    private final MessageUid from;
+    private MessageUid cursor;
+    private final MessageUid to;
+    private final BatchSizes batchSizes;
+    private final Type type;
+    private final MessageMapper mapper;
+    private final FetchType ftype;
+
+    public StoreMessageResultIterator(MessageMapper mapper, Mailbox mailbox, 
MessageRange range, BatchSizes batchSizes, 
org.apache.james.mailbox.model.MessageResult.FetchGroup group) {
+        this.mailbox = mailbox;
+        this.group = group;
+        this.mapper = mapper;
+        this.from = range.getUidFrom();
+        this.cursor = this.from;
+        this.to = range.getUidTo();
+        this.batchSizes = batchSizes;
+        this.type = range.getType();
+        this.ftype = getFetchType(group);
+        LOGGER.debug("batchSizes used: {}", batchSizes);
+    }
+
+    /**
+     * Use the passed {@link FetchGroup} and calculate the right
+     * {@link FetchType} for it
+     * 
+     * @param group
+     * @return fetchType
+     */
+    private static FetchType getFetchType(FetchGroup group) {
+        int content = group.content();
+        boolean headers = false;
+        boolean body = false;
+        boolean full = false;
+
+        if ((content & FetchGroup.HEADERS) > 0) {
+            headers = true;
+            content -= FetchGroup.HEADERS;
+        }
+        if (group.getPartContentDescriptors().size() > 0) {
+            full = true;
+        }
+        if ((content & FetchGroup.BODY_CONTENT) > 0) {
+            body = true;
+            content -= FetchGroup.BODY_CONTENT;
+        }
+
+        if ((content & FetchGroup.FULL_CONTENT) > 0) {
+            full = true;
+            content -= FetchGroup.FULL_CONTENT;
+        }
+
+        if ((content & FetchGroup.MIME_DESCRIPTOR) > 0) {
+            // If we need the mimedescriptor we MAY need the full content later
+            // too.
+            // This gives us no other choice then request it
+            full = true;
+            content -= FetchGroup.MIME_DESCRIPTOR;
+        }
+        if (full || (body && headers)) {
+            return FetchType.Full;
+        } else if (body) {
+            return FetchType.Body;
+        } else if (headers) {
+            return FetchType.Headers;
+        } else {
+            return FetchType.Metadata;
+        }
+    }
+
+    @Override
+    public boolean hasNext() {
+        if (cursor.compareTo(to) > 0) {
+            return false;
+        }
+
+        if (next == null || !next.hasNext()) {
+            try {
+                readBatch();
+            } catch (MailboxException e) {
+                this.exception = e;
+                return false;
+            }
+        }
+        
+        return next.hasNext();
+    }
+
+    private void readBatch() throws MailboxException {
+        MessageRange range;
+        switch (type) {
+        default:
+        case ALL:
+            // In case of all, we start on cursor and don't specify a to
+            range = MessageRange.from(cursor);
+            break;
+        case FROM:
+            range = MessageRange.from(cursor);
+            break;
+        case ONE:
+            range = MessageRange.one(cursor);
+            break;
+        case RANGE:
+            range = MessageRange.range(cursor, to);
+            break;
+        }
+        next = mapper.findInMailbox(mailbox, range, ftype, 
batchSizeFromFetchType(ftype));
+    }
+
+    private int batchSizeFromFetchType(FetchType fetchType) {
+        switch (fetchType) {
+        case Metadata:
+            return batchSizes.getFetchMetadata();
+        case Headers:
+            return batchSizes.getFetchHeaders();
+        case Body:
+            return batchSizes.getFetchBody();
+        case Full:
+            return batchSizes.getFetchFull();
+        }
+        throw new RuntimeException("Unknown fetchTpe: " + fetchType);
+    }
+
+    @Override
+    public MessageResult next() {
+        if (!hasNext()) {
+          throw new NoSuchElementException();
+        }
+        
+        final MailboxMessage message = next.next();
+        MessageResult result;
+        try {
+            result = ResultUtils.loadMessageResult(message, group);
+            cursor = result.getUid();
+        } catch (MailboxException e) {
+            result = new UnloadedMessageResult(message, e);
+        }
+
+        cursor = cursor.next();
+        return result;
+    }
+
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException("Read only");
+    }
+
+    @Override
+    public MailboxException getException() {
+        return exception;
+    }
+
+    private static final class UnloadedMessageResult implements MessageResult {
+        private final MailboxException exception;
+
+        private final MessageMetaData messageMetaData;
+        private final MessageId messageId;
+        private final MailboxId mailboxId;
+
+        public UnloadedMessageResult(MailboxMessage message, MailboxException 
exception) {
+            messageMetaData = message.metaData();
+            mailboxId = message.getMailboxId();
+            messageId = message.getMessageId();
+            this.exception = exception;
+        }
+
+        @Override
+        public MessageMetaData messageMetaData() {
+            return messageMetaData;
+        }
+
+        @Override
+        public MessageUid getUid() {
+            return messageMetaData().getUid();
+        }
+
+        @Override
+        public MessageId getMessageId() {
+            return messageMetaData().getMessageId();
+        }
+
+        @Override
+        public Date getInternalDate() {
+            return messageMetaData().getInternalDate();
+        }
+
+        @Override
+        public Flags getFlags() {
+            return messageMetaData().getFlags();
+        }
+
+        @Override
+        public long getModSeq() {
+            return messageMetaData().getModSeq();
+        }
+
+        @Override
+        public long getSize() {
+            return messageMetaData().getSize();
+        }
+
+        @Override
+        public MailboxId getMailboxId() {
+            return mailboxId;
+        }
+
+        @Override
+        public Content getFullContent() throws MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public Content getBody() throws MailboxException {
+            throw exception;
+        }
+        
+        @Override
+        public int compareTo(MessageResult that) {
+            return getUid().compareTo(that.getUid());
+        }
+
+        @Override
+        public final boolean equals(Object o) {
+            if (o instanceof UnloadedMessageResult) {
+                UnloadedMessageResult that = (UnloadedMessageResult) o;
+
+                return Objects.equals(exception, that.exception)
+                    && Objects.equals(this.getInternalDate(), 
that.getInternalDate())
+                    && Objects.equals(this.getSize(), that.getSize())
+                    && Objects.equals(this.getUid(), that.getUid())
+                    && Objects.equals(this.getFlags(), that.getFlags())
+                    && Objects.equals(this.getModSeq(), that.getModSeq())
+                    && Objects.equals(this.messageId, that.messageId);
+            }
+            return false;
+        }
+
+        @Override
+        public final int hashCode() {
+            return Objects.hash(exception, getInternalDate(), getSize(), 
getUid(), getFlags(), getModSeq(), messageId);
+        }
+
+        @Override
+        public Content getFullContent(MimePath path) throws MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public Iterator<Header> iterateHeaders(MimePath path) throws 
MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public Iterator<Header> iterateMimeHeaders(MimePath path) throws 
MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public Content getBody(MimePath path) throws MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public Content getMimeBody(MimePath path) throws MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public MimeDescriptor getMimeDescriptor() throws MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public Headers getHeaders() throws MailboxException {
+            throw exception;
+        }
+
+        @Override
+        public List<MessageAttachment> getAttachments() throws 
MailboxException {
+            throw exception;
+        }
+
+    }
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to