private static void closeFolder(ImapFolder folder) { if (folder != null) { folder.close(); } } }
void setFlag(@NotNull String folderServerId, @NotNull List<String> messageServerIds, @NotNull Flag flag, boolean newState) throws MessagingException { ImapFolder remoteFolder = imapStore.getFolder(folderServerId); if (!remoteFolder.exists() || !remoteFolder.isFlagSupported(flag)) { return; } try { remoteFolder.open(Folder.OPEN_MODE_RW); if (remoteFolder.getMode() != Folder.OPEN_MODE_RW) { return; } List<Message> messages = new ArrayList<>(); for (String uid : messageServerIds) { if (!uid.startsWith(BackendFolder.LOCAL_UID_PREFIX)) { messages.add(remoteFolder.getMessage(uid)); } } if (messages.isEmpty()) { return; } remoteFolder.setFlags(messages, Collections.singleton(flag), newState); } finally { remoteFolder.close(); } } }
void markAllAsRead(@NotNull String folderServerId) throws MessagingException { ImapFolder remoteFolder = imapStore.getFolder(folderServerId); if (!remoteFolder.exists()) { return; } try { remoteFolder.open(Folder.OPEN_MODE_RW); if (remoteFolder.getMode() != Folder.OPEN_MODE_RW) { return; } remoteFolder.setFlags(Collections.singleton(Flag.SEEN), true); } finally { remoteFolder.close(); } } }
private MessagingException ioExceptionHandler(ImapConnection connection, IOException ioe) { Timber.e(ioe, "IOException for %s", getLogId()); if (connection != null) { connection.close(); } close(); return new MessagingException("IO Error", ioe); }
@Test public void sync_withRemoteFolderProvided_shouldNotCloseRemoteFolder() { messageCountInRemoteFolder(1); imapSync.sync(FOLDER_NAME, syncConfig, listener, remoteFolder); verify(remoteFolder, never()).close(); }
void downloadMessage(SyncConfig syncConfig, String folderServerId, String messageServerId) throws MessagingException { BackendFolder backendFolder = backendStorage.getFolder(folderServerId); ImapFolder remoteFolder = imapStore.getFolder(folderServerId); try { remoteFolder.open(Folder.OPEN_MODE_RO); Message remoteMessage = remoteFolder.getMessage(messageServerId); downloadMessages( syncConfig, remoteFolder, backendFolder, Collections.singletonList(remoteMessage), false, false, null, new SimpleSyncListener()); } finally { remoteFolder.close(); } }
@Test public void sync_withNoRemoteFolderProvided_shouldCloseRemoteFolderFromStore() { messageCountInRemoteFolder(1); configureRemoteStoreWithFolder(); imapSync.sync(FOLDER_NAME, syncConfig, listener, null); verify(remoteFolder).close(); }
@Test public void close_shouldCloseImapFolder() throws Exception { ImapFolder imapFolder = createFolder("Folder"); prepareImapFolderForOpen(OPEN_MODE_RW); imapFolder.open(OPEN_MODE_RW); imapFolder.close(); assertFalse(imapFolder.isOpen()); }