モジュール java.base
パッケージ java.security

クラスUnresolvedPermission

  • すべての実装されたインタフェース:
    Serializable, Guard

    public final class UnresolvedPermission
    extends Permission
    implements Serializable
    UnresolvedPermissionクラスを使うと、Policyの初期化時に「解決されなかった」Permissionを保持できます。 解決されていないアクセス権とは、Policyの初期化時に実際のPermissionクラスがまだ存在していないアクセス権のことです(下記を参照)。

    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は削除されます。

    なお、特定のUnresolvedPermissiongetNameメソッドから返される値は、解決されなかった実際のアクセス権の「型(type)」(クラス名)である点に注意してください。

    導入されたバージョン:
    1.2
    関連項目:
    Permission, Permissions, PermissionCollection, Policy, 直列化された形式
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      UnresolvedPermission​(String type, String name, String actions, Certificate[] certs)
      あとで必要になるアクセス権情報を保持する新しいUnresolvedPermissionを作成して、アクセス権が解決されるときに、指定されたクラスのPermissionを実際に作成します。
    • コンストラクタの詳細

      • UnresolvedPermission

        public UnresolvedPermission​(String type,
                                    String name,
                                    String actions,
                                    Certificate[] certs)
        あとで必要になるアクセス権情報を保持する新しいUnresolvedPermissionを作成して、アクセス権が解決されるときに、指定されたクラスのPermissionを実際に作成します。
        パラメータ:
        type - この解決されていないアクセス権が解決されたときに作成されるPermissionクラスのクラス名。
        name - アクセス権の名前。
        actions - アクセス権のアクション。
        certs - アクセス権のクラスの署名で使われた証明書。 これは証明書チェーンのリストであり、それぞれの連鎖は署名者の証明書およびそれをサポートする証明書チェーン(オプション)から構成される。 各連鎖は下位から上位の順に並べられる。つまり、署名者の証明書が最初で、(ルートの)証明書発行局が最後になる。 署名者の証明書は配列からコピーされる。 その後に配列を変更しても、このUnresolvedPermissionには影響しません。
    • メソッドの詳細

      • implies

        public boolean implies​(Permission p)
        未解決のアクセス権に対して常にfalseを返します。 つまり、UnresolvedPermissionは別のアクセス権を含むものとは見なされません。
        定義:
        implies、クラスPermission
        パラメータ:
        p - チェック対象のアクセス権。
        戻り値:
        false
      • equals

        public boolean equals​(Object obj)
        2つのUnresolvedPermissionオブジェクトが等しいかどうかを判定します。 objがUnresolvedPermissionで、このオブジェクトと同じ型(クラス)の名前、アクセス権の名前、アクション、証明書を持つかどうかを調べます。

        証明書が等しいかどうかを判定する際にこのメソッドが比較するのは、実際の署名者の証明書だけです。 それをサポートする証明書チェーンは、このメソッドでは考慮されません。

        定義:
        equals、クラスPermission
        パラメータ:
        obj - このオブジェクトと等しいかどうかが判定されるオブジェクト。
        戻り値:
        objがUnresolvedPermissionで、このオブジェクトと同じ型(クラス)の名前、アクセス権の名前、アクション、および証明書を持つ場合はtrue。
        関連項目:
        Object.hashCode()HashMap
      • getActions

        public String getActions()
        アクションの正規の文字列表現を返します。この文字列表現は、現在は空の文字列""です。これは、UnresolvedPermissionに対応するアクションがないためです。 つまり、このUnresolvedPermissionの解決時に作成されるアクセス権のアクションはnull以外になりますが、UnresolvedPermission自身がなんらかのアクションを持つと見なされることはありません。
        定義:
        getActions、クラスPermission
        戻り値:
        空の文字列""。
      • getUnresolvedType

        public String getUnresolvedType()
        解決されていない実際のアクセス権の型(クラス名)を取得します。
        戻り値:
        解決されていない実際のアクセス権の型(クラス名)
        導入されたバージョン:
        1.5
      • getUnresolvedName

        public String getUnresolvedName()
        解決されていない実際のアクセス権のターゲット名を取得します。
        戻り値:
        解決されていない実際のアクセス権のターゲット名。ターゲット名が存在しない場合はnull
        導入されたバージョン:
        1.5
      • getUnresolvedActions

        public String getUnresolvedActions()
        解決されていない実際のアクセス権のアクションを取得します。
        戻り値:
        解決されていない実際のアクセス権のアクション。アクションが存在しない場合はnull
        導入されたバージョン:
        1.5
      • getUnresolvedCerts

        public Certificate[] getUnresolvedCerts()
        解決されていない実際のアクセス権に対する署名者の証明書(それをサポートする連鎖は含まない)を取得します。
        戻り値:
        解決されていない実際のアクセス権に対する署名者の証明書。署名者の証明書が存在しない場合はnull。 このメソッドが呼び出されるたびに新しい配列を返す。
        導入されたバージョン:
        1.5
      • toString

        public String toString()
        このUnresolvedPermissionを記述する文字列を返します。 規約では、クラス名、アクセス権の名前、およびアクションが、'(unresolved "ClassName" "name" "actions")'という形式で指定されます。
        オーバーライド:
        toString、クラスPermission
        戻り値:
        このUnresolvedPermissionについての情報。
      • newPermissionCollection

        public PermissionCollection newPermissionCollection()
        UnresolvedPermissionオブジェクトを格納するための新しいPermissionCollectionオブジェクトを返します。
        オーバーライド:
        newPermissionCollection、クラスPermission
        戻り値:
        UnresolvedPermissionsを格納するのに適切な新しいPermissionCollectionオブジェクト。