Skip to content

Commit b5d2710

Browse files
committed
Apply review feedback
1 parent 45668a4 commit b5d2710

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

spring-integration-mail/src/main/java/org/springframework/integration/mail/AbstractMailReceiver.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -504,26 +504,19 @@ private Object byteArrayToContent(Map<String, Object> headers, ByteArrayOutputSt
504504
}
505505

506506
private void postProcessFilteredMessages(Message[] filteredMessages) throws MessagingException {
507-
// It is more intuitive use a local variable Message[] messages = filteredMessages;
508-
// and then call setMessageFlagsAndMaybeDeleteMessages(messages); after the if, i.e. remove the else.
509-
// However, in setMessageFlagsAndMaybeDeleteMessages we are calling Message#setFlag and Message#setFlags
510-
// which have different implementations in different implementations of Message.
511-
// e.g. IMAPMessage has a different implementation of those two methods.
512-
513507
// Copy messages to cause an eager fetch
508+
Message[] messages = filteredMessages;
514509
if (this.headerMapper == null && (this.autoCloseFolder || this.simpleContent)) {
515-
Message[] originalMessages = new Message[filteredMessages.length];
510+
messages = new Message[filteredMessages.length];
516511
for (int i = 0; i < filteredMessages.length; i++) {
517512
Message originalMessage = filteredMessages[i];
518-
originalMessages[i] = originalMessage;
513+
messages[i] = originalMessage;
519514
MimeMessage mimeMessage = new IntegrationMimeMessage((MimeMessage) originalMessage);
520515
filteredMessages[i] = mimeMessage;
521516
}
522-
setMessageFlagsAndMaybeDeleteMessages(originalMessages);
523-
}
524-
else {
525-
setMessageFlagsAndMaybeDeleteMessages(filteredMessages);
526517
}
518+
519+
setMessageFlagsAndMaybeDeleteMessages(messages);
527520
}
528521

529522
private void setMessageFlagsAndMaybeDeleteMessages(Message[] messages) throws MessagingException {

spring-integration-mail/src/test/java/org/springframework/integration/mail/ImapMailReceiverTests.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,10 +1005,12 @@ public void receiveAndMarkAsReadDontDeleteWithThrowingWhenCopying() throws Excep
10051005
.hasMessage("Simulated exception");
10061006
assertThat(msg1.getFlags().contains(Flag.SEEN)).isFalse();
10071007
assertThat(msg2.getFlags().contains(Flag.SEEN)).isFalse();
1008+
assertThat(msg2.getMyTestFlags().contains(Flag.SEEN)).isFalse();
10081009

10091010
receiver.receive();
10101011
assertThat(msg1.getFlags().contains(Flag.SEEN)).isTrue();
10111012
assertThat(msg2.getFlags().contains(Flag.SEEN)).isTrue();
1013+
assertThat(msg2.getMyTestFlags().contains(Flag.SEEN)).isTrue();
10121014
verify(receiver, times(0)).deleteMessages(Mockito.any());
10131015
}
10141016

@@ -1051,6 +1053,8 @@ private static class TestThrowingMimeMessage extends MimeMessage {
10511053

10521054
protected final AtomicInteger exceptionsBeforeWrite;
10531055

1056+
protected final Flags myTestFlags = new Flags();
1057+
10541058
private TestThrowingMimeMessage(MimeMessage source, int exceptionsBeforeWrite) throws MessagingException {
10551059
super(source);
10561060
this.exceptionsBeforeWrite = new AtomicInteger(exceptionsBeforeWrite);
@@ -1063,6 +1067,21 @@ public void writeTo(OutputStream os) throws IOException, MessagingException {
10631067
}
10641068
super.writeTo(os);
10651069
}
1070+
1071+
@Override
1072+
public synchronized void setFlags(Flags flag, boolean set) throws MessagingException {
1073+
super.setFlags(flag, set);
1074+
if (set) {
1075+
myTestFlags.add(flag);
1076+
}
1077+
else {
1078+
myTestFlags.remove(flag);
1079+
}
1080+
}
1081+
1082+
private Flags getMyTestFlags() {
1083+
return myTestFlags;
1084+
}
10661085
}
10671086

10681087
}

0 commit comments

Comments
 (0)