public final class UnresolvedPermission extends Permission implements Serializable
Java 実行時のポリシー (さまざまな主体からコードで利用できるアクセス権を指定する) は、Policy オブジェクトによって表現されます。Policy が初期化または再表示されるたびに、Policy によって許可されるすべてのアクセス権に対して適切なクラスの Permission オブジェクトが作成されます。
ポリシーの構成によって参照されるアクセス権クラスタイプの多くは、ローカルに存在します (つまり、CLASSPATH 上に置かれている)。このようなアクセス権のオブジェクトは、Policy の初期化時にインスタンスを生成できます。たとえば、FilePermission クラスは CLASSPATH で見つかるので、いつでも java.io.FilePermission のインスタンスを生成できます。
ほかのアクセス権クラスは、Policy の初期化時にはまだ存在しない場合もあります。たとえば、参照されたアクセス権クラスは、あとにロードされる JAR ファイル内にある可能性があります。そのような各クラスでは、UnresolvedPermission のインスタンスが生成されます。このため、UnresolvedPermission は基本的に、アクセス権についての情報を保持する「プレースホルダ」です。
その後、以前解決されなかったがその後クラスがロードされた型のアクセス権に対し、AccessController.checkPermission がコード内から呼び出されると、その型の未解決のアクセス権が「解決され」ます。つまり、そのような個々の UnresolvedPermission ごとに、UnresolvedPermission 内の情報に基づいて適切なクラス型の新しいオブジェクトが生成されます。
新しいクラスをインスタンス化するために、UnresolvedPermission は、その新しいクラスが引数なしコンストラクタ、1 つの引数をとるコンストラクタ、2 つの引数をとるコンストラクタの、いずれかまたはそのすべてを提供するものと仮定します。引数なしコンストラクタは、名前とアクションを持たないアクセス権をインスタンス化する場合に使用されます。また、1 つの引数をとるコンストラクタは String
型の名前を入力として受け取るものと仮定され、2 つの引数をとるコンストラクタは String
型の名前と String
型のアクションを入力として受け取るものと仮定されます。UnresolvedPermission は、名前またはアクションあるいはその両方に null
を指定してコンストラクタを呼び出すこともあります。適切なアクセス権コンストラクタが見つからない場合、UnresolvedPermission は無視され、その関連アクセス権が実行コードに対して許可されません。
新しく作成されたアクセス権オブジェクトが UnresolvedPermission に置き換わり、その UnresolvedPermission は削除されます。
なお、特定の UnresolvedPermission
の getName
メソッドから返される値は、解決されなかった実際のアクセス権の「型 (type
)」(クラス名) である点に注意してください。
コンストラクタと説明 |
---|
UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
あとで必要になるアクセス権情報を保持する新しい UnresolvedPermission を作成して、アクセス権が解決されるときに、指定されたクラスの Permission を実際に作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
boolean |
equals(Object obj)
2 つの UnresolvedPermission オブジェクトが等しいかどうかを判定します。
|
String |
getActions()
アクションの正規の文字列表現を返します。この文字列表現は、現在は空の文字列 "" です。これは、UnresolvedPermission に対応するアクションがないためです。
|
String |
getUnresolvedActions()
解決されていない実際のアクセス権のアクションを取得します。
|
Certificate[] |
getUnresolvedCerts()
解決されていない実際のアクセス権に対する署名者の証明書 (それをサポートする連鎖は含まない) を取得します。
|
String |
getUnresolvedName()
解決されていない実際のアクセス権のターゲット名を取得します。
|
String |
getUnresolvedType()
解決されていない実際のアクセス権の型 (クラス名) を取得します。
|
int |
hashCode()
このオブジェクトのハッシュコード値を返します。
|
boolean |
implies(Permission p)
未解決のアクセス権に対して常に false を返します。
|
PermissionCollection |
newPermissionCollection()
UnresolvedPermission オブジェクトを格納するための新しい PermissionCollection オブジェクトを返します。
|
String |
toString()
この UnresolvedPermission を記述する文字列を返します。
|
checkGuard, getName
public UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
type
- この解決されていないアクセス権が解決されたときに作成される Permission クラスのクラス名。name
- アクセス権の名前。actions
- アクセス権のアクション。certs
- アクセス権のクラスの署名で使われた証明書。これは証明書チェーンのリストであり、それぞれの連鎖は署名者の証明書およびそれをサポートする証明書チェーン (オプション) から構成される。各連鎖は下位から上位の順に並べられる。つまり、署名者の証明書が最初で、(ルートの) 証明書発行局が最後になる。署名者の証明書は配列からコピーされる。その後配列が変更されても、この UnsolvedPermission にその影響が及ぶことはない。public boolean implies(Permission p)
implies
、クラス: Permission
p
- チェック対象のアクセス権。public boolean equals(Object obj)
証明書が等しいかどうかを判定する際にこのメソッドが比較するのは、実際の署名者の証明書だけです。それをサポートする証明書チェーンは、このメソッドでは考慮されません。
equals
、クラス: Permission
obj
- このオブジェクトと等しいかどうかが判定されるオブジェクト。Object.hashCode()
, HashMap
public int hashCode()
hashCode
、クラス: Permission
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
public String getActions()
getActions
、クラス: Permission
public String getUnresolvedType()
public String getUnresolvedName()
null
public String getUnresolvedActions()
null
public Certificate[] getUnresolvedCerts()
public String toString()
toString
、クラス: Permission
public PermissionCollection newPermissionCollection()
newPermissionCollection
、クラス: Permission
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.