Example usage for org.springframework.integration.mail ImapMailReceiver receive

List of usage examples for org.springframework.integration.mail ImapMailReceiver receive

Introduction

In this page you can find the example usage for org.springframework.integration.mail ImapMailReceiver receive.

Prototype

@Override
    public Object[] receive() throws javax.mail.MessagingException 

Source Link

Usage

From source file:org.springframework.integration.mail.ImapMailReceiverTests.java

@Test // see INT-1801
public void testImapLifecycleForRaceCondition() throws Exception {

    for (int i = 0; i < 1000; i++) {
        final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo");
        Store store = mock(Store.class);
        Folder folder = mock(Folder.class);
        given(folder.exists()).willReturn(true);
        given(folder.isOpen()).willReturn(true);
        given(folder.search((SearchTerm) Mockito.any())).willReturn(new Message[] {});
        given(store.getFolder(Mockito.any(URLName.class))).willReturn(folder);
        given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));

        DirectFieldAccessor df = new DirectFieldAccessor(receiver);
        df.setPropertyValue("store", store);
        receiver.setBeanFactory(mock(BeanFactory.class));
        receiver.afterPropertiesSet();/*from   ww  w. ja  v  a2 s .co m*/

        new Thread(() -> {
            try {
                receiver.receive();
            } catch (javax.mail.MessagingException e) {
                if (e.getCause() instanceof NullPointerException) {
                    failed.getAndIncrement();
                }
            }

        }).start();

        new Thread(() -> {
            try {
                receiver.destroy();
            } catch (Exception ignore) {
                // ignore
            }
        }).start();
    }
    assertEquals(0, failed.get());
}

From source file:org.springframework.integration.mail.ImapMailReceiverTests.java

@Test
public void testAttachments() throws Exception {
    final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo");
    Folder folder = testAttachmentsGuts(receiver);
    Message[] messages = (Message[]) receiver.receive();
    Object content = messages[0].getContent();
    assertEquals("bar", ((Multipart) content).getBodyPart(0).getContent().toString().trim());
    assertEquals("foo", ((Multipart) content).getBodyPart(1).getContent().toString().trim());

    assertSame(folder, messages[0].getFolder());
}

From source file:org.springframework.integration.mail.ImapMailReceiverTests.java

@Test
public void testAttachmentsWithMappingMultiAsBytes() throws Exception {
    final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo");
    receiver.setHeaderMapper(new DefaultMailHeaderMapper());
    testAttachmentsGuts(receiver);//from  w  w w  .jav  a 2  s .c om
    org.springframework.messaging.Message<?>[] messages = (org.springframework.messaging.Message<?>[]) receiver
            .receive();
    org.springframework.messaging.Message<?> received = messages[0];
    Object content = received.getPayload();
    assertThat(content, instanceOf(byte[].class));
    assertThat((String) received.getHeaders().get(MailHeaders.CONTENT_TYPE),
            equalTo("multipart/mixed;\r\n boundary=\"------------040903000701040401040200\""));
    assertThat((String) received.getHeaders().get(MessageHeaders.CONTENT_TYPE),
            equalTo("application/octet-stream"));
}

From source file:org.springframework.integration.mail.ImapMailReceiverTests.java

@Test
public void testAttachmentsWithMapping() throws Exception {
    final ImapMailReceiver receiver = new ImapMailReceiver("imap://foo");
    receiver.setHeaderMapper(new DefaultMailHeaderMapper());
    receiver.setEmbeddedPartsAsBytes(false);
    testAttachmentsGuts(receiver);//  www  .j  av a 2 s .  c o  m
    org.springframework.messaging.Message<?>[] messages = (org.springframework.messaging.Message<?>[]) receiver
            .receive();
    Object content = messages[0].getPayload();
    assertThat(content, instanceOf(Multipart.class));
    assertEquals("bar", ((Multipart) content).getBodyPart(0).getContent().toString().trim());
    assertEquals("foo", ((Multipart) content).getBodyPart(1).getContent().toString().trim());
}

From source file:org.springframework.integration.mail.ImapMailReceiverTests.java

@Test
public void testNullMessages() throws Exception {
    Message message1 = mock(Message.class);
    Message message2 = mock(Message.class);
    final Message[] messages1 = new Message[] { null, null, message1 };
    final Message[] messages2 = new Message[] { message2 };
    final SearchTermStrategy searchTermStrategy = mock(SearchTermStrategy.class);
    class TestReceiver extends ImapMailReceiver {

        private boolean firstDone;

        TestReceiver() {/*ww w.  j  a  va  2  s  . co  m*/
            setSearchTermStrategy(searchTermStrategy);
        }

        @Override
        protected Folder getFolder() {
            Folder folder = mock(Folder.class);
            given(folder.isOpen()).willReturn(true);
            try {
                given(folder.getMessages()).willReturn(!this.firstDone ? messages1 : messages2);
            } catch (MessagingException e) {
            }
            return folder;
        }

        @Override
        public Message[] receive() throws MessagingException {
            Message[] messages = searchForNewMessages();
            this.firstDone = true;
            return messages;
        }

    }
    ImapMailReceiver receiver = new TestReceiver();
    Message[] received = (Message[]) receiver.receive();
    assertEquals(1, received.length);
    assertSame(message1, received[0]);
    received = (Message[]) receiver.receive();
    assertEquals(1, received.length);
    assertSame(messages2, received);
    assertSame(message2, received[0]);
}