java.security
Class UnresolvedPermission

java.lang.Object
  |
  +--java.security.Permission
        |
        +--java.security.UnresolvedPermission
All Implemented Interfaces:
Guard, Serializable

public final class UnresolvedPermission
extends Permission
implements Serializable

Untamed: The UnresolvedPermission class is used to hold Permissions that were "unresolved" when the Policy was initialized. An unresolved permission is one whose actual Permission class does not yet exist at the time the Policy is initialized (see below).

The policy for a Java runtime (specifying which permissions are available for code from various principals) is represented by a Policy object. Whenever a Policy is initialized or refreshed, Permission objects of appropriate classes are created for all permissions allowed by the Policy.

Many permission class types referenced by the policy configuration are ones that exist locally (i.e., ones that can be found on CLASSPATH). Objects for such permissions can be instantiated during Policy initialization. For example, it is always possible to instantiate a java.io.FilePermission, since the FilePermission class is found on the CLASSPATH.

Other permission classes may not yet exist during Policy initialization. For example, a referenced permission class may be in a JAR file that will later be loaded. For each such class, an UnresolvedPermission is instantiated. Thus, an UnresolvedPermission is essentially a "placeholder" containing information about the permission.

Later, when code calls AccessController.checkPermission on a permission of a type that was previously unresolved, but whose class has since been loaded, previously-unresolved permissions of that type are "resolved". That is, for each such UnresolvedPermission, a new object of the appropriate class type is instantiated, based on the information in the UnresolvedPermission. This new object replaces the UnresolvedPermission, which is removed.

Version:
1.22 02/02/01
Author:
Roland Schemers
See Also:
java.security.Permission, java.security.Permissions, java.security.PermissionCollection, java.security.Policy, Serialized Form

Field Summary
private  String actions
          The actions of the permission.
private  java.security.cert.Certificate[] certs
           
private static sun.security.util.Debug debug
           
private  String name
          The permission name.
private static Class[] PARAMS0
           
private static Class[] PARAMS1
           
private static Class[] PARAMS2
           
private  String type
          The class name of the Permission class that will be created when this unresolved permission is resolved.
 
Constructor Summary
UnresolvedPermission(String type, String name, String actions, java.security.cert.Certificate[] certs)
          Enabled: Creates a new UnresolvedPermission containing the permission information needed later to actually create a Permission of the specified class, when the permission is resolved.
 
Method Summary
 boolean equals(Object obj)
          Suppressed: Checks two UnresolvedPermission objects for equality.
 String getActions()
          Enabled: Returns the canonical string representation of the actions, which currently is the empty string "", since there are no actions for an UnresolvedPermission.
 int hashCode()
          Suppressed: Returns the hash code value for this object.
 boolean implies(Permission p)
          Enabled: This method always returns false for unresolved permissions.
 PermissionCollection newPermissionCollection()
          Enabled: Returns a new PermissionCollection object for storing UnresolvedPermission objects.
private  void readObject(ObjectInputStream ois)
          Restores this object from a stream (i.e., deserializes it).
(package private)  Permission resolve(Permission p, java.security.cert.Certificate[] certs)
          try and resolve this permission using the class loader of the permission that was passed in.
 String toString()
          Suppressed: Returns a string describing this UnresolvedPermission.
private  void writeObject(ObjectOutputStream oos)
          Writes this object out to a stream (i.e., serializes it).
 
Methods inherited from class java.security.Permission
checkGuard, getName
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

debug

private static final sun.security.util.Debug debug

type

private String type
The class name of the Permission class that will be created when this unresolved permission is resolved.


name

private String name
The permission name.


actions

private String actions
The actions of the permission.


certs

private transient java.security.cert.Certificate[] certs

PARAMS0

private static final Class[] PARAMS0

PARAMS1

private static final Class[] PARAMS1

PARAMS2

private static final Class[] PARAMS2
Constructor Detail

UnresolvedPermission

public UnresolvedPermission(String type,
                            String name,
                            String actions,
                            java.security.cert.Certificate[] certs)
Enabled: Creates a new UnresolvedPermission containing the permission information needed later to actually create a Permission of the specified class, when the permission is resolved.

Parameters:
type - the class name of the Permission class that will be created when this unresolved permission is resolved.
name - the name of the permission.
actions - the actions of the permission.
certs - the certificates the permission's class was signed with. This is a list of certificate chains, where each chain is composed of a signer certificate and optionally its supporting certificate chain. Each chain is ordered bottom-to-top (i.e., with the signer certificate first and the (root) certificate authority last).
Method Detail

resolve

Permission resolve(Permission p,
                   java.security.cert.Certificate[] certs)
try and resolve this permission using the class loader of the permission that was passed in.


implies

public boolean implies(Permission p)
Enabled: This method always returns false for unresolved permissions. That is, an UnresolvedPermission is never considered to imply another permission.

Specified by:
implies in class Permission
Parameters:
p - the permission to check against.
Returns:
false.

equals

public boolean equals(Object obj)
Suppressed: Checks two UnresolvedPermission objects for equality. Checks that obj is an UnresolvedPermission, and has the same type (class) name, permission name, actions, and certificates as this object.

Specified by:
equals in class Permission
Parameters:
obj - the object we are testing for equality with this object.
Returns:
true if obj is an UnresolvedPermission, and has the same type (class) name, permission name, actions, and certificates as this object.

hashCode

public int hashCode()
Suppressed: Returns the hash code value for this object.

Specified by:
hashCode in class Permission
Returns:
a hash code value for this object.

getActions

public String getActions()
Enabled: Returns the canonical string representation of the actions, which currently is the empty string "", since there are no actions for an UnresolvedPermission. That is, the actions for the permission that will be created when this UnresolvedPermission is resolved may be non-null, but an UnresolvedPermission itself is never considered to have any actions.

Specified by:
getActions in class Permission
Returns:
the empty string "".

toString

public String toString()
Suppressed: Returns a string describing this UnresolvedPermission. The convention is to specify the class name, the permission name, and the actions, in the following format: '(unresolved "ClassName" "name" "actions")'.

Overrides:
toString in class Permission
Returns:
information about this UnresolvedPermission.

newPermissionCollection

public PermissionCollection newPermissionCollection()
Enabled: Returns a new PermissionCollection object for storing UnresolvedPermission objects.

Overrides:
newPermissionCollection in class Permission
Returns:
a new PermissionCollection object suitable for storing UnresolvedPermissions.

writeObject

private void writeObject(ObjectOutputStream oos)
                  throws IOException
Writes this object out to a stream (i.e., serializes it).

IOException

readObject

private void readObject(ObjectInputStream ois)
                 throws IOException,
                        ClassNotFoundException
Restores this object from a stream (i.e., deserializes it).

IOException
ClassNotFoundException


comments?