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

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

Introduction

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

Prototype

public ImapMailReceiver() 

Source Link

Usage

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

@Test
public void receiveAndMarkAsReadDontDelete() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    Message msg1 = mock(MimeMessage.class);
    Message msg2 = mock(MimeMessage.class);
    receiver = receiveAndMarkAsReadDontDeleteGuts(receiver, msg1, msg2);
    verify(msg1, times(1)).setFlag(Flag.SEEN, true);
    verify(msg2, times(1)).setFlag(Flag.SEEN, true);
    verify(receiver, times(0)).deleteMessages((Message[]) Mockito.any());
}

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

@Test // INT-2991 Flag.SEEN was set twice when a filter is used
public void receiveAndMarkAsReadDontDeletePassingFilter() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    Message msg1 = mock(MimeMessage.class);
    Message msg2 = mock(MimeMessage.class);
    Expression selectorExpression = new SpelExpressionParser().parseExpression("true");
    receiver.setSelectorExpression(selectorExpression);
    receiver = receiveAndMarkAsReadDontDeleteGuts(receiver, msg1, msg2);
    verify(msg1, times(1)).setFlag(Flag.SEEN, true);
    verify(msg2, times(1)).setFlag(Flag.SEEN, true);
    verify(receiver, times(0)).deleteMessages((Message[]) Mockito.any());
}

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

@Test // INT-2991 filtered messages were marked SEEN
public void receiveAndMarkAsReadDontDeleteFiltered() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    Message msg1 = mock(MimeMessage.class);
    Message msg2 = mock(MimeMessage.class);
    given(msg2.getSubject()).willReturn("foo"); // should not be marked seen
    Expression selectorExpression = new SpelExpressionParser()
            .parseExpression("subject == null OR !subject.equals('foo')");
    receiver.setSelectorExpression(selectorExpression);
    receiver = receiveAndMarkAsReadDontDeleteGuts(receiver, msg1, msg2);
    verify(msg1, times(1)).setFlag(Flag.SEEN, true);
    verify(msg2, never()).setFlag(Flag.SEEN, true);
    verify(receiver, times(0)).deleteMessages((Message[]) Mockito.any());
}

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

@Test
public void receiveMarkAsReadAndDelete() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    ((ImapMailReceiver) receiver).setShouldMarkMessagesAsRead(true);
    receiver.setShouldDeleteMessages(true);
    receiver = spy(receiver);/*from ww w .j  a va 2s .c o m*/
    receiver.setBeanFactory(mock(BeanFactory.class));
    receiver.afterPropertiesSet();

    Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
    folderField.setAccessible(true);
    Folder folder = mock(Folder.class);
    given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
    folderField.set(receiver, folder);

    Message msg1 = mock(MimeMessage.class);
    Message msg2 = mock(MimeMessage.class);
    final Message[] messages = new Message[] { msg1, msg2 };
    willAnswer(invocation -> {
        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_WRITE mode");
        }
        return null;
    }).given(receiver).openFolder();

    willAnswer(invocation -> messages).given(receiver).searchForNewMessages();

    willAnswer(invocation -> null).given(receiver).fetchMessages(messages);
    receiver.receive();
    verify(msg1, times(1)).setFlag(Flag.SEEN, true);
    verify(msg2, times(1)).setFlag(Flag.SEEN, true);
    verify(receiver, times(1)).deleteMessages((Message[]) Mockito.any());
}

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

@Test
public void receiveAndDontMarkAsRead() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    ((ImapMailReceiver) receiver).setShouldMarkMessagesAsRead(false);
    receiver = spy(receiver);/*from   w  ww.  j  a v a  2s.c  o  m*/
    receiver.setBeanFactory(mock(BeanFactory.class));
    receiver.afterPropertiesSet();

    Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
    folderField.setAccessible(true);
    Folder folder = mock(Folder.class);
    given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
    folderField.set(receiver, folder);

    Message msg1 = mock(MimeMessage.class);
    Message msg2 = mock(MimeMessage.class);
    final Message[] messages = new Message[] { msg1, msg2 };
    willAnswer(invocation -> null).given(receiver).openFolder();

    willAnswer(invocation -> messages).given(receiver).searchForNewMessages();

    willAnswer(invocation -> null).given(receiver).fetchMessages(messages);
    receiver.afterPropertiesSet();
    receiver.receive();
    verify(msg1, times(0)).setFlag(Flag.SEEN, true);
    verify(msg2, times(0)).setFlag(Flag.SEEN, true);
}

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

@Test
public void receiveAndDontMarkAsReadButDelete() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    receiver.setShouldDeleteMessages(true);
    ((ImapMailReceiver) receiver).setShouldMarkMessagesAsRead(false);
    receiver = spy(receiver);/*from   ww w.  j  a  va  2s  .  co m*/
    receiver.setBeanFactory(mock(BeanFactory.class));
    receiver.afterPropertiesSet();

    Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
    folderField.setAccessible(true);
    Folder folder = mock(Folder.class);
    given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
    folderField.set(receiver, folder);

    Message msg1 = mock(MimeMessage.class);
    Message msg2 = mock(MimeMessage.class);
    final Message[] messages = new Message[] { msg1, msg2 };
    willAnswer(invocation -> {
        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_WRITE mode");
        }
        return null;
    }).given(receiver).openFolder();

    willAnswer(invocation -> messages).given(receiver).searchForNewMessages();

    willAnswer(invocation -> null).given(receiver).fetchMessages(messages);
    receiver.afterPropertiesSet();
    receiver.receive();
    verify(msg1, times(0)).setFlag(Flag.SEEN, true);
    verify(msg2, times(0)).setFlag(Flag.SEEN, true);
    verify(msg1, times(1)).setFlag(Flag.DELETED, true);
    verify(msg2, times(1)).setFlag(Flag.DELETED, true);
}

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

@Test
public void receiveAndIgnoreMarkAsReadDontDelete() throws Exception {
    AbstractMailReceiver receiver = new ImapMailReceiver();
    receiver = spy(receiver);//from   w  ww  . jav a2s .c om
    receiver.setBeanFactory(mock(BeanFactory.class));
    receiver.afterPropertiesSet();

    Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
    folderField.setAccessible(true);
    Folder folder = mock(Folder.class);
    given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
    folderField.set(receiver, folder);

    Message msg1 = mock(MimeMessage.class);
    Message msg2 = mock(MimeMessage.class);
    final Message[] messages = new Message[] { msg1, msg2 };
    willAnswer(invocation -> {
        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_WRITE mode");
        }
        return null;
    }).given(receiver).openFolder();

    willAnswer(invocation -> messages).given(receiver).searchForNewMessages();

    willAnswer(invocation -> null).given(receiver).fetchMessages(messages);
    receiver.receive();
    verify(msg1, times(1)).setFlag(Flag.SEEN, true);
    verify(msg2, times(1)).setFlag(Flag.SEEN, true);
    verify(receiver, times(0)).deleteMessages((Message[]) Mockito.any());
}

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

@SuppressWarnings("resource")
@Test/* www.jav a2s.  c  o  m*/
@Ignore
public void testMessageHistory() throws Exception {
    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(
            "ImapIdleChannelAdapterParserTests-context.xml", ImapIdleChannelAdapterParserTests.class);
    ImapIdleChannelAdapter adapter = context.getBean("simpleAdapter", ImapIdleChannelAdapter.class);

    AbstractMailReceiver receiver = new ImapMailReceiver();
    receiver = spy(receiver);
    receiver.setBeanFactory(mock(BeanFactory.class));
    receiver.afterPropertiesSet();

    DirectFieldAccessor adapterAccessor = new DirectFieldAccessor(adapter);
    adapterAccessor.setPropertyValue("mailReceiver", receiver);

    MimeMessage mailMessage = mock(MimeMessage.class);
    Flags flags = mock(Flags.class);
    given(mailMessage.getFlags()).willReturn(flags);
    final Message[] messages = new Message[] { mailMessage };

    willAnswer(invocation -> {
        DirectFieldAccessor accessor = new DirectFieldAccessor((invocation.getMock()));
        IMAPFolder folder = mock(IMAPFolder.class);
        accessor.setPropertyValue("folder", folder);
        given(folder.hasNewMessages()).willReturn(true);
        return null;
    }).given(receiver).openFolder();

    willAnswer(invocation -> messages).given(receiver).searchForNewMessages();

    willAnswer(invocation -> null).given(receiver).fetchMessages(messages);

    PollableChannel channel = context.getBean("channel", PollableChannel.class);

    adapter.start();
    org.springframework.messaging.Message<?> replMessage = channel.receive(10000);
    MessageHistory history = MessageHistory.read(replMessage);
    assertNotNull(history);
    Properties componentHistoryRecord = TestUtils.locateComponentInHistory(history, "simpleAdapter", 0);
    assertNotNull(componentHistoryRecord);
    assertEquals("mail:imap-idle-channel-adapter", componentHistoryRecord.get("type"));
    adapter.stop();
    context.close();
}

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

@Test
public void testIdleChannelAdapterException() throws Exception {
    ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(
            "ImapIdleChannelAdapterParserTests-context.xml", ImapIdleChannelAdapterParserTests.class);
    ImapIdleChannelAdapter adapter = context.getBean("simpleAdapter", ImapIdleChannelAdapter.class);

    //ImapMailReceiver receiver = (ImapMailReceiver) TestUtils.getPropertyValue(adapter, "mailReceiver");

    DirectChannel channel = new DirectChannel();
    channel.subscribe(new AbstractReplyProducingMessageHandler() {

        @Override//  w w w.  jav  a  2  s. co  m
        protected Object handleRequestMessage(org.springframework.messaging.Message<?> requestMessage) {
            throw new RuntimeException("Failed");
        }
    });
    adapter.setOutputChannel(channel);
    QueueChannel errorChannel = new QueueChannel();
    adapter.setErrorChannel(errorChannel);

    AbstractMailReceiver receiver = new ImapMailReceiver();
    receiver = spy(receiver);
    receiver.setBeanFactory(mock(BeanFactory.class));
    receiver.afterPropertiesSet();

    Field folderField = AbstractMailReceiver.class.getDeclaredField("folder");
    folderField.setAccessible(true);
    Folder folder = mock(IMAPFolder.class);
    given(folder.getPermanentFlags()).willReturn(new Flags(Flags.Flag.USER));
    folderField.set(receiver, folder);

    willAnswer(invocation -> true).given(folder).isOpen();

    willAnswer(invocation -> null).given(receiver).openFolder();

    DirectFieldAccessor adapterAccessor = new DirectFieldAccessor(adapter);
    adapterAccessor.setPropertyValue("mailReceiver", receiver);

    MimeMessage mailMessage = mock(MimeMessage.class);
    Flags flags = mock(Flags.class);
    given(mailMessage.getFlags()).willReturn(flags);
    final Message[] messages = new Message[] { mailMessage };

    willAnswer(invocation -> messages).given(receiver).searchForNewMessages();

    willAnswer(invocation -> null).given(receiver).fetchMessages(messages);

    adapter.start();
    org.springframework.messaging.Message<?> replMessage = errorChannel.receive(10000);
    assertNotNull(replMessage);
    assertEquals("Failed", ((Exception) replMessage.getPayload()).getCause().getMessage());
    adapter.stop();
    context.close();
}

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

@Test
public void testExecShutdown() {
    ImapIdleChannelAdapter adapter = new ImapIdleChannelAdapter(new ImapMailReceiver());
    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.initialize();//  w  w w.  j  a v  a 2s .co  m
    adapter.setTaskScheduler(taskScheduler);
    adapter.start();
    ExecutorService exec = TestUtils.getPropertyValue(adapter, "sendingTaskExecutor", ExecutorService.class);
    adapter.stop();
    assertTrue(exec.isShutdown());
    adapter.start();
    exec = TestUtils.getPropertyValue(adapter, "sendingTaskExecutor", ExecutorService.class);
    adapter.stop();
    assertTrue(exec.isShutdown());
}