Class XMLGroupDatabase

java.lang.Object
org.apache.wiki.auth.authorize.XMLGroupDatabase
All Implemented Interfaces:
GroupDatabase

public class XMLGroupDatabase
extends java.lang.Object
implements GroupDatabase

GroupDatabase implementation for loading, persisting and storing wiki groups, using an XML file for persistence. Group entries are simple <group> elements under the root. Each group member is representated by a <member> element. For example:

<groups>
  <group name="TV" created="Jun 20, 2006 2:50:54 PM" lastModified="Jan 21, 2006 2:50:54 PM">
    <member principal="Archie Bunker" />
    <member principal="BullwinkleMoose" />
    <member principal="Fred Friendly" />
  </group>
  <group name="Literature" created="Jun 22, 2006 2:50:54 PM" lastModified="Jan 23, 2006 2:50:54 PM">
    <member principal="Charles Dickens" />
    <member principal="Homer" />
  </group>
</groups>
Since:
2.4.17
  • Field Summary

    Fields
    Modifier and Type Field Description
    static java.lang.String PROP_DATABASE
    The jspwiki.properties property specifying the file system location of the group database.
  • Constructor Summary

    Constructors
    Constructor Description
    XMLGroupDatabase()  
  • Method Summary

    Modifier and Type Method Description
    void delete​(Group group)
    Looks up and deletes a Group from the group database.
    Group[] groups()
    Returns all wiki groups that are stored in the GroupDatabase as an array of Group objects.
    void initialize​(Engine engine, java.util.Properties props)
    Initializes the group database based on values from a Properties object.
    void save​(Group group, java.security.Principal modifier)
    Saves a Group to the group database.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • PROP_DATABASE

      public static final java.lang.String PROP_DATABASE
      The jspwiki.properties property specifying the file system location of the group database.
      See Also:
      Constant Field Values
  • Constructor Details

  • Method Details

    • delete

      public void delete​(Group group) throws WikiSecurityException
      Looks up and deletes a Group from the group database. If the group database does not contain the supplied Group. this method throws a NoSuchPrincipalException. The method commits the results of the delete to persistent storage.
      Specified by:
      delete in interface GroupDatabase
      Parameters:
      group - the group to remove
      Throws:
      WikiSecurityException - if the database does not contain the supplied group (thrown as NoSuchPrincipalException) or if the commit did not succeed
    • groups

      public Group[] groups() throws WikiSecurityException
      Returns all wiki groups that are stored in the GroupDatabase as an array of Group objects. If the database does not contain any groups, this method will return a zero-length array. This method causes back-end storage to load the entire set of group; thus, it should be called infrequently (e.g., at initialization time).
      Specified by:
      groups in interface GroupDatabase
      Returns:
      the wiki groups
      Throws:
      WikiSecurityException - if the groups cannot be returned by the back-end
    • initialize

      public void initialize​(Engine engine, java.util.Properties props) throws NoRequiredPropertyException, WikiSecurityException
      Initializes the group database based on values from a Properties object. The properties object must contain a file path to the XML database file whose key is PROP_DATABASE.
      Specified by:
      initialize in interface GroupDatabase
      Parameters:
      engine - the wiki engine
      props - the properties used to initialize the group database
      Throws:
      NoRequiredPropertyException - if the user database cannot be located, parsed, or opened
      WikiSecurityException - if the database could not be initialized successfully
    • save

      public void save​(Group group, java.security.Principal modifier) throws WikiSecurityException
      Saves a Group to the group database. Note that this method must fail, and throw an IllegalArgumentException, if the proposed group is the same name as one of the built-in Roles: e.g., Admin, Authenticated, etc. The database is responsible for setting create/modify timestamps, upon a successful save, to the Group. The method commits the results of the delete to persistent storage.
      Specified by:
      save in interface GroupDatabase
      Parameters:
      group - the Group to save
      modifier - the user who saved the Group
      Throws:
      WikiSecurityException - if the Group could not be saved successfully