use of jakarta.mail.Folder in project exist by eXist-db.
the class MessageListFunctions method getMessageList.
// ***************************************************************************
// *
// * Function Implementation Methods
// *
// ***************************************************************************/
private Sequence getMessageList(Sequence[] args, Sequence contextSequence) throws XPathException {
Message[] msgList;
// was a folder handle specified?
if (args[0].isEmpty()) {
throw (new XPathException(this, "Folder handle not specified"));
}
// get the Folder
long folderHandle = ((IntegerValue) args[0].itemAt(0)).getLong();
Folder folder = MailModule.retrieveFolder(context, folderHandle);
if (folder == null) {
throw (new XPathException(this, "Invalid Folder handle specified"));
}
try {
msgList = folder.getMessages();
prefetchMessages(folder, msgList);
} catch (MessagingException me) {
throw (new XPathException(this, "Failed to get mail list", me));
}
return (new IntegerValue(MailModule.storeMessageList(context, msgList, folderHandle)));
}
use of jakarta.mail.Folder in project exist by eXist-db.
the class MailFolderFunctions method closeMailFolder.
private Sequence closeMailFolder(Sequence[] args, Sequence contextSequence) throws XPathException {
// was a folder handle specified?
if (args[0].isEmpty()) {
throw (new XPathException(this, "Folder handle not specified"));
}
boolean expunge = ((BooleanValue) args[1].itemAt(0)).effectiveBooleanValue();
// get the Folder
long folderHandle = ((IntegerValue) args[0].itemAt(0)).getLong();
Folder folder = MailModule.retrieveFolder(context, folderHandle);
if (folder == null) {
throw (new XPathException(this, "Invalid Folder handle specified"));
}
try {
folder.close(expunge);
} catch (MessagingException me) {
throw (new XPathException(this, "Failed to close mail folder", me));
} finally {
MailModule.removeFolder(context, folderHandle);
}
return (Sequence.EMPTY_SEQUENCE);
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class ImapMailReceiverTests method testNullMessages.
@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;
private TestReceiver() {
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 ignored) {
}
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();
assertThat(received.length).isEqualTo(1);
assertThat(received[0]).isSameAs(message1);
received = (Message[]) receiver.receive();
assertThat(received.length).isEqualTo(1);
assertThat(received).isSameAs(messages2);
assertThat(received[0]).isSameAs(message2);
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class ImapMailReceiverTests method testIdleChannelAdapterException.
@Test
public void testIdleChannelAdapterException() throws Exception {
ImapIdleChannelAdapter adapter = this.context.getBean("simpleAdapter", ImapIdleChannelAdapter.class);
// ImapMailReceiver receiver = (ImapMailReceiver) TestUtils.getPropertyValue(adapter, "mailReceiver");
DirectChannel channel = new DirectChannel();
channel.subscribe(new AbstractReplyProducingMessageHandler() {
@Override
protected Object handleRequestMessage(org.springframework.messaging.Message<?> requestMessage) {
throw new RuntimeException("Failed");
}
});
adapter.setOutputChannel(channel);
QueueChannel errorChannel = new QueueChannel();
adapter.setErrorChannel(errorChannel);
adapter.setReconnectDelay(1);
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);
assertThat(replMessage).isNotNull();
assertThat(((Exception) replMessage.getPayload()).getCause().getMessage()).isEqualTo("Failed");
adapter.stop();
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class ImapMailReceiverTests method receiveAndMarkAsReadDontDeleteGuts.
private AbstractMailReceiver receiveAndMarkAsReadDontDeleteGuts(AbstractMailReceiver receiver, Message msg1, Message msg2) throws NoSuchFieldException, IllegalAccessException, MessagingException {
((ImapMailReceiver) receiver).setShouldMarkMessagesAsRead(true);
receiver = spy(receiver);
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);
final Message[] messages = new Message[] { msg1, msg2 };
willAnswer(invocation -> {
DirectFieldAccessor accessor = new DirectFieldAccessor(invocation.getMock());
int folderOpenMode = (int) 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();
return receiver;
}
Aggregations