protected List<ImapMessage> getMessagesFromUids(final List<String> mesgUids) throws MessagingException { checkOpen(); Set<Long> uidSet = new HashSet<>(); for (String uid : mesgUids) { uidSet.add(Long.parseLong(uid)); } try { List<ImapResponse> imapResponses = connection.executeCommandWithIdSet("UID SEARCH UID", "", uidSet); SearchResponse searchResponse = SearchResponse.parse(imapResponses); return getMessages(searchResponse, null); } catch (IOException ioe) { throw ioExceptionHandler(connection, ioe); } }
protected List<ImapMessage> getMessages(final int start, final int end, Date earliestDate, final boolean includeDeleted, final MessageRetrievalListener<ImapMessage> listener) throws MessagingException { if (start < 1 || end < 1 || end < start) { throw new MessagingException(String.format(Locale.US, "Invalid message set %d %d", start, end)); } checkOpen(); String dateSearchString = getDateSearchString(earliestDate); String command = String.format(Locale.US, "UID SEARCH %d:%d%s%s", start, end, dateSearchString, includeDeleted ? "" : " NOT DELETED"); try { List<ImapResponse> imapResponses = connection.executeSimpleCommand(command); SearchResponse searchResponse = SearchResponse.parse(imapResponses); return getMessages(searchResponse, listener); } catch (IOException ioe) { throw ioExceptionHandler(connection, ioe); } }
private Message messageOnServer() throws MessagingException { String messageUid = "UID"; Message remoteMessage = mock(Message.class); when(remoteMessage.getUid()).thenReturn(messageUid); when(remoteFolder.getMessages(anyInt(), anyInt(), nullable(Date.class), nullable(MessageRetrievalListener.class))).thenReturn(Collections.singletonList(remoteMessage)); return remoteMessage; }
private void hasUnsyncedRemoteMessage() throws MessagingException { String messageUid = "UID"; Message remoteMessage = mock(Message.class); when(remoteMessage.getUid()).thenReturn(messageUid); when(remoteFolder.getMessages(anyInt(), anyInt(), nullable(Date.class), nullable(MessageRetrievalListener.class))).thenReturn(Collections.singletonList(remoteMessage)); }
protected List<ImapMessage> getMessages(final Set<Long> mesgSeqs, final boolean includeDeleted, final MessageRetrievalListener<ImapMessage> listener) throws MessagingException { checkOpen(); try { String commandSuffix = includeDeleted ? "" : " NOT DELETED"; List<ImapResponse> imapResponses = connection.executeCommandWithIdSet(Commands.UID_SEARCH, commandSuffix, mesgSeqs); SearchResponse searchResponse = SearchResponse.parse(imapResponses); return getMessages(searchResponse, listener); } catch (IOException ioe) { throw ioExceptionHandler(connection, ioe); } }
@Test public void getMessages_sequenceNumbers_withClosedFolder_shouldThrow() throws Exception { ImapFolder folder = createFolder("Folder"); when(imapStore.getConnection()).thenReturn(imapConnection); try { folder.getMessages(new HashSet<>(asList(1L, 2L, 5L)), false, null); fail("Expected exception"); } catch (MessagingException e) { assertCheckOpenErrorMessage("Folder", e); } }
@Test public void getMessages_withClosedFolder_shouldThrow() throws Exception { ImapFolder folder = createFolder("Folder"); when(imapStore.getConnection()).thenReturn(imapConnection); try { folder.getMessages(1, 5, null, null); fail("Expected exception"); } catch (MessagingException e) { assertCheckOpenErrorMessage("Folder", e); } }
@Test public void getMessages_sequenceNumbers_withListener_shouldCallListener() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 99"); folder.open(OPEN_MODE_RW); MessageRetrievalListener<ImapMessage> listener = createMessageRetrievalListener(); List<ImapMessage> messages = folder.getMessages(singleton(1L), true, listener); ImapMessage message = messages.get(0); verify(listener).messageStarted("99", 0, 1); verify(listener).messageFinished(message, 0, 1); verifyNoMoreInteractions(listener); }
@Test public void getMessages_withListener_shouldCallListener() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 99"); folder.open(OPEN_MODE_RW); MessageRetrievalListener<ImapMessage> listener = createMessageRetrievalListener(); List<ImapMessage> messages = folder.getMessages(1, 10, null, listener); ImapMessage message = messages.get(0); verify(listener).messageStarted("99", 0, 1); verify(listener).messageFinished(message, 0, 1); verifyNoMoreInteractions(listener); }
@Test public void getMessages_withDateConstraint() throws Exception { TimeZone.setDefault(TimeZone.getTimeZone("UTC")); ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 47", "* SEARCH 18"); folder.open(OPEN_MODE_RW); List<ImapMessage> messages = folder.getMessages(1, 10, new Date(1454719826000L), null); assertNotNull(messages); assertEquals(newSet("18", "47"), extractMessageUids(messages)); }
@Test public void getMessages_withEndArgumentSmallerThanStartArgument_shouldThrow() throws Exception { ImapFolder folder = createFolder("Folder"); try { folder.getMessages(10, 5, null, null); fail("Expected exception"); } catch (MessagingException e) { assertEquals("Invalid message set 10 5", e.getMessage()); } }
@Test public void getMessages_withInvalidStartArgument_shouldThrow() throws Exception { ImapFolder folder = createFolder("Folder"); try { folder.getMessages(0, 10, null, null); fail("Expected exception"); } catch (MessagingException e) { assertEquals("Invalid message set 0 10", e.getMessage()); } }
@Test public void getMessages_withInvalidEndArgument_shouldThrow() throws Exception { ImapFolder folder = createFolder("Folder"); try { folder.getMessages(10, 0, null, null); fail("Expected exception"); } catch (MessagingException e) { assertEquals("Invalid message set 10 0", e.getMessage()); } }
@Test public void getMessages_withoutDateConstraint() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 3", "* SEARCH 5", "* SEARCH 6"); folder.open(OPEN_MODE_RW); List<ImapMessage> messages = folder.getMessages(1, 10, null, null); assertNotNull(messages); assertEquals(newSet("3", "5", "6"), extractMessageUids(messages)); }
@Test public void getMessages_sequenceNumbers() throws Exception { ImapFolder folder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); setupUidSearchResponses("* SEARCH 17", "* SEARCH 18", "* SEARCH 49"); folder.open(OPEN_MODE_RW); List<ImapMessage> messages = folder.getMessages(newSet(1L, 2L, 5L), false, null); assertNotNull(messages); assertEquals(newSet("17", "18", "49"), extractMessageUids(messages)); }
List<ImapResponse> imapResponses = executeSimpleCommand(searchCommand); SearchResponse searchResponse = SearchResponse.parse(imapResponses); return getMessages(searchResponse, null); } catch (IOException ioe) { throw ioExceptionHandler(connection, ioe);