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
.
To instantiate the new class, UnresolvedPermission
assumes
the class provides a zero, one, and/or two-argument constructor.
The zero-argument constructor would be used to instantiate
a permission without a name and without actions.
A one-arg constructor is assumed to take a String
name as input, and a two-arg constructor is assumed to take a
String
name and String
actions
as input. UnresolvedPermission
may invoke a
constructor with a null
name and/or actions.
If an appropriate permission constructor is not available,
the UnresolvedPermission
is ignored and the relevant permission
will not be granted to executing code.
The newly created permission object replaces the
UnresolvedPermission
, which is removed.
Note that the getName
method for an
UnresolvedPermission
returns the
type
(class name) for the underlying permission
that has not been resolved.
java.security.Permission
, java.security.Permissions
, java.security.PermissionCollection
, java.security.Policy
Modifier and Type | Field and Description |
---|---|
private final String | actions
The actions of the permission. |
private transient Certificate[] | |
private static final Debug | |
private final String | name
The permission name.
|
private static final Class | |
private static final Class | |
private static final Class | |
private static final long | |
private final String | type
The class name of the Permission class that will be created when this unresolved permission is resolved. |
Access | Constructor and Description |
---|---|
public | UnresolvedPermission(String
the class name of the Permission class that will be
created when this unresolved permission is resolved. type, String the name of the permission. name, String the actions of the permission. actions, Certificate[] 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). The signer
certificates are copied from the array. Subsequent changes to
the array will not affect this UnresolvedPermission. certs)Creates a new |
Modifier and Type | Method and Description |
---|---|
public boolean | Returns: true ifobj is an UnresolvedPermission ,
and has the same type (class) name, permission name, actions, and
certificates as this object.the object we are testing for equality with this object. obj)Implements abstract java. Checks two |
public String | Returns: the empty string "".Implements abstract java. Returns the canonical string representation of the actions,
which currently is the empty string "", since there are no actions for
an |
public String | Returns: the actions for the underlying permission that has not been resolved, ornull
if there are no actionsGet the actions for the underlying permission that has not been resolved. |
public Certificate[] | Returns: the signer certificates for the underlying permission that has not been resolved, ornull , if there are no signer
certificates.
Returns a new array each time this method is called.Get the signer certificates (without any supporting chain) for the underlying permission that has not been resolved. |
public String | Returns: the target name of the underlying permission that has not been resolved, ornull ,
if there is no target nameGet the target name of the underlying permission that has not been resolved. |
public String | Returns: the type (class name) of the underlying permission that has not been resolvedGet the type (class name) of the underlying permission that has not been resolved. |
public int | Returns: the hash code value for this objectImplements abstract java. Returns the hash code value for this object. |
public boolean | Returns: false .the permission to check against. p)Implements abstract java. This method always returns |
public PermissionCollection | Returns: a new PermissionCollection object suitable for storingUnresolvedPermissions .Overrides java. Returns a new PermissionCollection object for storing
|
private void | readObject(ObjectInputStream
the ois)ObjectInputStream from which data is readRestores this object from a stream (i.e., deserializes it). |
pack-priv Permission | resolve(Permission p, Certificate[] certs)
try and resolve this permission using the class loader of the permission that was passed in. |
public String | Returns: information about thisUnresolvedPermission .Overrides java. Returns a string describing this |
private void | writeObject(ObjectOutputStream
the oos)ObjectOutputStream to which data is writtenWrites this object out to a stream (i.e., serializes it). |
actions | back to summary |
---|---|
private final String actions The actions of the permission. |
certs | back to summary |
---|---|
private transient Certificate[] certs |
debug | back to summary |
---|---|
private static final Debug debug |
name | back to summary |
---|---|
private final String name Hides java. The permission name. |
PARAMS0 | back to summary |
---|---|
private static final Class<?>[] PARAMS0 |
PARAMS1 | back to summary |
---|---|
private static final Class<?>[] PARAMS1 |
PARAMS2 | back to summary |
---|---|
private static final Class<?>[] PARAMS2 |
serialVersionUID | back to summary |
---|---|
private static final long serialVersionUID Hides java. |
type | back to summary |
---|---|
private final String type The class name of the Permission class that will be created when this unresolved permission is resolved. |
UnresolvedPermission | back to summary |
---|---|
public UnresolvedPermission(String type, String name, String actions, Certificate[] certs) Creates a new
|
equals | back to summary |
---|---|
public boolean equals(Object obj) Implements abstract java. Checks two To determine certificate equality, this method only compares actual signer certificates. Supporting certificate chains are not taken into consideration by this method. |
getActions | back to summary |
---|---|
public String getActions() Implements abstract java. Returns the canonical string representation of the actions,
which currently is the empty string "", since there are no actions for
an |
getUnresolvedActions | back to summary |
---|---|
public String getUnresolvedActions() Get the actions for the underlying permission that has not been resolved.
|
getUnresolvedCerts | back to summary |
---|---|
public Certificate[] getUnresolvedCerts() Get the signer certificates (without any supporting chain) for the underlying permission that has not been resolved.
|
getUnresolvedName | back to summary |
---|---|
public String getUnresolvedName() Get the target name of the underlying permission that has not been resolved.
|
getUnresolvedType | back to summary |
---|---|
public String getUnresolvedType() Get the type (class name) of the underlying permission that has not been resolved.
|
hashCode | back to summary |
---|---|
public int hashCode() Implements abstract java. Returns the hash code value for this object.
|
implies | back to summary |
---|---|
public boolean implies(Permission p) Implements abstract java. This method always returns
|
newPermissionCollection | back to summary |
---|---|
public PermissionCollection newPermissionCollection() Overrides java. Returns a new PermissionCollection object for storing
|
readObject | back to summary |
---|---|
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException Restores this object from a stream (i.e., deserializes it).
|
resolve | back to summary |
---|---|
pack-priv Permission resolve(Permission p, Certificate[] certs) try and resolve this permission using the class loader of the permission that was passed in. |
toString | back to summary |
---|---|
public String toString() Overrides java. Returns a string describing this |
writeObject | back to summary |
---|---|
private void writeObject(ObjectOutputStream oos) throws IOException Writes this object out to a stream (i.e., serializes it).
|