Example usage for org.springframework.integration.mail AbstractMailReceiver setSelectorExpression

List of usage examples for org.springframework.integration.mail AbstractMailReceiver setSelectorExpression

Introduction

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

Prototype

public void setSelectorExpression(Expression selectorExpression) 

Source Link

Usage

From source file:org.springframework.integration.mail.config.MailReceiverFactoryBean.java

private MailReceiver createReceiver() {
    this.verifyProtocol();
    boolean isPop3 = this.protocol.toLowerCase().startsWith("pop3");
    boolean isImap = this.protocol.toLowerCase().startsWith("imap");
    Assert.isTrue(isPop3 || isImap, "the store URI must begin with 'pop3' or 'imap'");
    AbstractMailReceiver receiver = isPop3 ? new Pop3MailReceiver(this.storeUri)
            : new ImapMailReceiver(this.storeUri);
    if (this.session != null) {
        Assert.isNull(this.javaMailProperties,
                "JavaMail Properties are not allowed when a Session has been provided.");
        Assert.isNull(this.authenticator,
                "A JavaMail Authenticator is not allowed when a Session has been provied.");
        receiver.setSession(this.session);
    }/* w  w w .j a v a2s. c  o m*/
    if (this.searchTermStrategy != null) {
        Assert.isTrue(isImap, "searchTermStrategy is only allowed with imap");
        ((ImapMailReceiver) receiver).setSearchTermStrategy(this.searchTermStrategy);
    }
    if (this.javaMailProperties != null) {
        receiver.setJavaMailProperties(this.javaMailProperties);
    }
    if (this.authenticator != null) {
        receiver.setJavaMailAuthenticator(this.authenticator);
    }
    if (this.shouldDeleteMessages != null) {
        // always set the value if configured explicitly
        // otherwise, the default is true for POP3 but false for IMAP
        receiver.setShouldDeleteMessages(this.shouldDeleteMessages);
    }
    receiver.setMaxFetchSize(this.maxFetchSize);
    receiver.setSelectorExpression(selectorExpression);

    if (isPop3) {
        if (this.isShouldMarkMessagesAsRead() && this.logger.isWarnEnabled()) {
            logger.warn("Setting 'should-mark-messages-as-read' to 'true' while using POP3 has no effect");
        }
    } else if (isImap) {
        ((ImapMailReceiver) receiver).setShouldMarkMessagesAsRead(this.shouldMarkMessagesAsRead);
    }
    if (this.beanFactory != null) {
        receiver.setBeanFactory(this.beanFactory);
    }
    receiver.afterPropertiesSet();
    return receiver;
}

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());
}