javax.mail

## Class Store

- java.lang.Object
- - javax.mail.Service
  - - javax.mail.Store

- Direct Known Subclasses:
    IMAPStore, POP3Store

      public abstract class Store
      extends Service

  An abstract class that models a message store and its access protocol, for storing and retrieving messages. Subclasses provide actual implementations.

  Note that `Store` extends the `Service` class, which provides many common methods for naming stores, connecting to stores, and listening to connection events.

  See Also:
    `Service`, `ConnectionEvent`, `StoreEvent`

- - ### Field Summary

    - ### Fields inherited from class javax.mail.Service

      `debug, session, url`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Store(Session session, URLName urlname)` Constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addFolderListener(FolderListener l)` Add a listener for Folder events on any Folder object obtained from this Store.
    `void` | `addStoreListener(StoreListener l)` Add a listener for StoreEvents on this Store.
    `abstract Folder` | `getDefaultFolder()` Returns a Folder object that represents the 'root' of the default namespace presented to the user by the Store.
    `abstract Folder` | `getFolder(String name)` Return the Folder object corresponding to the given name.
    `abstract Folder` | `getFolder(URLName url)` Return a closed Folder object, corresponding to the given URLName.
    `Folder[]` | `getPersonalNamespaces()` Return a set of folders representing the personal namespaces for the current user.
    `Folder[]` | `getSharedNamespaces()` Return a set of folders representing the shared namespaces.
    `Folder[]` | `getUserNamespaces(String user)` Return a set of folders representing the namespaces for `user`.
    `protected void` | `notifyFolderListeners(int type, Folder folder)` Notify all FolderListeners.
    `protected void` | `notifyFolderRenamedListeners(Folder oldF, Folder newF)` Notify all FolderListeners about the renaming of a folder.
    `protected void` | `notifyStoreListeners(int type, String message)` Notify all StoreListeners.
    `void` | `removeFolderListener(FolderListener l)` Remove a listener for Folder events.
    `void` | `removeStoreListener(StoreListener l)` Remove a listener for Store events.

    - ### Methods inherited from class javax.mail.Service

      `addConnectionListener, close, connect, connect, connect, connect, finalize, getURLName, isConnected, notifyConnectionListeners, protocolConnect, queueEvent, removeConnectionListener, setConnected, setURLName, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### Store

          protected Store(Session session,
               URLName urlname)

      Constructor.
      Parameters:
        `session` - Session object for this Store.
        `urlname` - URLName object to be used for this Store

  - ### Method Detail

    - #### getDefaultFolder

          public abstract Folder getDefaultFolder()
                                           throws MessagingException

      Returns a Folder object that represents the 'root' of the default namespace presented to the user by the Store.
      Returns:
        the root Folder
      Throws:
        `IllegalStateException` - if this Store is not connected.
        `MessagingException`

    - #### getFolder

          public abstract Folder getFolder(String name)
                                    throws MessagingException

      Return the Folder object corresponding to the given name. Note that a Folder object is returned even if the named folder does not physically exist on the Store. The `exists()` method on the folder object indicates whether this folder really exists.

      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.

      Parameters:
        `name` - The name of the Folder. In some Stores, name can be an absolute path if it starts with the hierarchy delimiter. Else it is interpreted relative to the 'root' of this namespace.
      Returns:
        Folder object
      Throws:
        `IllegalStateException` - if this Store is not connected.
        `MessagingException`
      See Also:
        `Folder.exists()`, `Folder.create(int)`

    - #### getFolder

          public abstract Folder getFolder(URLName url)
                                    throws MessagingException

      Return a closed Folder object, corresponding to the given URLName. The store specified in the given URLName should refer to this Store object.

      Implementations of this method may obtain the name of the actual folder using the `getFile()` method on URLName, and use that name to create the folder.

      Parameters:
        `url` - URLName that denotes a folder
      Returns:
        Folder object
      Throws:
        `IllegalStateException` - if this Store is not connected.
        `MessagingException`
      See Also:
        `URLName`

    - #### getPersonalNamespaces

          public Folder[] getPersonalNamespaces()
                                         throws MessagingException

      Return a set of folders representing the personal namespaces for the current user. A personal namespace is a set of names that is considered within the personal scope of the authenticated user. Typically, only the authenticated user has access to mail folders in their personal namespace. If an INBOX exists for a user, it must appear within the user's personal namespace. In the typical case, there should be only one personal namespace for each user in each Store.

      This implementation returns an array with a single entry containing the return value of the `getDefaultFolder` method. Subclasses should override this method to return appropriate information.

      Returns:
        array of Folder objects
      Throws:
        `IllegalStateException` - if this Store is not connected.
        `MessagingException`
      Since:
        JavaMail 1.2

    - #### getUserNamespaces

          public Folder[] getUserNamespaces(String user)
                                     throws MessagingException

      Return a set of folders representing the namespaces for `user`. The namespaces returned represent the personal namespaces for the user. To access mail folders in the other user's namespace, the currently authenticated user must be explicitly granted access rights. For example, it is common for a manager to grant to their secretary access rights to their mail folders.

      This implementation returns an empty array. Subclasses should override this method to return appropriate information.

      Returns:
        array of Folder objects
      Throws:
        `IllegalStateException` - if this Store is not connected.
        `MessagingException`
      Since:
        JavaMail 1.2

    - #### getSharedNamespaces

          public Folder[] getSharedNamespaces()
                                       throws MessagingException

      Return a set of folders representing the shared namespaces. A shared namespace is a namespace that consists of mail folders that are intended to be shared amongst users and do not exist within a user's personal namespace.

      This implementation returns an empty array. Subclasses should override this method to return appropriate information.

      Returns:
        array of Folder objects
      Throws:
        `IllegalStateException` - if this Store is not connected.
        `MessagingException`
      Since:
        JavaMail 1.2

    - #### addStoreListener

          public void addStoreListener(StoreListener l)

      Add a listener for StoreEvents on this Store.

      The default implementation provided here adds this listener to an internal list of StoreListeners.

      Parameters:
        `l` - the Listener for Store events
      See Also:
        `StoreEvent`

    - #### removeStoreListener

          public void removeStoreListener(StoreListener l)

      Remove a listener for Store events.

      The default implementation provided here removes this listener from the internal list of StoreListeners.

      Parameters:
        `l` - the listener
      See Also:
        `addStoreListener(javax.mail.event.StoreListener)`

    - #### notifyStoreListeners

          protected void notifyStoreListeners(int type,
                                  String message)

      Notify all StoreListeners. Store implementations are expected to use this method to broadcast StoreEvents.

      The provided default implementation queues the event into an internal event queue. An event dispatcher thread dequeues events from the queue and dispatches them to the registered StoreListeners. Note that the event dispatching occurs in a separate thread, thus avoiding potential deadlock problems.

    - #### addFolderListener

          public void addFolderListener(FolderListener l)

      Add a listener for Folder events on any Folder object obtained from this Store. FolderEvents are delivered to FolderListeners on the affected Folder as well as to FolderListeners on the containing Store.

      The default implementation provided here adds this listener to an internal list of FolderListeners.

      Parameters:
        `l` - the Listener for Folder events
      See Also:
        `FolderEvent`

    - #### removeFolderListener

          public void removeFolderListener(FolderListener l)

      Remove a listener for Folder events.

      The default implementation provided here removes this listener from the internal list of FolderListeners.

      Parameters:
        `l` - the listener
      See Also:
        `addFolderListener(javax.mail.event.FolderListener)`

    - #### notifyFolderListeners

          protected void notifyFolderListeners(int type,
                                   Folder folder)

      Notify all FolderListeners. Store implementations are expected to use this method to broadcast Folder events.

      The provided default implementation queues the event into an internal event queue. An event dispatcher thread dequeues events from the queue and dispatches them to the registered FolderListeners. Note that the event dispatching occurs in a separate thread, thus avoiding potential deadlock problems.

      Parameters:
        `type` - type of FolderEvent
        `folder` - affected Folder
      See Also:
        `notifyFolderRenamedListeners(javax.mail.Folder, javax.mail.Folder)`

    - #### notifyFolderRenamedListeners

          protected void notifyFolderRenamedListeners(Folder oldF,
                                          Folder newF)

      Notify all FolderListeners about the renaming of a folder. Store implementations are expected to use this method to broadcast Folder events indicating the renaming of folders.

      The provided default implementation queues the event into an internal event queue. An event dispatcher thread dequeues events from the queue and dispatches them to the registered FolderListeners. Note that the event dispatching occurs in a separate thread, thus avoiding potential deadlock problems.

      Parameters:
        `oldF` - the folder being renamed
        `newF` - the folder representing the new name.
      Since:
        JavaMail 1.1

Copyright © 2013 Oracle. All Rights Reserved.