Class JDBCGroupDatabase

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

public class JDBCGroupDatabase
extends java.lang.Object
implements GroupDatabase

Implementation of GroupDatabase that persists Group objects to a JDBC DataSource, as might typically be provided by a web container. This implementation looks up the JDBC DataSource using JNDI. The JNDI name of the datasource, backing table and mapped columns used by this class can be overridden by adding settings in jspwiki.properties.

Configurable properties are these:

Property Default Definition
jspwiki.groupdatabase.datasource jdbc/GroupDatabase The JNDI name of the DataSource
jspwiki.groupdatabase.table groups The table that stores the groups
jspwiki.groupdatabase.membertable group_members The table that stores the names of group members
jspwiki.groupdatabase.created created The column containing the group's creation timestamp
jspwiki.groupdatabase.creator creator The column containing the group creator's name
jspwiki.groupdatabase.name name The column containing the group's name
jspwiki.groupdatabase.member member The column containing the group member's name
jspwiki.groupdatabase.modified modified The column containing the group's last-modified timestamp
jspwiki.groupdatabase.modifier modifier The column containing the name of the user who last modified the group

This class is typically used in conjunction with a web container's JNDI resource factory. For example, Tomcat versions 4 and higher provide a basic JNDI factory for registering DataSources. To give JSPWiki access to the JNDI resource named by jdbc/GroupDatabase, you would declare the datasource resource similar to this:

<Context ...>
  ...
  <Resource name="jdbc/GroupDatabase" auth="Container"
    type="javax.sql.DataSource" username="dbusername" password="dbpassword"
    driverClassName="org.hsql.jdbcDriver" url="jdbc:HypersonicSQL:database"
    maxActive="8" maxIdle="4"/>
 ...
</Context>

JDBC driver JARs should be added to Tomcat's common/lib directory. For more Tomcat 5.5 JNDI configuration examples, see http://tomcat.apache.org/tomcat-5.5-doc/jndi-resources-howto.html.

JDBCGroupDatabase commits changes as transactions if the back-end database supports them. Changes are made immediately (during the save(Group, Principal) method).

Since:
2.3
  • Field Summary

    Fields
    Modifier and Type Field Description
    static java.lang.String DEFAULT_GROUPDB_CREATED
    Default column name that stores the the group creation timestamps.
    static java.lang.String DEFAULT_GROUPDB_CREATOR
    Default column name that stores group creator names.
    static java.lang.String DEFAULT_GROUPDB_DATASOURCE
    Default column name that stores the JNDI name of the DataSource.
    static java.lang.String DEFAULT_GROUPDB_MEMBER
    Default column name that stores group member names.
    static java.lang.String DEFAULT_GROUPDB_MEMBER_TABLE
    Default column name that stores the names of group members.
    static java.lang.String DEFAULT_GROUPDB_MODIFIED
    Default column name that stores group last-modified timestamps.
    static java.lang.String DEFAULT_GROUPDB_MODIFIER
    Default column name that stores names of users who last modified groups.
    static java.lang.String DEFAULT_GROUPDB_NAME
    Default column name that stores the group names.
    static java.lang.String DEFAULT_GROUPDB_TABLE
    Default table name for the table that stores groups.
    protected static org.apache.log4j.Logger log  
    static java.lang.String PROP_GROUPDB_CREATED
    The column containing the group's creation timestamp.
    static java.lang.String PROP_GROUPDB_CREATOR
    The column containing the group creator's name.
    static java.lang.String PROP_GROUPDB_DATASOURCE
    The JNDI name of the DataSource.
    static java.lang.String PROP_GROUPDB_MEMBER
    The column containing the group member's name.
    static java.lang.String PROP_GROUPDB_MEMBER_TABLE
    The table that stores the names of group members.
    static java.lang.String PROP_GROUPDB_MODIFIED
    The column containing the group's last-modified timestamp.
    static java.lang.String PROP_GROUPDB_MODIFIER
    The column containing the name of the user who last modified the group.
    static java.lang.String PROP_GROUPDB_NAME
    The column containing the group's name.
    static java.lang.String PROP_GROUPDB_TABLE
    The table that stores the groups.
  • Constructor Summary

    Constructors
    Constructor Description
    JDBCGroupDatabase()  
  • 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