Top Description Fields Constructors Methods
java.util

public final Class PropertyPermission

Additional top-level class in compilation unit: PropertyPermissionCollection.

extends BasicPermission
Class Inheritance
Imports
java.io.IOException, .ObjectInputStream, .ObjectOutputStream, .ObjectStreamField, .Serializable, java.security.*, java.util.Enumeration, .Hashtable, java.util.concurrent.ConcurrentHashMap, sun.security.util.SecurityConstants

This class is for property permissions.

The name is the name of the property ("java.home", "os.name", etc). The naming convention follows the hierarchical property naming convention. Also, an asterisk may appear at the end of the name, following a ".", or by itself, to signify a wildcard match. For example: "java.*" and "*" signify a wildcard match, while "*java" and "a*b" do not.

The actions to be granted are passed to the constructor in a string containing a list of one or more comma-separated keywords. The possible keywords are "read" and "write". Their meaning is defined as follows:

read
read permission. Allows System.getProperty to be called.
write
write permission. Allows System.setProperty to be called.

The actions string is converted to lowercase before processing.

Care should be taken before granting code permission to access certain system properties. For example, granting permission to access the "java.home" system property gives potentially malevolent code sensitive information about the system environment (the Java installation directory). Also, granting permission to access the "user.name" and "user.home" system properties gives potentially malevolent code sensitive information about the user environment (the user's account name and home directory).

Author
Roland Schemers
Since
1.2
See Also
java.security.BasicPermission, java.security.Permission, java.security.Permissions, java.security.PermissionCollection, java.lang.SecurityManager

Field Summary

Modifier and TypeField and Description
private String
actions

The actions string.

private static final int
ALL

All actions (read,write);

private transient int
mask

The actions mask.

private static final int
NONE

No actions.

private static final int
READ

Read action.

private static final long
private static final int
WRITE

Write action.

Constructor Summary

AccessConstructor and Description
public
PropertyPermission(String
the name of the PropertyPermission.
name
,
String
the actions string.
actions
)

Creates a new PropertyPermission object with the specified name.

pack-priv
PropertyPermission(String name, int mask)

Creates a PropertyPermission object with the specified name and a pre-calculated mask.

Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

true if obj is a PropertyPermission, and has the same name and actions as this PropertyPermission object.
equals
(Object
the object we are testing for equality with this object.
obj
)

Overrides java.security.BasicPermission.equals.

Checks two PropertyPermission objects for equality.

pack-priv static String

Returns:

the canonical string representation of the actions.
getActions
(int mask)

Return the canonical string representation of the actions.

public String

Returns:

the canonical string representation of the actions.
getActions
()

Overrides java.security.BasicPermission.getActions.

Returns the "canonical string representation" of the actions.

private static int

Returns:

the actions mask.
getMask
(String
the action string.
actions
)

Converts an actions String to an actions mask.

pack-priv int

Returns:

the actions mask.
getMask
()

Return the current action mask.

public int

Returns:

a hash code value for this object.
hashCode
()

Overrides java.security.BasicPermission.hashCode.

Returns the hash code value for this object.

public boolean

Returns:

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

Overrides java.security.BasicPermission.implies.

Checks if this PropertyPermission object "implies" the specified permission.

private void
init(int
the actions mask to use.
mask
)

initialize a PropertyPermission object.

public PermissionCollection

Returns:

a new PermissionCollection object suitable for storing PropertyPermissions.
newPermissionCollection
()

Overrides java.security.BasicPermission.newPermissionCollection.

Returns a new PermissionCollection object for storing PropertyPermission objects.

private synchronized void
readObject(ObjectInputStream
the ObjectInputStream from which data is read
s
)

Hides java.security.BasicPermission.readObject.

readObject is called to restore the state of the PropertyPermission from a stream.

private synchronized void
writeObject(ObjectOutputStream s)

WriteObject is called to save the state of the PropertyPermission to a stream.

Field Detail

actionsback to summary
private String actions

The actions string.

ALLback to summary
private static final int ALL

All actions (read,write);

maskback to summary
private transient int mask

The actions mask.

NONEback to summary
private static final int NONE

No actions.

READback to summary
private static final int READ

Read action.

serialVersionUIDback to summary
private static final long serialVersionUID

Hides java.security.BasicPermission.serialVersionUID.

Annotations
@Serial
WRITEback to summary
private static final int WRITE

Write action.

Constructor Detail

PropertyPermissionback to summary
public PropertyPermission(String name, String actions)

Creates a new PropertyPermission object with the specified name. The name is the name of the system property, and actions contains a comma-separated list of the desired actions granted on the property. Possible actions are "read" and "write".

Parameters
name:String

the name of the PropertyPermission.

actions:String

the actions string.

Exceptions
NullPointerException:
if name is null.
IllegalArgumentException:
if name is empty or if actions is invalid.
PropertyPermissionback to summary
pack-priv PropertyPermission(String name, int mask)

Creates a PropertyPermission object with the specified name and a pre-calculated mask. Avoids the overhead of re-computing the mask. Called by PropertyPermissionCollection.

Method Detail

equalsback to summary
public boolean equals(Object obj)

Overrides java.security.BasicPermission.equals.

Checks two PropertyPermission objects for equality. Checks that obj is a PropertyPermission, and has the same name and actions as this object.

Parameters
obj:Object

the object we are testing for equality with this object.

Returns:boolean

true if obj is a PropertyPermission, and has the same name and actions as this PropertyPermission object.

Annotations
@Override
getActionsback to summary
pack-priv static String getActions(int mask)

Return the canonical string representation of the actions. Always returns present actions in the following order: read, write.

Returns:String

the canonical string representation of the actions.

getActionsback to summary
public String getActions()

Overrides java.security.BasicPermission.getActions.

Returns the "canonical string representation" of the actions. That is, this method always returns present actions in the following order: read, write. For example, if this PropertyPermission object allows both write and read actions, a call to getActions will return the string "read,write".

Returns:String

the canonical string representation of the actions.

Annotations
@Override
getMaskback to summary
private static int getMask(String actions)

Converts an actions String to an actions mask.

Parameters
actions:String

the action string.

Returns:int

the actions mask.

getMaskback to summary
pack-priv int getMask()

Return the current action mask. Used by the PropertyPermissionCollection

Returns:int

the actions mask.

hashCodeback to summary
public int hashCode()

Overrides java.security.BasicPermission.hashCode.

Returns the hash code value for this object. The hash code used is the hash code of this permissions name, that is, getName().hashCode(), where getName is from the Permission superclass.

Returns:int

a hash code value for this object.

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

Overrides java.security.BasicPermission.implies.

Checks if this PropertyPermission object "implies" the specified permission.

More specifically, this method returns true if:

  • p is an instanceof PropertyPermission,
  • p's actions are a subset of this object's actions, and
  • p's name is implied by this object's name. For example, "java.*" implies "java.home".
Parameters
p:Permission

the permission to check against.

Returns:boolean

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

Annotations
@Override
initback to summary
private void init(int mask)

initialize a PropertyPermission object. Common to all constructors. Also called during de-serialization.

Parameters
mask:int

the actions mask to use.

newPermissionCollectionback to summary
public PermissionCollection newPermissionCollection()

Overrides java.security.BasicPermission.newPermissionCollection.

Returns a new PermissionCollection object for storing PropertyPermission objects.

Returns:PermissionCollection

a new PermissionCollection object suitable for storing PropertyPermissions.

Annotations
@Override
readObjectback to summary
private synchronized void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException

Hides java.security.BasicPermission.readObject.

readObject is called to restore the state of the PropertyPermission from a stream.

Parameters
s:ObjectInputStream

Doc from java.security.BasicPermission.readObject.

the ObjectInputStream from which data is read

Annotations
@Serial
Exceptions
IOException:

Doc from java.security.BasicPermission.readObject.

if an I/O error occurs

ClassNotFoundException:

Doc from java.security.BasicPermission.readObject.

if a serialized class cannot be loaded

writeObjectback to summary
private synchronized void writeObject(ObjectOutputStream s) throws IOException

WriteObject is called to save the state of the PropertyPermission to a stream. The actions are serialized, and the superclass takes care of the name.

Annotations
@Serial