/** * Returns {@code true} if message is answered. * * @return {@code true} if message is answered. */ public boolean isAnswered() { return flags.contains(Flag.ANSWERED); }
/** * Returns {@code true} is message is flagged. * * @return {@code true} is message is flagged. */ public boolean isFlagged() { return flags.contains(Flag.FLAGGED); }
/** * Returns {@code true} if message is draft. */ public boolean isDraft() { return flags.contains(Flag.DRAFT); }
/** * Returns {@code true} if message is deleted. * * @return {@code true} if message is deleted. */ public boolean isDeleted() { return flags.contains(Flag.DELETED); }
/** * Returns {@code true} if message is seen. * * @return {@code true} if message is seen. */ public boolean isSeen() { return flags.contains(Flag.SEEN); }
/** * Returns {@code true} if message is recent. * * @return {@code true} if message is recent. */ public boolean isRecent() { return flags.contains(Flag.RECENT); }
/** * Check whether the flag specified in the <code>flag</code> * argument is set in this message. <p> * * This implementation checks this message's internal * <code>flags</code> object. * * @param flag the flag * @return value of the specified flag for this message * @exception MessagingException for failures * @see javax.mail.Flags.Flag * @see javax.mail.Flags.Flag#ANSWERED * @see javax.mail.Flags.Flag#DELETED * @see javax.mail.Flags.Flag#DRAFT * @see javax.mail.Flags.Flag#FLAGGED * @see javax.mail.Flags.Flag#RECENT * @see javax.mail.Flags.Flag#SEEN */ public synchronized boolean isSet(Flags.Flag flag) throws MessagingException { return (flags.contains(flag)); }
/** * Check whether the flag specified in the <code>flag</code> * argument is set in this message. <p> * * This implementation checks this message's internal * <code>flags</code> object. * * @param flag the flag * @return value of the specified flag for this message * @exception MessagingException for failures * @see javax.mail.Flags.Flag * @see javax.mail.Flags.Flag#ANSWERED * @see javax.mail.Flags.Flag#DELETED * @see javax.mail.Flags.Flag#DRAFT * @see javax.mail.Flags.Flag#FLAGGED * @see javax.mail.Flags.Flag#RECENT * @see javax.mail.Flags.Flag#SEEN */ @Override public synchronized boolean isSet(Flags.Flag flag) throws MessagingException { return (flags.contains(flag)); }
if (flagsToSet.contains(Flags.Flag.DELETED)) { folder.expunge();
/** * Check whether the flag specified in the <code>flag</code> * argument is set in this message. <p> * * The default implementation uses <code>getFlags</code>. * * @param flag the flag * @return value of the specified flag for this message * @see javax.mail.Flags.Flag * @see javax.mail.Flags.Flag#ANSWERED * @see javax.mail.Flags.Flag#DELETED * @see javax.mail.Flags.Flag#DRAFT * @see javax.mail.Flags.Flag#FLAGGED * @see javax.mail.Flags.Flag#RECENT * @see javax.mail.Flags.Flag#SEEN * @exception MessagingException for failures */ public boolean isSet(Flags.Flag flag) throws MessagingException { return getFlags().contains(flag); }
/** * Check whether the flag specified in the <code>flag</code> * argument is set in this message. <p> * * The default implementation uses <code>getFlags</code>. * * @param flag the flag * @return value of the specified flag for this message * @see javax.mail.Flags.Flag * @see javax.mail.Flags.Flag#ANSWERED * @see javax.mail.Flags.Flag#DELETED * @see javax.mail.Flags.Flag#DRAFT * @see javax.mail.Flags.Flag#FLAGGED * @see javax.mail.Flags.Flag#RECENT * @see javax.mail.Flags.Flag#SEEN * @exception MessagingException for failures */ public boolean isSet(Flags.Flag flag) throws MessagingException { return getFlags().contains(flag); }
private void setMessageFlags(Message[] filteredMessages) throws MessagingException { boolean recentFlagSupported = false; Flags flags = getFolder().getPermanentFlags(); if (flags != null) { recentFlagSupported = flags.contains(Flags.Flag.RECENT); } for (Message message : filteredMessages) { if (!recentFlagSupported) { if (flags != null && flags.contains(Flags.Flag.USER)) { if (this.logger.isDebugEnabled()) { this.logger.debug("USER flags are supported by this mail server. Flagging message with '" + this.userFlag + "' user flag"); } Flags siFlags = new Flags(); siFlags.add(this.userFlag); message.setFlags(siFlags, true); } else { this.logger.debug("USER flags are not supported by this mail server. " + "Flagging message with system flag"); message.setFlag(Flags.Flag.FLAGGED, true); } } setAdditionalFlags(message); } }
return; else if (!folder.getPermanentFlags().contains(Flags.Flag.RECENT) && searchForNewMessages().length > 0) { return;
private SearchTerm applyTermsWhenNoRecentFlag(Folder folder, SearchTerm searchTerm) { NotTerm notFlagged = null; if (folder.getPermanentFlags().contains(Flag.USER)) { if (logger.isDebugEnabled()) { logger.debug("This email server does not support RECENT flag, but it does support " + "USER flags which will be used to prevent duplicates during email fetch." + " This receiver instance uses flag: " + getUserFlag()); } Flags siFlags = new Flags(); siFlags.add(getUserFlag()); notFlagged = new NotTerm(new FlagTerm(siFlags, true)); } else { logger.debug("This email server does not support RECENT or USER flags. " + "System flag 'Flag.FLAGGED' will be used to prevent duplicates during email fetch."); notFlagged = new NotTerm(new FlagTerm(new Flags(Flag.FLAGGED), true)); } if (searchTerm == null) { return notFlagged; } else { return new AndTerm(searchTerm, notFlagged); } }
boolean recentFlagSupported = false; if (supportedFlags != null) { recentFlagSupported = supportedFlags.contains(Flags.Flag.RECENT); if (recentFlagSupported) { searchTerm = new FlagTerm(new Flags(Flags.Flag.RECENT), true); if (supportedFlags.contains(Flags.Flag.ANSWERED)) { NotTerm notAnswered = new NotTerm(new FlagTerm(new Flags(Flags.Flag.ANSWERED), true)); if (searchTerm == null) { if (supportedFlags.contains(Flags.Flag.DELETED)) { NotTerm notDeleted = new NotTerm(new FlagTerm(new Flags(Flags.Flag.DELETED), true)); if (searchTerm == null) { if (supportedFlags.contains(Flags.Flag.SEEN)) { NotTerm notSeen = new NotTerm(new FlagTerm(new Flags(Flags.Flag.SEEN), true)); if (searchTerm == null) {
@Test public void validateSearchTermsWhenShouldMarkAsReadWithExistingFlags() throws Exception { ImapMailReceiver receiver = new ImapMailReceiver(); receiver.setShouldMarkMessagesAsRead(true); receiver.setBeanFactory(mock(BeanFactory.class)); receiver.afterPropertiesSet(); Field folderField = AbstractMailReceiver.class.getDeclaredField("folder"); folderField.setAccessible(true); Folder folder = mock(Folder.class); when(folder.getPermanentFlags()).thenReturn(new Flags(Flags.Flag.USER)); folderField.set(receiver, folder); Method compileSearchTerms = ReflectionUtils.findMethod(receiver.getClass(), "compileSearchTerms", Flags.class); compileSearchTerms.setAccessible(true); Flags flags = new Flags(); flags.add(Flag.ANSWERED); SearchTerm searchTerms = (SearchTerm) compileSearchTerms.invoke(receiver, flags); assertTrue(searchTerms instanceof AndTerm); AndTerm andTerm = (AndTerm) searchTerms; SearchTerm[] terms = andTerm.getTerms(); assertEquals(2, terms.length); NotTerm notTerm = (NotTerm) terms[0]; assertTrue(((FlagTerm) notTerm.getTerm()).getFlags().contains(Flag.ANSWERED)); notTerm = (NotTerm) terms[1]; Flags siFlags = new Flags(); siFlags.add(AbstractMailReceiver.DEFAULT_SI_USER_FLAG); assertTrue(((FlagTerm) notTerm.getTerm()).getFlags().contains(siFlags)); }
if (f.contains(Flags.Flag.RECENT)) { f = new Flags(f); // copy, don't modify orig
if (f.contains(Flags.Flag.RECENT)) { f = new Flags(f); // copy, don't modify orig