org.apache.wiki.auth.authorize
Class XMLGroupDatabase

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

public class XMLGroupDatabase
extends 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
protected static org.apache.log4j.Logger log
           
static String PROP_DATABASE
          The jspwiki.properties property specifying the file system location of the group database.
 
Constructor Summary
XMLGroupDatabase()
           
 
Method Summary
 void commit()
          Deprecated. there is no need to call this method because the save and delete methods contain their own commit logic
 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(WikiEngine engine, Properties props)
          Initializes the group database based on values from a Properties object.
 void save(Group group, 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 Detail

log

protected static final org.apache.log4j.Logger log

PROP_DATABASE

public static final String PROP_DATABASE
The jspwiki.properties property specifying the file system location of the group database.

See Also:
Constant Field Values
Constructor Detail

XMLGroupDatabase

public XMLGroupDatabase()
Method Detail

commit

public void commit()
            throws WikiSecurityException
Deprecated. there is no need to call this method because the save and delete methods contain their own commit logic

No-op method that in previous versions of JSPWiki was intended to atomically commit changes to the user database. Now, the save(Group, Principal) and delete(Group) methods are atomic themselves.

Specified by:
commit in interface GroupDatabase
Throws:
WikiSecurityException - never...

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(WikiEngine engine,
                       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,
                 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


Copyright © {inceptionYear}-2014 The Apache Software Foundation. All rights reserved.