Package org.apache.wiki.auth.permissions

## Class PagePermission

- java.lang.Object
- - java.security.Permission
  - - org.apache.wiki.auth.permissions.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` 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
`static PagePermission` `COMMENT` A static instance of the comment permission.
`static java.lang.String` `COMMENT_ACTION` Action name for the comment permission.
`static PagePermission` `DELETE` A static instance of the delete permission.
`static java.lang.String` `DELETE_ACTION` Action name for the delete permission.
`static PagePermission` `EDIT` A static instance of the edit permission.
`static java.lang.String` `EDIT_ACTION` Action name for the edit permission.
`static PagePermission` `MODIFY` A static instance of the modify permission.
`static java.lang.String` `MODIFY_ACTION` Action name for the modify permission.
`static PagePermission` `RENAME` A static instance of the rename permission.
`static java.lang.String` `RENAME_ACTION` Action name for the rename permission.
`static PagePermission` `UPLOAD` A static instance of the upload permission.
`static java.lang.String` `UPLOAD_ACTION` Action name for the upload permission.
`static PagePermission` `VIEW` A static instance of the view permission.
`static java.lang.String` `VIEW_ACTION` Action name for the view permission.

### Constructor Summary

Constructors
`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

All Methods Instance Methods Concrete Methods
`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.
`boolean` `implies​(java.security.Permission permission)` PagePermission can only imply other PagePermissions; no other permission types are implied.
`java.security.PermissionCollection` `newPermissionCollection()` Returns a new `AllPermissionCollection`.
`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 Detail

#### COMMENT_ACTION

    public static final java.lang.String COMMENT_ACTION

Action name for the comment permission.

See Also:
  Constant Field Values

#### DELETE_ACTION

    public static final java.lang.String DELETE_ACTION

Action name for the delete permission.

See Also:
  Constant Field Values

#### EDIT_ACTION

    public static final java.lang.String EDIT_ACTION

Action name for the edit permission.

See Also:
  Constant Field Values

#### MODIFY_ACTION

    public static final java.lang.String MODIFY_ACTION

Action name for the modify permission.

See Also:
  Constant Field Values

#### RENAME_ACTION

    public static final java.lang.String RENAME_ACTION

Action name for the rename permission.

See Also:
  Constant Field Values

#### UPLOAD_ACTION

    public static final java.lang.String UPLOAD_ACTION

Action name for the upload permission.

See Also:
  Constant Field Values

#### VIEW_ACTION

    public static final java.lang.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 Detail

#### PagePermission

    public PagePermission​(java.lang.String page,
                          java.lang.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,
                          java.lang.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 Detail

#### equals

    public boolean equals​(java.lang.Object obj)

Two PagePermission objects are considered equal if their actions (after normalization), wiki and target are equal.

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

#### getActions

    public java.lang.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 `java.security.Permission`
Returns:

#### getPage

    public java.lang.String getPage()

Returns the name of the wiki page represented by this permission.

Returns:
  the page name

#### getWiki

    public java.lang.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 `java.security.Permission`
Returns:

#### implies

    public boolean implies​(java.security.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 `java.security.Permission`
Parameters:
  `permission` -
Returns:
See Also:
  `Permission.implies(java.security.Permission)`

#### newPermissionCollection

    public java.security.PermissionCollection newPermissionCollection()

Returns a new `AllPermissionCollection`.

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

#### toString

    public java.lang.String toString()

Prints a human-readable representation of this permission.

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