- 既知のすべての実装クラス:
SubjectDomainCombiner
DomainCombiner
では、動的に現行のAccessControlContext
に関連したProtectionDomainsを変更する手段を提供します。
DomainCombiner
は、AccessControlContext
の適切なコンストラクタにパラメータとして渡されます。 その後、新しく構築されたコンテキストがAccessController.doPrivileged(..., context)
メソッドに渡され、指定されたコンテキスト(関連するDomainCombiner
)が現在の実行スレッドとバインドされます。 その後、AccessController.getContext
またはAccessController.checkPermission
を呼び出すと、DomainCombiner.combine
が呼び出されます。
combineメソッドには引数が2つあります。 最初の引数は、AccessController.doPrivileged
への最新のコール以降、現在の実行スレッドからのProtectionDomainsの配列を表します。 doPrivilegedの呼出しが行われなかった場合、最初の引数には、現在の実行スレッドからのすべてのProtectionDomainsが含まれます。 第2引数は継承されたProtectionDomainsの配列を表します。この引数はnull
の場合もあります。 ProtectionDomainsは、親スレッドまたは特権コンテキストから継承できます。 doPrivilegedの呼出しが行われなかった場合、2番目の引数には親スレッドから継承されたProtectionDomainsが含まれます。 doPrivilegedが1回以上呼び出され、最新の呼出しがdoPrivileged(action, context)である場合は、第2引数に特権付きコンテキストからのProtectionDomainsが含まれます。 最新の呼出しがdoPrivileged(action)である場合、特権付きコンテキストは存在せず、第2引数はnull
になります。
combine
メソッドでは、ProtectionDomainsの2通りの入力配列を調べ、変更されたProtectionDomainsを含む配置を1つ返します。 もっとも単純な場合、combine
メソッドは、2つのスタックを1つに統合します。 複雑になると、combine
メソッドは、ProtectionDomainsの変更済みスタックを返します。 変更には、新規ProtectionDomainsの追加、特定のProtectionDomainsの削除、または簡単に変更された既存のProtectionDomainsがあります。 ProtectionDomainsに対する再順序付けとその他の最適化もまた許可されます。 通常、combine
メソッドは、DomainCombiner
でカプセル化された情報に関するメソッドの変更を基にします。
AccessController.getContext
メソッドは、組み合わされたProtectionDomainsのスタックをDomainCombiner
から受け取ったあと、DomainCombiner
と、組み合わされたProtectionDomainsの2つを持つ新規AccessControlContextを返します。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明combine
(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。指定されたProtectionDomainsを変更または更新します。
-
メソッドの詳細
-
combine
ProtectionDomain[] combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains) 削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。指定されたProtectionDomainsを変更または更新します。 ProtectionDomainsは、指定されたProtectionDomainsに追加されたり、削除されたりすることがあります。 ProtectionDomainsはまた、再順序付けされることもあります。 個別のProtectionDomainsの場合、Permissionsの新規セットなどを使って変更されることがあります。- パラメータ:
currentDomains
- 現在の実行スレッドに関連付けられたProtectionDomains。最新の特権ProtectionDomain
まで。 ProtectionDomainsは実行順にリストされ、最後に実行されたProtectionDomain
は配列の先頭にあります。 現在の実行スレッドにProtectionDomainsが関連付けられていない場合、このパラメータはnull
です。assignedDomains
- 継承されたProtectionDomainsの配列。 ProtectionDomainsは、親スレッドまたは特権AccessControlContext
から継承できます。 継承されたProtectionDomainが存在しない場合、このパラメータはnull
になる可能性がある。- 戻り値:
- 変更されたProtectionDomainで構成される新規配列、または
null
。
-