From 3f48d2043b0c96941745413ed2f33e4e0d6e044a Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Sat, 15 Dec 2018 14:30:59 -0500 Subject: [PATCH] ImapMailReceiver: Check folder.isOpen before idle Increase wait timeout for message in the ImapMailReceiverTests https://build.spring.io/browse/INT-MASTERSPRING40-556/ --- .../springframework/integration/mail/ImapMailReceiver.java | 4 +++- .../integration/mail/ImapMailReceiverTests.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java b/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java index 3dfbe61f72..d8ea530aa6 100755 --- a/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java +++ b/spring-integration-mail/src/main/java/org/springframework/integration/mail/ImapMailReceiver.java @@ -179,7 +179,9 @@ public class ImapMailReceiver extends AbstractMailReceiver { try { this.pingTask = this.scheduler.schedule(this.idleCanceler, new Date(System.currentTimeMillis() + this.cancelIdleInterval)); - imapFolder.idle(); + if (imapFolder.isOpen()) { + imapFolder.idle(); + } } finally { imapFolder.removeMessageCountListener(this.messageCountListener); 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 7f536c2c1d..3d42cef851 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 @@ -250,7 +250,7 @@ public class ImapMailReceiverTests { assertThat(received.getPayload(), equalTo(TestMailServer.MailServer.MailHandler.MESSAGE + "\r\n")); } } - assertNotNull(channel.receive(10000)); // new message after idle + assertNotNull(channel.receive(20000)); // new message after idle assertNull(channel.receive(100)); // no new message after second and third idle verify(logger).debug("Canceling IDLE");