public abstract class Folder extends ObjectSE implements AutoCloseableSE
フォルダーにはメッセージ、他のフォルダー、その両方を含めることができるため、ストアのデフォルトフォルダーをルートとするツリーのような階層が提供されます。(一部のフォルダー実装では、同じフォルダー内のメッセージと他のフォルダーの両方が許可されない場合があることに注意してください)。
フォルダー名の解釈は実装に依存します。フォルダーのフルネーム内の階層のさまざまなレベルは、階層区切り文字によって互いに分離されています。
大文字と小文字を区別しない完全なフォルダー名(つまり、ストアのデフォルトフォルダーに対する相対名) INBOX は、「このサーバー上のこのユーザーのプライマリフォルダー」を意味するように予約されています。すべてのストアが INBOX フォルダーを提供するわけではなく、すべてのユーザーが常に INBOX フォルダーを持つわけではありません。INBOX という名前は、このフォルダーが存在する場合、それを提供するストアでこのフォルダーを参照するために予約されています。
Store から取得した Folder オブジェクトは、実際にバックエンドストアに存在する必要はありません。exists
メソッドは、フォルダーが存在するかどうかをテストします。create
メソッドはフォルダーを作成します。
フォルダーは最初は閉じた状態です。この状態では、特定のメソッドが有効です。これらのメソッドのドキュメントはこれに注意しています。フォルダーは、その "open" メソッドを呼び出すことによって開かれます。open
、delete
、renameTo
を除くすべてのフォルダーメソッドは、この状態で有効です。
フォルダーを取得する唯一の方法は、ストア、フォルダー、セッションで getFolder
メソッドを呼び出すか、フォルダーで list
または listSubscribed
メソッドを呼び出すことです。上記のメソッドによって返されたフォルダーオブジェクトは、ストアによってキャッシュされません。同じフォルダー名で getFolder
メソッドを複数回呼び出すと、異なる Folder オブジェクトが返されます。list
および listSubscribed
メソッドについても同様です。
フォルダー内のメッセージオブジェクトは、フォルダーによってキャッシュされます。同じメッセージ番号で getMessage(msgno)
を複数回呼び出すと、このフォルダーで消去が完了するまで、同じメッセージオブジェクトが返されます。
フォルダーからのメッセージオブジェクトは、フォルダーが開いている間のみ有効であり、フォルダーが後で再度開かれた場合でも、フォルダーが閉じられた後はアクセスできません。代わりに、新しいメッセージオブジェクトは、フォルダーが再度開かれた後にフォルダーからフェッチされる必要があります。
含まれているフォルダーが expunge メソッドを使用して消去される場合、メッセージのメッセージ番号はセッション内で変更される可能性があることに注意してください。メッセージへの参照としてメッセージ番号を使用するクライアントは、これを認識している必要があり、(おそらく既存のメッセージ番号参照をフラッシュして再ロードすることによって)この状況に対処する準備をする必要があります。この複雑さのため、クライアントはメッセージ番号ではなくメッセージへの参照としてメッセージオブジェクトを使用する方が適切です。消去されたメッセージオブジェクトは引き続き整理する必要がありますが、そのフォルダー内の他のメッセージオブジェクトは消去の影響を受けません。
修飾子と型 | フィールドと説明 |
---|---|
static int | HOLDS_FOLDERS このフォルダーには他のフォルダーを含めることができます |
static int | HOLDS_MESSAGES このフォルダーにはメッセージを含めることができます |
protected int | mode このフォルダーのオープンモード。 |
static int | READ_ONLY フォルダーは読み取り専用です。 |
static int | READ_WRITE このフォルダーの状態と内容は変更できます。 |
protected Store | store 親ストア。 |
修飾子と型 | メソッドと説明 |
---|---|
void | addConnectionListener(ConnectionListener l) このフォルダーに接続イベントのリスナーを追加します。 |
void | addFolderListener(FolderListener l) この Folder に Folder イベントのリスナーを追加します。 |
void | addMessageChangedListener(MessageChangedListener l) このフォルダーに MessageChanged イベントのリスナーを追加します。 |
void | addMessageCountListener(MessageCountListener l) このフォルダーに MessageCount イベントのリスナーを追加します。 |
abstract void | appendMessages(Message[] msgs) 指定されたメッセージをこのフォルダーに追加します。 |
void | close() このフォルダーを閉じて、削除されたメッセージを消去します。 |
abstract void | close(boolean expunge) このフォルダーを閉じます。 |
void | copyMessages(Message[] msgs, Folder folder) 指定されたメッセージをこのフォルダーから別のフォルダーにコピーします。 |
abstract boolean | create(int type) ストアにこのフォルダーを作成します。 |
abstract boolean | delete(boolean recurse) このフォルダーを削除しますか。 |
abstract boolean | exists() このフォルダーがストアに物理的に存在するかどうかをテストします。 |
abstract Message[] | expunge() 削除済みとマークされたメッセージを完全に削除します。 |
void | fetch(Message[] msgs, FetchProfile fp) 特定のメッセージの FetchProfile で指定されたアイテムをプリフェッチします。 |
protected void | finalize() |
int | getDeletedMessageCount() このフォルダーで削除されたメッセージの数を取得します。 |
abstract Folder | getFolder(StringSE name) 指定された名前に対応する Folder オブジェクトを返します。 |
abstract StringSE | getFullName() このフォルダーのフルネームを返します。 |
abstract Message | getMessage(int msgnum) 指定されたメッセージ番号に対応する Message オブジェクトを取得します。 |
abstract int | getMessageCount() このフォルダー内のメッセージの総数を取得します。 |
Message[] | getMessages() このフォルダーからすべてのメッセージオブジェクトを取得します。 |
Message[] | getMessages(int[] msgnums) 配列で指定されたメッセージ番号の Message オブジェクトを取得します。 |
Message[] | getMessages(int start, int end) 開始から終了まで、開始と終了の両方を含むメッセージ番号の Message オブジェクトを取得します。 |
int | getMode() このフォルダーのオープンモードを返します。 |
abstract StringSE | getName() このフォルダーの名前を返します。 |
int | getNewMessageCount() このフォルダー内の新しいメッセージの数を取得します。 |
abstract Folder | getParent() このフォルダーの親フォルダーを返します。 |
abstract Flags | getPermanentFlags() このフォルダーでサポートされている永続的なフラグを取得します。 |
abstract char | getSeparator() このフォルダーのパス名と直接のサブフォルダーの名前を区切る区切り文字を返します。 |
Store | getStore() この Folder オブジェクトを所有する Store を返します。 |
abstract int | getType() このフォルダーの型、つまりこのフォルダーがメッセージまたはサブフォルダー、あるいはその両方を保持できるかどうかを返します。 |
int | getUnreadMessageCount() このフォルダー内の未読メッセージの総数を取得します。 |
URLName | getURLName() このフォルダーを表す URLName を返します。 |
abstract boolean | hasNewMessages() この表示が最後にリセットされてからこのフォルダーに新しいメッセージがある場合は true を返します。 |
abstract boolean | isOpen() このフォルダーが「開いている」状態かどうかを示します。 |
boolean | isSubscribed() このフォルダーがサブスクライブされている場合は true を返します。 |
Folder[] | list() この Folder のフォルダーのリストを返す簡易メソッド。 |
abstract Folder[] | list(StringSE pattern) 指定されたパターンに一致する、このフォルダーの名前空間に属するフォルダーのリストを返します。 |
Folder[] | listSubscribed() この Folder にあるサブスクライブされたフォルダーのリストを返す簡易メソッド。 |
Folder[] | listSubscribed(StringSE pattern) 指定されたパターンに一致する、このフォルダーの名前空間に属するサブスクライブされたフォルダーのリストを返します。 |
protected void | notifyConnectionListeners(int type) すべての ConnectionListeners に通知します。 |
protected void | notifyFolderListeners(int type) このフォルダーとこのフォルダーのストアに登録されているすべての FolderListeners に通知します。 |
protected void | notifyFolderRenamedListeners(Folder folder) このフォルダーおよびこのフォルダーのストアに登録されているすべての FolderListeners に、このフォルダーの名前変更について通知します。 |
protected void | notifyMessageAddedListeners(Message[] msgs) このフォルダーへのメッセージの追加についてすべての MessageCountListeners に通知します。 |
protected void | notifyMessageChangedListeners(int type, Message msg) すべての MessageChangedListeners に通知します。 |
protected void | notifyMessageRemovedListeners(boolean removed, Message[] msgs) このフォルダーからのメッセージの削除についてすべての MessageCountListeners に通知します。 |
abstract void | open(int mode) このフォルダーを開きます。 |
void | removeConnectionListener(ConnectionListener l) Connection イベントリスナーを削除します。 |
void | removeFolderListener(FolderListener l) Folder イベントリスナーを削除します。 |
void | removeMessageChangedListener(MessageChangedListener l) MessageChanged リスナーを削除します。 |
void | removeMessageCountListener(MessageCountListener l) MessageCount リスナーを削除します。 |
abstract boolean | renameTo(Folder f) このフォルダーの名前を変更します。 |
Message[] | search(SearchTerm term) このフォルダーで、指定した検索条件に一致するメッセージを検索します。 |
Message[] | search(SearchTerm term, Message[] msgs) 指定された検索条件に一致するメッセージがないか、指定されたメッセージの配列を検索します。 |
void | setFlags(int[] msgnums, Flags flag, boolean value) メッセージ番号が配列にあるメッセージに指定されたフラグを設定します。 |
void | setFlags(int start, int end, Flags flag, boolean value) 開始から終了まで、開始から終了までの番号が付けられたメッセージに、指定されたフラグを設定します。 |
void | setFlags(Message[] msgs, Flags flag, boolean value) 配列で指定されたメッセージに指定されたフラグを設定します。 |
void | setSubscribed(boolean subscribe) このフォルダーを購読または購読解除します。 |
StringSE | toString() デフォルトの toString() をオーバーライドすると、Folder.getFullName() から文字列が返されます。それが null の場合は、デフォルトの toString() の動作が使用されます。 |
cloneSE, equalsSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
protected Store store
protected int mode
Folder.READ_ONLY
、Folder.READ_WRITE
、不明な場合は -1 です。public static final int HOLDS_MESSAGES
public static final int HOLDS_FOLDERS
public static final int READ_ONLY
public static final int READ_WRITE
protected Folder(Store store)
store
- このフォルダーを保持するストア public abstract StringSE getName()
このメソッドは、閉じたフォルダーで呼び出すことができます。
public abstract StringSE getFullName()
このメソッドは、閉じたフォルダーで呼び出すことができます。
public URLName getURLName() throws MessagingException
MessagingException
- 失敗 URLName
public Store getStore()
public abstract Folder getParent() throws MessagingException
Folder オブジェクトはキャッシュされないため、このメソッドを呼び出すと、新しい別個の Folder オブジェクトが返されることに注意してください。
MessagingException
- 失敗 public abstract boolean exists() throws MessagingException
MessagingException
- 通常、サーバーへの接続が失われた場合。create(int)
public abstract Folder[] list(StringSE pattern) throws MessagingException
"%"
と、任意の文字と一致する "*"
を含めることができます。例として、フォルダー階層が与えられた場合:
Personal/ Finance/ Stocks Bonus StockOptions Jokes"Personal" の
list("*")
は、階層全体を返します。list("%")
は "Finance" と "Jokes" を返します。list("Jokes")
は "Jokes" を返します。list("Stock*")
を実行すると、"Stocks" と "StockOptions" が返されます。Folder オブジェクトは Store によってキャッシュされないため、同じパターンでこのメソッドを複数回呼び出すと、その多くの異なる Folder オブジェクトが返されます。
このメソッドは、閉じたフォルダーで呼び出すことができます。
pattern
- マッチパターン FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 listSubscribed(java.lang.String)
public Folder[] listSubscribed(StringSE pattern) throws MessagingException
list
に解決されます。(ここで提供されるデフォルトの実装はこれを行います)。list
の場合と同様に、パターンにはワイルドカードを含めることができます。 フォルダー階層の特定のレベルでは、特定のフォルダーはサブスクライブされない場合がありますが、フォルダー階層内のそのフォルダーにあるフォルダーはサブスクライブされる場合があります。フォルダー階層をたどることを可能にするために、そのようなサブスクライブされていないフォルダーが返され、階層のフォルダーがサブスクライブされていることを示します。フォルダーの isSubscribed
メソッドは、特定のフォルダーが実際にサブスクライブされているかどうかを通知します。
Folder オブジェクトは Store によってキャッシュされないため、同じパターンでこのメソッドを複数回呼び出すと、その多くの異なる Folder オブジェクトが返されます。
このメソッドは、閉じたフォルダーで呼び出すことができます。
pattern
- マッチパターン FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 list(java.lang.String)
public Folder[] list() throws MessagingException
"%"
を一致パターンとして使用して、list(String pattern)
メソッドを呼び出すだけです。このメソッドは、閉じたフォルダーで呼び出すことができます。FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 list(java.lang.String)
public Folder[] listSubscribed() throws MessagingException
"%"
を一致パターンとして使用して、listSubscribed(String pattern)
メソッドを呼び出すだけです。このメソッドは、閉じたフォルダーで呼び出すことができます。FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 listSubscribed(java.lang.String)
public abstract char getSeparator() throws MessagingException
FolderNotFoundException
- 実装にフォルダーの存在が必要だが、そうではない場合 MessagingException
public abstract int getType() throws MessagingException
FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
HOLDS_FOLDERS
, HOLDS_MESSAGES
public abstract boolean create(int type) throws MessagingException
作成が成功した場合、CREATED FolderEvent は、このフォルダーとこのストアに登録されているすべての FolderListeners に配信されます。
type
- このフォルダーの型。MessagingException
- 失敗 HOLDS_FOLDERS
, HOLDS_MESSAGES
, FolderEvent
public boolean isSubscribed()
このメソッドは、閉じたフォルダーで呼び出すことができます。
ここで提供されるデフォルトの実装は true を返すだけです。
public void setSubscribed(boolean subscribe) throws MessagingException
このメソッドは、閉じたフォルダーで呼び出すことができます。
ここで提供される実装は、MethodNotSupportedException をスローするだけです。
subscribe
- サブスクライブする場合は true、サブスクライブしない場合は falseFolderNotFoundException
- このフォルダーが存在しない場合。MethodNotSupportedException
- このストアがサブスクリプションをサポートしていない場合 MessagingException
- その他の障害の場合 public abstract boolean hasNewMessages() throws MessagingException
RECENT
フラグが設定されているかどうかを示す必要があります。これは新しいメールの増分チェックではないことに注意してください。つまり、このメソッドが最後に呼び出されてから新しいメッセージが到着したかどうかを判断するために使用することはできません。インクリメンタルチェックを実装するには、フォルダーを開く必要があります。
このメソッドは、メッセージを含めることができる閉じたフォルダーで呼び出すことができます。
FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 public abstract Folder getFolder(StringSE name) throws MessagingException
exists()
メソッドは、それが実際にストアに存在するかどうかを示します。一部のストアでは、階層区切り文字で始まる場合、名前は絶対パスにすることができます。それ以外の場合は、このフォルダーに関連して解釈されます。
Folder オブジェクトは Store によってキャッシュされないため、同じ名前でこのメソッドを複数回呼び出すと、その多くの異なる Folder オブジェクトが返されます。
このメソッドは、閉じたフォルダーで呼び出すことができます。
name
- フォルダーの名前 MessagingException
- 失敗 public abstract boolean delete(boolean recurse) throws MessagingException
recurse
フラグは、削除がサブフォルダーに影響するかどうかを制御します。true の場合、すべてのサブフォルダーが削除され、このフォルダー自体が削除されます。false の場合、動作はフォルダー型に依存し、以下で詳しく説明します。
フォルダーにサブフォルダーが含まれている場合、3 つの選択肢があり、実装は自由です。
recurse
- サブフォルダーも削除しますか? FolderNotFoundException
- このフォルダーが存在しない場合 IllegalStateExceptionSE
- このフォルダーが閉じた状態でない場合。MessagingException
- その他の障害の場合 FolderEvent
public abstract boolean renameTo(Folder f) throws MessagingException
名前の変更が成功した場合、名前が変更された FolderEvent が、このフォルダーとその格納ストアに登録されている FolderListeners に配信されます。
f
- このフォルダーの新しい名前を表すフォルダー FolderNotFoundException
- このフォルダーが存在しない場合 IllegalStateExceptionSE
- このフォルダーが閉じた状態でない場合。MessagingException
- その他の障害の場合 FolderEvent
public abstract void open(int mode) throws MessagingException
このフォルダーが正常に開かれると、OPENED ConnectionEvent がこのフォルダーに登録されている ConnectionListeners に配信されます。
特定のストアの同じフォルダーへの複数の接続を開くことの影響は、実装に依存します。一部の実装では複数のリーダーが許可されていますが、ライターは 1 つだけです。他のユーザーは、複数のライターとリーダーを許可します。
mode
- READ_ONLY または READ_WRITE フォルダーを開きます FolderNotFoundException
- このフォルダーが存在しない場合。IllegalStateExceptionSE
- このフォルダーが閉じた状態でない場合。MessagingException
- その他の障害の場合 READ_ONLY
, READ_WRITE
, getType()
, ConnectionEvent
public abstract void close(boolean expunge) throws MessagingException
CLOSED ConnectionEvent は、このフォルダーに登録されている ConnectionListeners に配信されます。このメソッドが MessagingException をスローすることによって異常終了した場合でも、フォルダーは閉じられていることに注意してください。
expunge
- このフラグが true の場合、削除されたすべてのメッセージを消去します IllegalStateExceptionSE
- このフォルダーが開かれていない場合 MessagingException
- その他の障害の場合 ConnectionEvent
public void close() throws MessagingException
CLOSED ConnectionEvent は、このフォルダーに登録されている ConnectionListeners に配信されます。このメソッドが MessagingException をスローすることによって異常終了した場合でも、フォルダーは閉じられていることに注意してください。
このメソッドは、AutoCloseable
SE インターフェースをサポートします。
この実装は close(true)
を呼び出します。
AutoCloseableSE
の closeSE
IllegalStateExceptionSE
- このフォルダーが開かれていない場合 MessagingException
- その他の障害の場合 ConnectionEvent
public abstract boolean isOpen()
public int getMode()
Folder.READ_ONLY
、Folder.READ_WRITE
、-1 を返します(通常、古い Folder
プロバイダーがこの新しいメソッドを使用するように更新されていないためのみ)。IllegalStateExceptionSE
- このフォルダーが開かれていない場合 public abstract Flags getPermanentFlags()
特別なフラグ Flags.Flag.USER
は、このフォルダーが任意のユーザー定義フラグをサポートすることを示します。
フォルダーがサポートされる永続的なフラグは、フォルダーが開かれるまで使用できない場合があります。
public abstract int getMessageCount() throws MessagingException
このメソッドは、閉じたフォルダーで呼び出すことができます。ただし、一部のフォルダー実装では、合計メッセージ数を取得することは、実際にフォルダーを開くことを伴う高コストの操作になる可能性があることに注意してください。このような場合、プロバイダーは、閉じた状態でこの機能をサポートしないことを選択できます。その場合、このメソッドは -1 を返す必要があります。
閉じたフォルダーでこのメソッドを呼び出すクライアントは、これが潜在的にコストのかかる操作であることを認識する必要があります。この場合、クライアントは戻り値 -1 を処理できるように準備する必要があります。
FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 public int getNewMessageCount() throws MessagingException
このメソッドは、閉じたフォルダーで呼び出すことができます。ただし、一部のフォルダー実装では、新しいメッセージ数を取得することは、実際にフォルダーを開くことを伴う高コストの操作になる場合があることに注意してください。このような場合、プロバイダーは、閉じた状態でこの機能をサポートしないことを選択できます。その場合、このメソッドは -1 を返す必要があります。
閉じたフォルダーでこのメソッドを呼び出すクライアントは、これが潜在的にコストのかかる操作であることを認識する必要があります。この場合、クライアントは戻り値 -1 を処理できるように準備する必要があります。
この実装は、このフォルダーが閉じている場合、-1 を返します。そうでない場合、この実装は getMessage(int)
を使用してフォルダー内の各メッセージを取得し、その RECENT
フラグが設定されているかどうかを確認します。このフラグが設定されているメッセージの総数が返されます。
FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 public int getUnreadMessageCount() throws MessagingException
このメソッドは、閉じたフォルダーで呼び出すことができます。ただし、一部のフォルダー実装では、未読メッセージ数を取得することは、実際にフォルダーを開くことを伴う高コストの操作になる可能性があることに注意してください。このような場合、プロバイダーは、閉じた状態でこの機能をサポートしないことを選択できます。その場合、このメソッドは -1 を返す必要があります。
閉じたフォルダーでこのメソッドを呼び出すクライアントは、これが潜在的にコストのかかる操作であることを認識する必要があります。この場合、クライアントは戻り値 -1 を処理できるように準備する必要があります。
この実装は、このフォルダーが閉じている場合、-1 を返します。そうでない場合、この実装は getMessage(int)
を使用してフォルダー内の各メッセージを取得し、その SEEN
フラグが設定されているかどうかを確認します。このフラグが設定されていないメッセージの総数が返されます。
FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 public int getDeletedMessageCount() throws MessagingException
このメソッドは、閉じたフォルダーで呼び出すことができます。ただし、一部のフォルダー実装では、削除されたメッセージの数を取得することは、実際にフォルダーを開くことを伴う高コストの操作になる場合があることに注意してください。このような場合、プロバイダーは、閉じた状態でこの機能をサポートしないことを選択できます。その場合、このメソッドは -1 を返す必要があります。
閉じたフォルダーでこのメソッドを呼び出すクライアントは、これが潜在的にコストのかかる操作であることを認識する必要があります。この場合、クライアントは戻り値 -1 を処理できるように準備する必要があります。
この実装は、このフォルダーが閉じている場合、-1 を返します。そうでない場合、この実装は getMessage(int)
を使用してフォルダー内の各メッセージを取得し、その DELETED
フラグが設定されているかどうかを確認します。このフラグが設定されているメッセージの総数が返されます。
FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- その他の障害の場合 public abstract Message getMessage(int msgnum) throws MessagingException
メッセージオブジェクトは、オンデマンドでいっぱいになる実際のメッセージへの軽量の参照です。フォルダーの実装は、軽量のメッセージオブジェクトを提供することが期待されます。
Folder オブジェクトとは異なり、このフォルダー内のメッセージが削除されていない限り、同じメッセージ番号で getMessage を繰り返し呼び出すと、同じ Message オブジェクトが返されます。
フォルダーが消去されると、セッション内でメッセージ番号が変更される可能性があるため、クライアントはメッセージへの参照としてメッセージ番号を使用しないことをお勧めします。代わりにメッセージオブジェクトを使用してください。
msgnum
- メッセージ番号 FolderNotFoundException
- このフォルダーが存在しない場合。IllegalStateExceptionSE
- このフォルダーが開かれていない場合 IndexOutOfBoundsExceptionSE
- メッセージ番号が範囲外の場合。MessagingException
- その他の障害の場合 getMessageCount()
, fetch(jakarta.mail.Message[], jakarta.mail.FetchProfile)
public Message[] getMessages(int start, int end) throws MessagingException
メッセージオブジェクトは、オンデマンドでいっぱいになる実際のメッセージへの軽量の参照です。フォルダーの実装は、軽量のメッセージオブジェクトを提供することが期待されます。
この実装では、必要なメッセージオブジェクトを取得するために getMessage(index) を使用します。返される配列には (end-start+1)
メッセージオブジェクトが含まれている必要があることに注意してください。
start
- 最初のメッセージの番号 end
- 最後のメッセージの番号 FolderNotFoundException
- このフォルダーが存在しない場合。IllegalStateExceptionSE
- このフォルダーが開かれていない場合。IndexOutOfBoundsExceptionSE
- 開始メッセージ番号または終了メッセージ番号が範囲外の場合。MessagingException
- その他の障害の場合 fetch(jakarta.mail.Message[], jakarta.mail.FetchProfile)
public Message[] getMessages(int[] msgnums) throws MessagingException
メッセージオブジェクトは、オンデマンドでいっぱいになる実際のメッセージへの軽量の参照です。フォルダーの実装は、軽量のメッセージオブジェクトを提供することが期待されます。
この実装では、必要なメッセージオブジェクトを取得するために getMessage(index) を使用します。返される配列には msgnums.length
メッセージオブジェクトが含まれている必要があることに注意してください。
msgnums
- メッセージ番号の配列 FolderNotFoundException
- このフォルダーが存在しない場合。IllegalStateExceptionSE
- このフォルダーが開かれていない場合。IndexOutOfBoundsExceptionSE
- 指定された配列のメッセージ番号が範囲外の場合。MessagingException
- その他の障害の場合 fetch(jakarta.mail.Message[], jakarta.mail.FetchProfile)
public Message[] getMessages() throws MessagingException
この実装は、getMessageCount()
を呼び出して現在のメッセージ数を取得し、次に getMessage()
を使用してメッセージオブジェクトを 1 からメッセージ数まで取得します。
FolderNotFoundException
- このフォルダーが存在しない場合。IllegalStateExceptionSE
- このフォルダーが開かれていない場合。MessagingException
- その他の障害の場合 fetch(jakarta.mail.Message[], jakarta.mail.FetchProfile)
public abstract void appendMessages(Message[] msgs) throws MessagingException
指定されたメッセージ配列内のメッセージが消去されたメッセージであることが判明した場合、フォルダーの実装はこの操作を中止してはなりません。
msgs
- 追加するメッセージの配列 FolderNotFoundException
- このフォルダーが存在しない場合。MessagingException
- 追加が失敗した場合。public void fetch(Message[] msgs, FetchProfile fp) throws MessagingException
クライアントはこのメソッドを使用して、指定されたアイテムが指定されたメッセージ範囲にまとめて必要であることを示します。実装は、指定されたメッセージ範囲のこれらのアイテムを効率的な方法で取得することが期待されています。このメソッドは、目的のアイテムをプリフェッチするための実装への単なるヒントであることに注意してください。
例としては、フォルダー内のすべてのメッセージのサブジェクト、From、X-mailer ヘッダーでヘッダービューウィンドウを埋めるクライアントがあります。
Message[] msgs = folder.getMessages(); FetchProfile fp = new FetchProfile(); fp.add(FetchProfile.Item.ENVELOPE); fp.add("X-mailer"); folder.fetch(msgs, fp); for (int i = 0; i < folder.getMessageCount(); i++) { display(msg[i].getFrom()); display(msg[i].getSubject()); display(msg[i].getHeader("X-mailer")); }
ここで提供される実装は、何も有用なことをせずに戻るだけです。このメソッドの実際の実装を提供したいプロバイダーは、このメソッドをオーバーライドする必要があります。
msgs
- これらのメッセージのアイテムをフェッチする fp
- FetchProfileIllegalStateExceptionSE
- このフォルダーが開かれていない場合 MessagingException
- その他の障害の場合 public void setFlags(Message[] msgs, Flags flag, boolean value) throws MessagingException
指定されたメッセージオブジェクト はこのフォルダーに属している必要があることに注意してください。特定のフォルダーの実装では、メッセージのグループにフラグを設定する操作を最適化できるため、クライアントは、メッセージごとに Message.setFlags
を呼び出すのではなく、この方法を使用することをお勧めします。
この実装は、各メッセージオブジェクトで setFlags()
を呼び出すように縮退します。このケースを最適化できる特定のフォルダーの実装は、そうする必要があります。また、配列内のメッセージが消去されたメッセージであることが判明した場合、実装は操作を中止してはなりません。
msgs
- メッセージオブジェクトの配列 flag
- 設定するフラグを含む Flags オブジェクト value
- フラグをこのブール値に設定します IllegalStateExceptionSE
- このフォルダーが開かれていない場合、または READ_ONLY で開かれている場合。MessagingException
- その他の障害の場合 Message.setFlags(jakarta.mail.Flags, boolean)
, MessageChangedEvent
public void setFlags(int start, int end, Flags flag, boolean value) throws MessagingException
特定のフォルダーの実装では、メッセージのグループにフラグを設定する操作を最適化できるため、クライアントは、メッセージごとに Message.setFlags
を呼び出すのではなく、この方法を使用することをお勧めします。
デフォルトの実装では、getMessage(int)
を使用して各 Message
オブジェクトを取得し、そのオブジェクトで setFlags
を呼び出してフラグを設定します。このケースを最適化できる特定のフォルダーの実装は、そうする必要があります。また、メッセージ番号が消去されたメッセージを参照している場合、実装は操作を中止してはなりません。
start
- 最初のメッセージの番号 end
- 最後のメッセージの番号 flag
- 設定するフラグを含む Flags オブジェクト value
- フラグをこのブール値に設定します IllegalStateExceptionSE
- このフォルダーが開かれていない場合、または READ_ONLY で開かれている場合。IndexOutOfBoundsExceptionSE
- 開始メッセージ番号または終了メッセージ番号が範囲外の場合。MessagingException
- その他の障害の場合 Message.setFlags(jakarta.mail.Flags, boolean)
, MessageChangedEvent
public void setFlags(int[] msgnums, Flags flag, boolean value) throws MessagingException
特定のフォルダーの実装では、メッセージのグループにフラグを設定する操作を最適化できるため、クライアントは、メッセージごとに Message.setFlags
を呼び出すのではなく、この方法を使用することをお勧めします。
デフォルトの実装では、getMessage(int)
を使用して各 Message
オブジェクトを取得し、そのオブジェクトで setFlags
を呼び出してフラグを設定します。このケースを最適化できる特定のフォルダーの実装は、そうする必要があります。また、メッセージ番号が消去されたメッセージを参照している場合、実装は操作を中止してはなりません。
msgnums
- メッセージ番号の配列 flag
- 設定するフラグを含む Flags オブジェクト value
- フラグをこのブール値に設定します IllegalStateExceptionSE
- このフォルダーが開かれていない場合、または READ_ONLY で開かれている場合。IndexOutOfBoundsExceptionSE
- 指定された配列のメッセージ番号が範囲外の場合。MessagingException
- その他の障害の場合 Message.setFlags(jakarta.mail.Flags, boolean)
, MessageChangedEvent
public void copyMessages(Message[] msgs, Folder folder) throws MessagingException
指定されたメッセージオブジェクト はこのフォルダーに属している必要があることに注意してください。フォルダーの実装では、サーバー側のコピーを実行することで、この方法を最適化できる可能性があります。
この実装は、宛先フォルダーで appendMessages()
を呼び出して、指定されたメッセージを追加するだけです。サーバー側のコピーをサポートする特定のフォルダーの実装は、宛先フォルダーのストアがこのフォルダーのストアと同じである場合にサポートする必要があります。また、配列内のメッセージが消去されたメッセージであることが判明した場合、実装は操作を中止してはなりません。
msgs
- メッセージオブジェクトの配列 folder
- メッセージをコピーするフォルダー FolderNotFoundException
- 宛先フォルダーが存在しない場合。IllegalStateExceptionSE
- このフォルダーが開かれていない場合。MessagingException
- その他の障害の場合 appendMessages(jakarta.mail.Message[])
public abstract Message[] expunge() throws MessagingException
getMessageNumber
メソッドは、そのメッセージの元の(つまり、消去前の)シーケンス番号を返します。消去されたメッセージを含む MessageCountEvent は、フォルダーに登録されているすべての MessageCountListeners に配信されます。消去すると、消去されたメッセージに続いてメッセージオブジェクトの番号が付け直されます。メッセージへの参照としてメッセージ番号を使用するクライアントは、これを認識し、状況に対処する準備をする必要があります(おそらく、既存のメッセージ番号キャッシュをフラッシュして再ロードすることによって)。この複雑さのため、クライアントはメッセージ番号ではなく、メッセージへの参照としてメッセージオブジェクトを使用する方が適切です。消去された Messages オブジェクトは引き続き削除する必要がありますが、そのフォルダー内の他のメッセージは消去の影響を受けません。
メッセージが消去された後も、対応する Message オブジェクトでは isExpunged
メソッドと getMessageNumber
メソッドのみが引き続き有効です。他の方法では MessageRemovedException
がスローされる可能性があります
FolderNotFoundException
- このフォルダーが存在しない場合 IllegalStateExceptionSE
- このフォルダーが開かれていない場合。MessagingException
- その他の障害の場合 Message.isExpunged()
, MessageCountEvent
public Message[] search(SearchTerm term) throws MessagingException
この実装は search(term, getMessages())
を呼び出して、このフォルダー内のすべてのメッセージに検索を適用します。サーバー側の検索を実装できるプロバイダーは、より効率的な実装を提供するために、このメソッドをオーバーライドすることをお勧めします。
term
- 検索基準 SearchException
- 検索語が複雑すぎて実装で処理できない場合。FolderNotFoundException
- このフォルダーが存在しない場合。IllegalStateExceptionSE
- このフォルダーが開かれていない場合。MessagingException
- その他の障害の場合 SearchTerm
public Message[] search(SearchTerm term, Message[] msgs) throws MessagingException
指定されたメッセージオブジェクト はこのフォルダーに属している必要があることに注意してください。
この実装は、指定されたメッセージの配列を反復処理し、指定された用語で match()
メソッドを呼び出すことにより、各メッセージに検索基準を適用します。一致に成功したメッセージが返されます。サーバー側の検索を実装できるプロバイダーは、より効率的な実装を提供するために、このメソッドをオーバーライドすることをお勧めします。検索用語が複雑すぎるか、サーバーで実行できないユーザー定義の用語が含まれている場合、プロバイダーは SearchException をスローするか、super.search()
を呼び出してこの実装を呼び出すことでクライアント側の検索に縮退するかを選択できます。
term
- 検索基準 msgs
- 検索するメッセージ SearchException
- 検索語が複雑すぎて実装で処理できない場合。IllegalStateExceptionSE
- このフォルダーが開かれていない場合 MessagingException
- その他の障害の場合 SearchTerm
public void addConnectionListener(ConnectionListener l)
ここで提供される実装は、このリスナーを ConnectionListeners の内部リストに追加します。
l
- 接続イベントのリスナー ConnectionEvent
public void removeConnectionListener(ConnectionListener l)
ここで提供される実装は、ConnectionListeners の内部リストからこのリスナーを削除します。
l
- リスナー addConnectionListener(jakarta.mail.event.ConnectionListener)
protected void notifyConnectionListeners(int type)
提供された実装は、イベントを内部イベントキューにキューイングします。イベントディスパッチャースレッドは、イベントをキューからデキューし、登録された ConnectionListeners にディスパッチします。イベントディスパッチは別のスレッドで発生するため、潜在的なデッドロックの問題を回避できることに注意してください。
type
- ConnectionEvent 型 ConnectionEvent
public void addFolderListener(FolderListener l)
ここで提供される実装は、このリスナーを FolderListeners の内部リストに追加します。
l
- Folder イベントのリスナー FolderEvent
public void removeFolderListener(FolderListener l)
ここで提供される実装は、FolderListeners の内部リストからこのリスナーを削除します。
l
- リスナー addFolderListener(jakarta.mail.event.FolderListener)
protected void notifyFolderListeners(int type)
ここで提供される実装は、イベントを内部イベントキューにキューイングします。イベントディスパッチャースレッドは、イベントをキューからデキューし、このフォルダーに登録されている FolderListeners にディスパッチします。実装はまた、このフォルダーのストアで notifyFolderListeners
を呼び出して、ストアに登録されている FolderListeners に通知します。
type
- FolderEvent の型 notifyFolderRenamedListeners(jakarta.mail.Folder)
protected void notifyFolderRenamedListeners(Folder folder)
ここで提供される実装は、イベントを内部イベントキューにキューイングします。イベントディスパッチャースレッドは、イベントをキューからデキューし、このフォルダーに登録されている FolderListeners にディスパッチします。実装はまた、このフォルダーのストアで notifyFolderRenamedListeners
を呼び出して、ストアに登録されている FolderListeners に通知します。
folder
- 新しい名前を表すフォルダー。notifyFolderListeners(int)
public void addMessageCountListener(MessageCountListener l)
ここで提供される実装は、このリスナーを MessageCountListeners の内部リストに追加します。
l
- MessageCount イベントのリスナー MessageCountEvent
public void removeMessageCountListener(MessageCountListener l)
ここで提供される実装は、MessageCountListeners の内部リストからこのリスナーを削除します。
l
- リスナー addMessageCountListener(jakarta.mail.event.MessageCountListener)
protected void notifyMessageAddedListeners(Message[] msgs)
提供された実装は、イベントを内部イベントキューにキューイングします。イベントディスパッチャースレッドは、イベントをキューからデキューし、登録された MessageCountListeners にディスパッチします。イベントディスパッチは別のスレッドで発生するため、潜在的なデッドロックの問題を回避できることに注意してください。
msgs
- 追加されたメッセージ protected void notifyMessageRemovedListeners(boolean removed, Message[] msgs)
提供された実装は、イベントを内部イベントキューにキューイングします。イベントディスパッチャースレッドは、イベントをキューからデキューし、登録された MessageCountListeners にディスパッチします。イベントディスパッチは別のスレッドで発生するため、潜在的なデッドロックの問題を回避できることに注意してください。
removed
- メッセージはこのクライアントによって削除されましたか? msgs
- 削除されたメッセージ public void addMessageChangedListener(MessageChangedListener l)
ここで提供される実装は、このリスナーを MessageChangedListeners の内部リストに追加します。
l
- MessageChanged イベントのリスナー MessageChangedEvent
public void removeMessageChangedListener(MessageChangedListener l)
ここで提供される実装は、MessageChangedListeners の内部リストからこのリスナーを削除します。
l
- リスナー addMessageChangedListener(jakarta.mail.event.MessageChangedListener)
protected void notifyMessageChangedListeners(int type, Message msg)
提供された実装は、イベントを内部イベントキューにキューイングします。イベントディスパッチャースレッドは、イベントをキューからデキューし、登録された MessageChangedListeners にディスパッチします。イベントディスパッチは別のスレッドで発生するため、潜在的なデッドロックの問題を回避できることに注意してください。
type
- MessageChangedEvent 型 msg
- 変わったメッセージ protected void finalize() throws ThrowableSE
ObjectSE
の finalizeSE
ThrowableSE
public StringSE toString()
ObjectSE
の toStringSE
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.