APIdia Launch Partner
Top Description Fields Constructors Methods
java.security

public abstract Class Permission

extends Object
implements Guard, Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable, java.security.Guard
Known Direct Subclasses
java.security.UnresolvedPermission, javax.crypto.CryptoPermission, javax.security.auth.PrivateCredentialPermission, java.io.FilePermission, java.net.SocketPermission, java.net.URLPermission, java.security.AllPermission, java.security.BasicPermission

Abstract class for representing access to a system resource. All permissions have a name (whose interpretation depends on the subclass), as well as abstract functions for defining the semantics of the particular Permission subclass.

Most Permission objects also include an "actions" list that tells the actions that are permitted for the object. For example, for a java.io.FilePermission object, the permission name is the pathname of a file (or directory), and the actions list (such as "read, write") specifies which actions are granted for the specified file (or for files in the specified directory). The actions list is optional for Permission objects, such as java.lang.RuntimePermission, that don't need such a list; you either have the named permission (such as "system.exit") or you don't.

An important method that must be implemented by each subclass is the implies method to compare Permissions. Basically, "permission p1 implies permission p2" means that if one is granted permission p1, one is naturally granted permission p2. Thus, this is not an equality test, but rather more of a subset test.

Permission objects are similar to String objects in that they are immutable once they have been created. Subclasses should not provide methods that can change the state of a permission once it has been created.

Authors
Marianne Mueller, Roland Schemers
Since
1.2
See Also
Permissions, PermissionCollection

Field Summary

Modifier and TypeField and Description
private final String
private static final long

Constructor Summary

AccessConstructor and Description
public
Permission(String
name of the Permission object being created.
name
)

Constructs a permission with the specified name.

Method Summary

Modifier and TypeMethod and Description
public void
checkGuard(Object
the object being guarded (currently ignored).
object
)

Implements java.security.Guard.checkGuard.

Implements the guard interface for a permission.

public abstract boolean

Returns:

true if both Permission objects are equivalent.
equals
(Object
the object we are testing for equality with this object.
obj
)

Overrides java.lang.Object.equals.

Checks two Permission objects for equality.

public abstract String

Returns:

the actions of this Permission.
getActions
()

Returns the actions as a String.

public final String

Returns:

the name of this Permission.
getName
()

Returns the name of this Permission.

public abstract int

Returns:

a hash code value for this object.
hashCode
()

Overrides java.lang.Object.hashCode.

Returns the hash code value for this Permission object.

public abstract boolean

Returns:

true if the specified permission is implied by this object, false if not.
implies
(Permission
the permission to check against.
permission
)

Checks if the specified permission's actions are "implied by" this object's actions.

public PermissionCollection

Returns:

a new PermissionCollection object for this type of Permission, or null if one is not defined.
newPermissionCollection
()

Returns an empty PermissionCollection for a given Permission object, or null if one is not defined.

public String

Returns:

information about this Permission.
toString
()

Overrides java.lang.Object.toString.

Returns a string describing this Permission.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

nameback to summary
private final String name
serialVersionUIDback to summary
private static final long serialVersionUID
Annotations
@Serial

Constructor Detail

Permissionback to summary
public Permission(String name)

Constructs a permission with the specified name.

Parameters
name:String

name of the Permission object being created.

Method Detail

checkGuardback to summary
public void checkGuard(Object object) throws SecurityException

Implements java.security.Guard.checkGuard.

Implements the guard interface for a permission. Returns silently if access is granted. Otherwise, throws a SecurityException.

API Note

This method originally threw a SecurityException if a security manager was enabled and the requested access, specified by this permission, was not permitted. The Security Manager is no longer supported; thus, this method always throws a SecurityException.

Parameters
object:Object

the object being guarded (currently ignored).

Annotations
@Override
Exceptions
SecurityException:
always
See Also
Guard, GuardedObject
equalsback to summary
public abstract boolean equals(Object obj)

Overrides java.lang.Object.equals.

Checks two Permission objects for equality.

Do not use the equals method for making access control decisions; use the implies method.

Parameters
obj:Object

the object we are testing for equality with this object.

Returns:boolean

true if both Permission objects are equivalent.

Annotations
@Override
getActionsback to summary
public abstract String getActions()

Returns the actions as a String. This is abstract so subclasses can defer creating a String representation until one is needed. Subclasses should always return actions in what they consider to be their canonical form. For example, two FilePermission objects created via the following:

  perm1 = new FilePermission(p1,"read,write");
  perm2 = new FilePermission(p2,"write,read");
both return "read,write" when the getActions method is invoked.
Returns:String

the actions of this Permission.

getNameback to summary
public final String getName()

Returns the name of this Permission. For example, in the case of a java.io.FilePermission, the name will be a pathname.

Returns:String

the name of this Permission.

hashCodeback to summary
public abstract int hashCode()

Overrides java.lang.Object.hashCode.

Returns the hash code value for this Permission object.

The required hashCode behavior for Permission Objects is the following:

  • Whenever it is invoked on the same Permission object more than once during an execution of a Java application, the hashCode method must consistently return the same integer. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two Permission objects are equal according to the equals method, then calling the hashCode method on each of the two Permission objects must produce the same integer result.
Returns:int

a hash code value for this object.

Annotations
@Override
impliesback to summary
public abstract boolean implies(Permission permission)

Checks if the specified permission's actions are "implied by" this object's actions.

This must be implemented by subclasses of Permission, as they are the only ones that can impose semantics on a Permission object.

Parameters
permission:Permission

the permission to check against.

Returns:boolean

true if the specified permission is implied by this object, false if not.

newPermissionCollectionback to summary
public PermissionCollection newPermissionCollection()

Returns an empty PermissionCollection for a given Permission object, or null if one is not defined. Subclasses of class Permission should override this if they need to store their permissions in a particular PermissionCollection object in order to provide the correct semantics when the PermissionCollection.implies method is called. If null is returned, then the caller of this method is free to store permissions of this type in any PermissionCollection they choose (one that uses a Hashtable, one that uses a Vector, etc.).

Returns:PermissionCollection

a new PermissionCollection object for this type of Permission, or null if one is not defined.

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns a string describing this Permission. The convention is to specify the class name, the permission name, and the actions in the following format: '("ClassName" "name" "actions")', or '("ClassName" "name")' if actions list is null or empty.

Returns:String

information about this Permission.