Package org.apache.wiki.auth.permissions

# Class PagePermission

java.lang.Object
java.security.Permission
org.apache.wiki.auth.permissions.PagePermission

All Implemented Interfaces:
  `Serializable`, `Guard`

public final class PagePermission extends Permission implements 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` and `rename` imply `edit`
- `modify` implies `edit` and `upload`
- `edit` implies `comment` and `view`
- `comment` and `upload` imply `view`
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 final PagePermission`
`COMMENT`
A static instance of the comment permission.
`static final String`
`COMMENT_ACTION`
Action name for the comment permission.
`static final PagePermission`
`DELETE`
A static instance of the delete permission.
`static final String`
`DELETE_ACTION`
Action name for the delete permission.
`static final PagePermission`
`EDIT`
A static instance of the edit permission.
`static final String`
`EDIT_ACTION`
Action name for the edit permission.
`static final PagePermission`
`MODIFY`
A static instance of the modify permission.
`static final String`
`MODIFY_ACTION`
Action name for the modify permission.
`static final PagePermission`
`RENAME`
A static instance of the rename permission.
`static final String`
`RENAME_ACTION`
Action name for the rename permission.
`static final PagePermission`
`UPLOAD`
A static instance of the upload permission.
`static final String`
`UPLOAD_ACTION`
Action name for the upload permission.
`static final PagePermission`
`VIEW`
A static instance of the view permission.
`static final String`
`VIEW_ACTION`
Action name for the view permission.

## Constructor Summary

Constructors
Constructor
Description
`PagePermission(String page, String actions)`
Creates a new PagePermission for a specified page name and set of actions.
`PagePermission(Page page, String actions)`
Creates a new PagePermission for a specified page and set of actions.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`equals(Object obj)`
Two PagePermission objects are considered equal if their actions (after normalization), wiki and target are equal.
`String`
`getActions()`
Returns the actions for this permission: "view", "edit", "comment", "modify", "upload" or "delete".
`String`
`getPage()`
Returns the name of the wiki page represented by this permission.
`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.
`boolean`
`implies(Permission permission)`
PagePermission can only imply other PagePermissions; no other permission types are implied.
`PermissionCollection`
`newPermissionCollection()`
Returns a new `AllPermissionCollection`.
`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

public static final String COMMENT_ACTION
Action name for the comment permission.

See Also:
  - Constant Field Values

### DELETE_ACTION

public static final String DELETE_ACTION
Action name for the delete permission.

See Also:
  - Constant Field Values

### EDIT_ACTION

public static final String EDIT_ACTION
Action name for the edit permission.

See Also:
  - Constant Field Values

### MODIFY_ACTION

public static final String MODIFY_ACTION
Action name for the modify permission.

See Also:
  - Constant Field Values

### RENAME_ACTION

public static final String RENAME_ACTION
Action name for the rename permission.

See Also:
  - Constant Field Values

### UPLOAD_ACTION

public static final String UPLOAD_ACTION
Action name for the upload permission.

See Also:
  - Constant Field Values

### VIEW_ACTION

public static final String VIEW_ACTION
Action name for the view permission.

See Also:
  - Constant Field Values

### COMMENT

public static final PagePermission COMMENT
A static instance of the comment permission.

### DELETE

public static final PagePermission DELETE
A static instance of the delete permission.

### EDIT

public static final PagePermission EDIT
A static instance of the edit permission.

### RENAME

public static final PagePermission RENAME
A static instance of the rename permission.

### MODIFY

public static final PagePermission MODIFY
A static instance of the modify permission.

### UPLOAD

public static final PagePermission UPLOAD
A static instance of the upload permission.

### VIEW

public static final PagePermission VIEW
A static instance of the view permission.

## Constructor Details

### PagePermission

public PagePermission(String page, String actions)
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 page
  `actions` - the allowed actions for this page

### PagePermission

public PagePermission(Page page, String actions)
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

public boolean equals(Object obj)
Two PagePermission objects are considered equal if their actions (after normalization), wiki and target are equal.

Specified by:
  `equals` in class `Permission`
Parameters:
  `obj` -
Returns:

### getActions

public String 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 class `Permission`
Returns:

### getPage

public String getPage()
Returns the name of the wiki page represented by this permission.

Returns:
  the page name

### getWiki

public String getWiki()
Returns the name of the wiki containing the page represented by this permission; may return the wildcard string.

Returns:
  the wiki

### hashCode

public int hashCode()
Returns the hash code for this PagePermission.

Specified by:
  `hashCode` in class `Permission`
Returns:

### implies

public boolean implies(Permission permission)

PagePermission can only imply other PagePermissions; no other permission types are implied. One PagePermission implies another if its actions if three conditions are met:

1. 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.
2. 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.
3. All of other PagePermission's actions are equal to, or a subset of, those of this permission

Specified by:
  `implies` in class `Permission`
Parameters:
  `permission` -
Returns:
See Also:
  - `Permission.implies(java.security.Permission)`

### newPermissionCollection

public PermissionCollection newPermissionCollection()
Returns a new `AllPermissionCollection`.

Overrides:
  `newPermissionCollection` in class `Permission`
Returns:
See Also:
  - `Permission.newPermissionCollection()`

### toString

public String toString()
Prints a human-readable representation of this permission.

Overrides:
  `toString` in class `Permission`
Returns:
  Something human-readable
See Also:
  - `Object.toString()`