Serializable
, Guard
public final class UnresolvedPermission extends Permission implements Serializable
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(java.security.Permission)
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.
Constructor | Description |
---|---|
UnresolvedPermission |
Creates a new UnresolvedPermission containing the permission information needed later to actually create a Permission of the specified class, when the permission is resolved. |
Modifier and Type | Method | Description |
---|---|---|
boolean |
equals |
Checks two UnresolvedPermission objects for equality. |
String |
getActions() |
Returns the canonical string representation of the actions, which currently is the empty string "", since there are no actions for an UnresolvedPermission . |
String |
getUnresolvedActions() |
Get the actions for the underlying permission that has not been resolved. |
Certificate[] |
getUnresolvedCerts() |
Get the signer certificates (without any supporting chain) for the underlying permission that has not been resolved. |
String |
getUnresolvedName() |
Get the target name of the underlying permission that has not been resolved. |
String |
getUnresolvedType() |
Get the type (class name) of the underlying permission that has not been resolved. |
int |
hashCode() |
Returns the hash code value for this object. |
boolean |
implies |
This method always returns false for unresolved permissions. |
PermissionCollection |
newPermissionCollection() |
Returns a new PermissionCollection object for storing UnresolvedPermission objects. |
String |
toString() |
Returns a string describing this UnresolvedPermission . |
checkGuard, getName
public UnresolvedPermission(String type, String name, String actions, Certificate[] certs)
UnresolvedPermission
containing the permission information needed later to actually create a Permission of the specified class, when the permission is resolved.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). The signer certificates are copied from the array. Subsequent changes to the array will not affect this UnresolvedPermission.public boolean implies(Permission p)
false
for unresolved permissions. That is, an UnresolvedPermission
is never considered to imply another permission.implies
in class Permission
p
- the permission to check against.false
.public boolean equals(Object obj)
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. To determine certificate equality, this method only compares actual signer certificates. Supporting certificate chains are not taken into consideration by this method.
equals
in class Permission
obj
- the object we are testing for equality with this object.obj
is an UnresolvedPermission
, and has the same type (class) name, permission name, actions, and certificates as this object.public int hashCode()
hashCode
in class Permission
public String getActions()
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.getActions
in class Permission
public String getUnresolvedType()
public String getUnresolvedName()
null
, if there is no target namepublic String getUnresolvedActions()
null
if there are no actionspublic Certificate[] getUnresolvedCerts()
null
, if there are no signer certificates. Returns a new array each time this method is called.public String toString()
UnresolvedPermission
. The convention is to specify the class name, the permission name, and the actions, in the following format: '(unresolved "ClassName" "name" "actions")'.toString
in class Permission
UnresolvedPermission
.public PermissionCollection newPermissionCollection()
UnresolvedPermission
objects.newPermissionCollection
in class Permission
UnresolvedPermissions
.
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/security/UnresolvedPermission.html