Serializable
Permissions
public abstract class PermissionCollection extends Object implements Serializable
With a PermissionCollection
, you can:
add
method. implies
method. elements
method. When it is desirable to group together a number of Permission
objects of the same type, the newPermissionCollection
method on that particular type of Permission
object should first be called. The default behavior (from the Permission
class) is to simply return null
. Subclasses of class Permission
override the method 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 a non-null value is returned, that PermissionCollection
must be used. If null
is returned, then the caller of newPermissionCollection
is free to store permissions of the given type in any PermissionCollection
they choose (one that uses a Hashtable
, one that uses a Vector
, etc.).
The collection returned by the Permission.newPermissionCollection
method is a homogeneous collection, which stores only Permission
objects for a given permission type. A PermissionCollection
may also be heterogeneous. For example, Permissions
is a PermissionCollection
subclass that represents a collection of PermissionCollection
objects. That is, its members are each a homogeneous PermissionCollection
. For example, a Permission
object might have a FilePermissionCollection
for all the FilePermission
objects, a SocketPermissionCollection
for all the SocketPermission
objects, and so on. Its add
method adds a permission to the appropriate collection.
Whenever a permission is added to a heterogeneous PermissionCollection
such as Permissions
, and the PermissionCollection
doesn't yet contain a PermissionCollection
of the specified permission's type, the PermissionCollection
should call the newPermissionCollection
method on the permission's class to see if it requires a special PermissionCollection
. If newPermissionCollection
returns null
, the PermissionCollection
is free to store the permission in any type of PermissionCollection
it desires (one using a Hashtable
, one using a Vector
, etc.). For example, the Permissions
object uses a default PermissionCollection
implementation that stores the permission objects in a Hashtable
.
Subclass implementations of PermissionCollection
should assume that they may be called simultaneously from multiple threads, and therefore should be synchronized properly. Furthermore, Enumerations returned via the elements
method are not fail-fast. Modifications to a collection should not be performed while enumerating over that collection.
Constructor | Description |
---|---|
PermissionCollection() |
Constructor for subclasses to call. |
Modifier and Type | Method | Description |
---|---|---|
abstract void |
add |
Adds a permission object to the current collection of permission objects. |
abstract Enumeration |
elements() |
Returns an enumeration of all the Permission objects in the collection. |
Stream |
elementsAsStream() |
Returns a stream of all the Permission objects in the collection. |
abstract boolean |
implies |
Checks to see if the specified permission is implied by the collection of Permission objects held in this PermissionCollection . |
boolean |
isReadOnly() |
Returns true if this PermissionCollection object is marked as readonly. |
void |
setReadOnly() |
Marks this PermissionCollection object as "readonly". |
String |
toString() |
Returns a string describing this PermissionCollection object, providing information about all the permissions it contains. |
public PermissionCollection()
public abstract void add(Permission permission)
permission
- the Permission object to add.SecurityException
- if this PermissionCollection
object has been marked readonlyIllegalArgumentException
- if this PermissionCollection
object is a homogeneous collection and the permission is not of the correct type.public abstract boolean implies(Permission permission)
Permission
objects held in this PermissionCollection
.permission
- the Permission
object to compare.true
if "permission" is implied by the permissions in the collection, false
if not.public abstract Enumeration<Permission> elements()
public Stream<Permission> elementsAsStream()
The collection should not be modified (see add(java.security.Permission)
) during the execution of the terminal stream operation. Otherwise, the result of the terminal stream operation is undefined.
elements()
.public void setReadOnly()
PermissionCollection
object as "readonly". After a PermissionCollection
object is marked as readonly, no new Permission
objects can be added to it using add
.public boolean isReadOnly()
true
if this PermissionCollection
object is marked as readonly. If it is readonly, no new Permission
objects can be added to it using add
. By default, the object is not readonly. It can be set to readonly by a call to setReadOnly
.
true
if this PermissionCollection
object is marked as readonly, false
otherwise.public String toString()
PermissionCollection
object, providing information about all the permissions it contains. The format is: super.toString() ( // enumerate all the Permission // objects and call toString() on them, // one per line.. )
super.toString
is a call to the toString
method of this object's superclass, which is Object
. The result is this collection's type name followed by this object's hashcode, thus enabling clients to differentiate different PermissionCollection
objects, even if they contain the same permissions.
© 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/PermissionCollection.html