Class PagePermission
- All Implemented Interfaces:
java.io.Serializable
,java.security.Guard
public final class PagePermission extends java.security.Permission implements java.io.Serializable
Permission to perform an operation on a single page or collection of pages in
a given wiki. Permission actions include: view
,
edit
(edit the text of a wiki page), comment
,
upload
, modify
(edit text and upload
attachments), delete
and rename
.
The target of a permission is a single page or collection in a given wiki. The syntax for the target is the wiki name, followed by a colon (:) and the name of the page. "All wikis" can be specified using a wildcard (*). Page collections may also be specified using a wildcard. For pages, the wildcard may be a prefix, suffix, or all by itself. Examples of targets include:
*:*
*:JanneJalkanen
*:Jalkanen
*:Janne*
mywiki:JanneJalkanen
mywiki:*Jalkanen
mywiki:Janne*
For a given target, certain permissions imply others:
delete
andrename
implyedit
modify
impliesedit
andupload
edit
impliescomment
andview
comment
andupload
implyview
Targets that do not include a wiki prefix never imply others.
- Since:
- 2.3
- See Also:
- Serialized Form
-
Field Summary
Fields Modifier and Type Field Description static PagePermission
COMMENT
A static instance of the comment permission.static java.lang.String
COMMENT_ACTION
Action name for the comment permission.protected static int
COMMENT_MASK
static PagePermission
DELETE
A static instance of the delete permission.static java.lang.String
DELETE_ACTION
Action name for the delete permission.protected static int
DELETE_MASK
static PagePermission
EDIT
A static instance of the edit permission.static java.lang.String
EDIT_ACTION
Action name for the edit permission.protected static int
EDIT_MASK
static PagePermission
MODIFY
A static instance of the modify permission.static java.lang.String
MODIFY_ACTION
Action name for the modify permission.protected static int
MODIFY_MASK
static PagePermission
RENAME
A static instance of the rename permission.static java.lang.String
RENAME_ACTION
Action name for the rename permission.protected static int
RENAME_MASK
static PagePermission
UPLOAD
A static instance of the upload permission.static java.lang.String
UPLOAD_ACTION
Action name for the upload permission.protected static int
UPLOAD_MASK
static PagePermission
VIEW
A static instance of the view permission.static java.lang.String
VIEW_ACTION
Action name for the view permission.protected static int
VIEW_MASK
-
Constructor Summary
Constructors Modifier Constructor Description protected
PagePermission()
For serialization purposes.PagePermission(java.lang.String page, java.lang.String actions)
Creates a new PagePermission for a specified page name and set of actions.PagePermission(Page page, java.lang.String actions)
Creates a new PagePermission for a specified page and set of actions. -
Method Summary
Modifier and Type Method Description protected static int
createMask(java.lang.String actions)
Private method that creates a binary mask based on the actions specified.boolean
equals(java.lang.Object obj)
Two PagePermission objects are considered equal if their actions (after normalization), wiki and target are equal.java.lang.String
getActions()
Returns the actions for this permission: "view", "edit", "comment", "modify", "upload" or "delete".java.lang.String
getPage()
Returns the name of the wiki page represented by this permission.java.lang.String
getWiki()
Returns the name of the wiki containing the page represented by this permission; may return the wildcard string.int
hashCode()
Returns the hash code for this PagePermission.protected static int
impliedMask(int mask)
Creates an "implied mask" based on the actions originally assigned: for example, delete implies modify, comment, upload and view.boolean
implies(java.security.Permission permission)
PagePermission can only imply other PagePermissions; no other permission types are implied.protected static boolean
isSubset(java.lang.String superSet, java.lang.String subSet)
Determines whether one target string is a logical subset of the other.java.security.PermissionCollection
newPermissionCollection()
Returns a newAllPermissionCollection
.java.lang.String
toString()
Prints a human-readable representation of this permission.Methods inherited from class java.security.Permission
checkGuard, getName
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Field Details
-
COMMENT_ACTION
Action name for the comment permission.- See Also:
- Constant Field Values
-
DELETE_ACTION
Action name for the delete permission.- See Also:
- Constant Field Values
-
EDIT_ACTION
Action name for the edit permission.- See Also:
- Constant Field Values
-
MODIFY_ACTION
Action name for the modify permission.- See Also:
- Constant Field Values
-
RENAME_ACTION
Action name for the rename permission.- See Also:
- Constant Field Values
-
UPLOAD_ACTION
Action name for the upload permission.- See Also:
- Constant Field Values
-
VIEW_ACTION
Action name for the view permission.- See Also:
- Constant Field Values
-
COMMENT_MASK
- See Also:
- Constant Field Values
-
DELETE_MASK
- See Also:
- Constant Field Values
-
EDIT_MASK
- See Also:
- Constant Field Values
-
MODIFY_MASK
- See Also:
- Constant Field Values
-
RENAME_MASK
- See Also:
- Constant Field Values
-
UPLOAD_MASK
- See Also:
- Constant Field Values
-
VIEW_MASK
- See Also:
- Constant Field Values
-
COMMENT
A static instance of the comment permission. -
DELETE
A static instance of the delete permission. -
EDIT
A static instance of the edit permission. -
RENAME
A static instance of the rename permission. -
MODIFY
A static instance of the modify permission. -
UPLOAD
A static instance of the upload permission. -
VIEW
A static instance of the view permission.
-
-
Constructor Details
-
PagePermission
protected PagePermission()For serialization purposes. -
PagePermission
Creates a new PagePermission for a specified page name and set of actions. Page should include a prepended wiki name followed by a colon (:). If the wiki name is not supplied or starts with a colon, the page refers to no wiki in particular, and will never imply any other PagePermission.- Parameters:
page
- the wiki pageactions
- the allowed actions for this page
-
PagePermission
Creates a new PagePermission for a specified page and set of actions.- Parameters:
page
- The wikipage.actions
- A set of actions; a comma-separated list of actions.
-
-
Method Details
-
equals
Two PagePermission objects are considered equal if their actions (after normalization), wiki and target are equal.- Specified by:
equals
in classjava.security.Permission
- Parameters:
obj
-- Returns:
-
getActions
Returns the actions for this permission: "view", "edit", "comment", "modify", "upload" or "delete". The actions will always be sorted in alphabetic order, and will always appear in lower case.- Specified by:
getActions
in classjava.security.Permission
- Returns:
-
getPage
Returns the name of the wiki page represented by this permission.- Returns:
- the page name
-
getWiki
Returns the name of the wiki containing the page represented by this permission; may return the wildcard string.- Returns:
- the wiki
-
hashCode
Returns the hash code for this PagePermission.- Specified by:
hashCode
in classjava.security.Permission
- Returns:
-
implies
PagePermission can only imply other PagePermissions; no other permission types are implied. One PagePermission implies another if its actions if three conditions are met:
- The other PagePermission's wiki is equal to, or a subset of, that of this permission. This permission's wiki is considered a superset of the other if it contains a matching prefix plus a wildcard, or a wildcard followed by a matching suffix.
- The other PagePermission's target is equal to, or a subset of, the target specified by this permission. This permission's target is considered a superset of the other if it contains a matching prefix plus a wildcard, or a wildcard followed by a matching suffix.
- All of other PagePermission's actions are equal to, or a subset of, those of this permission
- Specified by:
implies
in classjava.security.Permission
- Parameters:
permission
-- Returns:
- See Also:
Permission.implies(java.security.Permission)
-
newPermissionCollection
Returns a newAllPermissionCollection
.- Overrides:
newPermissionCollection
in classjava.security.Permission
- Returns:
- See Also:
Permission.newPermissionCollection()
-
toString
Prints a human-readable representation of this permission.- Overrides:
toString
in classjava.security.Permission
- Returns:
- Something human-readable
- See Also:
Object.toString()
-
impliedMask
Creates an "implied mask" based on the actions originally assigned: for example, delete implies modify, comment, upload and view.- Parameters:
mask
- binary mask for actions- Returns:
- binary mask for implied actions
-
isSubset
Determines whether one target string is a logical subset of the other.- Parameters:
superSet
- the prospective supersetsubSet
- the prospective subset- Returns:
- the results of the test, where
true
indicates thatsubSet
is a subset ofsuperSet
-
createMask
Private method that creates a binary mask based on the actions specified. This is used byimplies(Permission)
.- Parameters:
actions
- the actions for this permission, separated by commas- Returns:
- the binary actions mask
-