use of jakarta.mail.Folder in project exist by eXist-db.
the class MessageListFunctions method searchMessageList.
private Sequence searchMessageList(Sequence[] args, Sequence contextSequence) throws XPathException {
Message[] msgList;
// was a folder handle specified?
if (args[0].isEmpty() || args[1].isEmpty()) {
throw (new XPathException(this, "Folder handle or Search Terms 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"));
}
Node searchTermsXML = ((NodeValue) args[1].itemAt(0)).getNode();
try {
msgList = folder.search(parseSearchTerms(searchTermsXML));
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 getMailFolder.
private Sequence getMailFolder(Sequence[] args, Sequence contextSequence) throws XPathException {
Folder folder;
// was a store handle specified?
if (args[0].isEmpty() || args[1].isEmpty()) {
throw (new XPathException(this, "Store handle and/or folder name not specified"));
}
// get the Store
long storeHandle = ((IntegerValue) args[0].itemAt(0)).getLong();
Store store = MailModule.retrieveStore(context, storeHandle);
if (store == null) {
throw (new XPathException(this, "Invalid Store handle specified"));
}
// get the Folder Name
String name = args[1].getStringValue();
try {
folder = store.getFolder(name);
folder.open(Folder.READ_WRITE);
} catch (MessagingException me) {
throw (new XPathException(this, "Failed to open mail folder", me));
}
return (new IntegerValue(MailModule.storeFolder(context, folder)));
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class AbstractMailReceiver method receive.
@Override
public Object[] receive() throws jakarta.mail.MessagingException {
// NOSONAR - guarded with the getReadHoldCount()
this.folderReadLock.lock();
try {
try {
Folder folderToCheck = getFolder();
if (folderToCheck == null || !folderToCheck.isOpen()) {
this.folderReadLock.unlock();
this.folderWriteLock.lock();
try {
openFolder();
this.folderReadLock.lock();
} finally {
this.folderWriteLock.unlock();
}
}
return convertMessagesIfNecessary(searchAndFilterMessages());
} finally {
if (this.autoCloseFolder) {
closeFolder();
}
}
} finally {
if (this.folderLock.getReadHoldCount() > 0) {
this.folderReadLock.unlock();
}
}
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class ImapMailReceiverTests method testImapLifecycleForRaceCondition.
// see INT-1801
@Test
public void testImapLifecycleForRaceCondition() throws Exception {
for (int i = 0; i < 100; 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(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();
new Thread(() -> {
try {
receiver.receive();
} catch (jakarta.mail.MessagingException e) {
if (e.getCause() instanceof NullPointerException) {
failed.getAndIncrement();
}
}
}).start();
new Thread(() -> {
try {
receiver.destroy();
} catch (Exception ignore) {
// ignore
}
}).start();
}
assertThat(failed.get()).isEqualTo(0);
}
use of jakarta.mail.Folder in project spring-integration by spring-projects.
the class ImapMailReceiverTests method receiveAndDontMarkAsRead.
@Test
public void receiveAndDontMarkAsRead() throws Exception {
AbstractMailReceiver receiver = new ImapMailReceiver();
((ImapMailReceiver) receiver).setShouldMarkMessagesAsRead(false);
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);
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);
}
Aggregations