diff --git a/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java b/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java index 56e73b4bf9..f12e9704ba 100755 --- a/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java +++ b/spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java @@ -231,17 +231,15 @@ public abstract class AbstractMailReceiver extends IntegrationObjectSupport impl this.fetchMessages(messages); } - List copiedMessages = new ArrayList(); + Message[] copiedMessages = new Message[messages.length]; for (int i = 0; i < messages.length; i++) { - if (!messages[i].isExpunged()){ - this.setAdditionalFlags(messages[i]); - copiedMessages.add(new MimeMessage((MimeMessage) messages[i])); - } + this.setAdditionalFlags(messages[i]); + copiedMessages[i] = new MimeMessage((MimeMessage) messages[i]); } if (this.shouldDeleteMessages()) { this.deleteMessages(messages); } - return copiedMessages.toArray(new Message[]{}); + return copiedMessages; } catch (Exception e) { throw new org.springframework.integration.MessagingException( diff --git a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java index 904048326a..b8f2ba5610 100644 --- a/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java +++ b/spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java @@ -15,6 +15,9 @@ */ package org.springframework.integration.mail; +import java.util.ArrayList; +import java.util.List; + import javax.mail.Folder; import javax.mail.Message; import javax.mail.Flags.Flag; @@ -185,43 +188,4 @@ public class ImapMailReceiverTests { verify(msg2, times(1)).setFlag(Flag.SEEN, true); verify(receiver, times(0)).deleteMessages((Message[]) Mockito.any()); } - @Test - /* - * This test emulates https://jira.springsource.org/browse/INT-1415 - */ - public void receieveAndDontMarkAsReadWithOneMessageExpanged() throws Exception{ - AbstractMailReceiver receiver = new ImapMailReceiver(); - ((ImapMailReceiver)receiver).setShouldMarkMessagesAsRead(false); - receiver = spy(receiver); - receiver.afterPropertiesSet(); - Message msg1 = mock(MimeMessage.class); - Message msg2 = mock(MimeMessage.class); - when(msg2.isExpunged()).thenReturn(true); - final Message[] messages = new Message[]{msg1, msg2}; - doAnswer(new Answer() { - public Object answer(InvocationOnMock invocation) throws Throwable { - DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock()); - int folderOpenMode = (Integer) accessor.getPropertyValue("folderOpenMode"); - if (folderOpenMode == Folder.READ_WRITE){ - throw new IllegalArgumentException("Folder had to be open in READ_ONLY mode"); - } - return null; - } - }).when(receiver).openFolder(); - - doAnswer(new Answer() { - public Object answer(InvocationOnMock invocation) throws Throwable { - return messages; - } - }).when(receiver).searchForNewMessages(); - - doAnswer(new Answer() { - public Object answer(InvocationOnMock invocation) throws Throwable { - return null; - } - }).when(receiver).fetchMessages(messages); - receiver.afterPropertiesSet(); - Message[] receievedMessages = receiver.receive(); - assertEquals(1, receievedMessages.length); - } }