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: viewedit (edit the text of a wiki page), commentuploadmodify (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 Details

  • Constructor Details

    • PagePermission

      protected PagePermission()
      For serialization purposes.
    • 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

      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()
    • impliedMask

      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.
      Parameters:
      mask - binary mask for actions
      Returns:
      binary mask for implied actions
    • isSubset

      protected static boolean isSubset​(String superSet, String subSet)
      Determines whether one target string is a logical subset of the other.
      Parameters:
      superSet - the prospective superset
      subSet - the prospective subset
      Returns:
      the results of the test, where true indicates that subSet is a subset of superSet
    • createMask

      protected static int createMask​(String actions)
      Private method that creates a binary mask based on the actions specified. This is used by implies(Permission).
      Parameters:
      actions - the actions for this permission, separated by commas
      Returns:
      the binary actions mask