public class DefaultFolder extends Folder
HOLDS_FOLDERS, HOLDS_MESSAGES, mode, READ_ONLY, READ_WRITE, store
Modifier and Type | Method and Description |
---|---|
void |
appendMessages(Message[] msgs)
Append given Messages to this folder.
|
void |
close(boolean expunge)
Close this Folder.
|
boolean |
create(int type)
Create this folder on the Store.
|
boolean |
delete(boolean recurse)
Delete this Folder.
|
boolean |
exists()
Tests if this folder physically exists on the Store.
|
Message[] |
expunge()
Expunge (permanently remove) messages marked DELETED.
|
Folder |
getFolder(String name)
Return the Folder object corresponding to the given name.
|
String |
getFullName()
Returns the full name of this Folder.
|
protected Folder |
getInbox() |
Message |
getMessage(int msgno)
Get the Message object corresponding to the given message
number.
|
int |
getMessageCount()
Get total number of messages in this Folder.
|
String |
getName()
Returns the name of this Folder.
|
Folder |
getParent()
Returns the parent folder of this folder.
|
Flags |
getPermanentFlags()
Get the permanent flags supported by this Folder.
|
char |
getSeparator()
Return the delimiter character that separates this Folder's pathname
from the names of immediate subfolders.
|
int |
getType()
Returns the type of this Folder, that is, whether this folder can hold
messages or subfolders or both.
|
boolean |
hasNewMessages()
Returns true if this Folder has new messages since the last time
this indication was reset.
|
boolean |
isOpen()
Indicates whether this Folder is in the 'open' state.
|
Folder[] |
list(String pattern)
Returns a list of Folders belonging to this Folder's namespace
that match the specified pattern.
|
void |
open(int mode)
Open this Folder.
|
boolean |
renameTo(Folder f)
Rename this Folder.
|
addConnectionListener, addFolderListener, addMessageChangedListener, addMessageCountListener, close, copyMessages, fetch, finalize, getDeletedMessageCount, getMessages, getMessages, getMessages, getMode, getNewMessageCount, getStore, getUnreadMessageCount, getURLName, isSubscribed, list, listSubscribed, listSubscribed, notifyConnectionListeners, notifyFolderListeners, notifyFolderRenamedListeners, notifyMessageAddedListeners, notifyMessageChangedListeners, notifyMessageRemovedListeners, removeConnectionListener, removeFolderListener, removeMessageChangedListener, removeMessageCountListener, search, search, setFlags, setFlags, setFlags, setSubscribed, toString
public String getName()
Folder
This method can be invoked on a closed Folder.
public String getFullName()
Folder
This method can be invoked on a closed Folder.
getFullName
in class Folder
public Folder getParent()
Folder
Note that since Folder objects are not cached, invoking this method returns a new distinct Folder object.
public boolean exists()
Folder
exists
in class Folder
Folder.create(int)
public Folder[] list(String pattern) throws MessagingException
Folder
"%"
, which matches any character except hierarchy
delimiters, and "*"
, which matches any character. As an example, given the folder hierarchy:
Personal/ Finance/ Stocks Bonus StockOptions Jokes
list("*")
on "Personal" will return the whole
hierarchy. list("%")
on "Personal" will return "Finance" and
"Jokes". list("Jokes")
on "Personal" will return "Jokes".list("Stock*")
on "Finance" will return "Stocks"
and "StockOptions". Folder objects are not cached by the Store, so invoking this method on the same pattern multiple times will return that many distinct Folder objects.
This method can be invoked on a closed Folder.
list
in class Folder
pattern
- the match patternFolderNotFoundException
- if this folder does
not exist.MessagingException
- for other failuresFolder.listSubscribed(java.lang.String)
public char getSeparator()
Folder
getSeparator
in class Folder
public int getType()
Folder
getType
in class Folder
Folder.HOLDS_FOLDERS
,
Folder.HOLDS_MESSAGES
public boolean create(int type) throws MessagingException
Folder
If the creation is successful, a CREATED FolderEvent is delivered to any FolderListeners registered on this Folder and this Store.
create
in class Folder
type
- The type of this folder.MessagingException
- for failuresFolder.HOLDS_FOLDERS
,
Folder.HOLDS_MESSAGES
,
FolderEvent
public boolean hasNewMessages() throws MessagingException
Folder
RECENT
flag set. Note that this is not an incremental check for new mail, i.e., it cannot be used to determine whether any new messages have arrived since the last time this method was invoked. To implement incremental checks, the Folder needs to be opened.
This method can be invoked on a closed Folder that can contain Messages.
hasNewMessages
in class Folder
FolderNotFoundException
- if this folder does
not exist.MessagingException
- for other failurespublic Folder getFolder(String name) throws MessagingException
Folder
exists()
method on a Folder indicates whether it really
exists on the Store. In some Stores, name can be an absolute path if it starts with the hierarchy delimiter. Otherwise, it is interpreted relative to this Folder.
Folder objects are not cached by the Store, so invoking this method on the same name multiple times will return that many distinct Folder objects.
This method can be invoked on a closed Folder.
getFolder
in class Folder
name
- name of the FolderMessagingException
- for failuresprotected Folder getInbox() throws MessagingException
MessagingException
public boolean delete(boolean recurse) throws MessagingException
Folder
The recurse
flag controls whether the deletion affects
subfolders or not. If true, all subfolders are deleted, then this
folder itself is deleted. If false, the behaviour is dependent on
the folder type and is elaborated below:
If the folder contains subfolders there are 3 possible choices an implementation is free to do:
delete
in class Folder
recurse
- also delete subfolders?FolderNotFoundException
- if this folder does
not existMessagingException
- for other failuresFolderEvent
public boolean renameTo(Folder f) throws MessagingException
Folder
If the rename is successful, a RENAMED FolderEvent is delivered to FolderListeners registered on this folder and its containing Store.
renameTo
in class Folder
f
- a folder representing the new name for this FolderFolderNotFoundException
- if this folder does
not existMessagingException
- for other failuresFolderEvent
public void open(int mode) throws MessagingException
Folder
If this folder is opened successfully, an OPENED ConnectionEvent is delivered to any ConnectionListeners registered on this Folder.
The effect of opening multiple connections to the same folder on a specifc Store is implementation dependent. Some implementations allow multiple readers, but only one writer. Others allow multiple writers as well as readers.
open
in class Folder
mode
- open the Folder READ_ONLY or READ_WRITEFolderNotFoundException
- if this folder does
not exist.MessagingException
- for other failuresFolder.READ_ONLY
,
Folder.READ_WRITE
,
Folder.getType()
,
ConnectionEvent
public void close(boolean expunge) throws MessagingException
Folder
A CLOSED ConnectionEvent is delivered to any ConnectionListeners registered on this Folder. Note that the folder is closed even if this method terminates abnormally by throwing a MessagingException.
close
in class Folder
expunge
- expunges all deleted messages if this flag is trueMessagingException
- for other failuresConnectionEvent
public boolean isOpen()
Folder
public Flags getPermanentFlags()
Folder
The special flag Flags.Flag.USER
indicates that this Folder
supports arbitrary user-defined flags.
The supported permanent flags for a folder may not be available until the folder is opened.
getPermanentFlags
in class Folder
public int getMessageCount() throws MessagingException
Folder
This method can be invoked on a closed folder. However, note that for some folder implementations, getting the total message count can be an expensive operation involving actually opening the folder. In such cases, a provider can choose not to support this functionality in the closed state, in which case this method must return -1.
Clients invoking this method on a closed folder must be aware that this is a potentially expensive operation. Clients must also be prepared to handle a return value of -1 in this case.
getMessageCount
in class Folder
FolderNotFoundException
- if this folder does
not exist.MessagingException
- for other failurespublic Message getMessage(int msgno) throws MessagingException
Folder
Message objects are light-weight references to the actual message that get filled up on demand. Hence Folder implementations are expected to provide light-weight Message objects.
Unlike Folder objects, repeated calls to getMessage with the same message number will return the same Message object, as long as no messages in this folder have been expunged.
Since message numbers can change within a session if the folder is expunged , clients are advised not to use message numbers as references to messages. Use Message objects instead.
getMessage
in class Folder
msgno
- the message numberFolderNotFoundException
- if this folder does
not exist.MessagingException
- for other failuresFolder.getMessageCount()
,
Folder.fetch(javax.mail.Message[], javax.mail.FetchProfile)
public void appendMessages(Message[] msgs) throws MessagingException
Folder
Folder implementations must not abort this operation if a Message in the given message array turns out to be an expunged Message.
appendMessages
in class Folder
msgs
- array of Messages to be appendedFolderNotFoundException
- if this folder does
not exist.MessagingException
- if the append failed.public Message[] expunge() throws MessagingException
Folder
getMessageNumber
method
on each of these message objects returns that Message's original
(that is, prior to the expunge) sequence number. A MessageCountEvent
containing the expunged messages is delivered to any
MessageCountListeners registered on the folder. Expunge causes the renumbering of Message objects subsequent to the expunged messages. Clients that use message numbers as references to messages should be aware of this and should be prepared to deal with the situation (probably by flushing out existing message number caches and reloading them). Because of this complexity, it is better for clients to use Message objects as references to messages, rather than message numbers. Any expunged Messages objects still have to be pruned, but other Messages in that folder are not affected by the expunge.
After a message is expunged, only the isExpunged
and
getMessageNumber
methods are still valid on the
corresponding Message object; other methods may throw
MessageRemovedException
expunge
in class Folder
FolderNotFoundException
- if this folder does not
existMessagingException
- for other failuresMessage.isExpunged()
,
MessageCountEvent
Copyright © 2020 JBoss by Red Hat. All rights reserved.