org.apache.catalina

## Interface UserDatabase

All Known Implementing Classes:
  MemoryUserDatabase

    public interface UserDatabase

Abstract representation of a database of `User`s and `Group`s that can be maintained by an application, along with definitions of corresponding `Role`s, and referenced by a `Realm` for authentication and access control.

Since:
  4.1
Author:
  Craig R. McClanahan

### Method Summary

Methods
`void` `close()` Finalize access to this user database.
`Group` `createGroup(String groupname, String description)` Create and return a new `Group` defined in this user database.
`Role` `createRole(String rolename, String description)` Create and return a new `Role` defined in this user database.
`User` `createUser(String username, String password, String fullName)` Create and return a new `User` defined in this user database.
`Group` `findGroup(String groupname)` Return the `Group` with the specified group name, if any; otherwise return `null`.
`Role` `findRole(String rolename)` Return the `Role` with the specified role name, if any; otherwise return `null`.
`User` `findUser(String username)` Return the `User` with the specified user name, if any; otherwise return `null`.
`Iterator<Group>` `getGroups()` Return the set of `Group`s defined in this user database.
`String` `getId()` Return the unique global identifier of this user database.
`Iterator<Role>` `getRoles()` Return the set of `Role`s defined in this user database.
`Iterator<User>` `getUsers()` Return the set of `User`s defined in this user database.
`void` `open()` Initialize access to this user database.
`void` `removeGroup(Group group)` Remove the specified `Group` from this user database.
`void` `removeRole(Role role)` Remove the specified `Role` from this user database.
`void` `removeUser(User user)` Remove the specified `User` from this user database.
`void` `save()` Save any updated information to the persistent storage location for this user database.

### Method Detail

#### getGroups

    Iterator<Group> getGroups()

Return the set of `Group`s defined in this user database.

#### getId

    String getId()

Return the unique global identifier of this user database.

#### getRoles

    Iterator<Role> getRoles()

Return the set of `Role`s defined in this user database.

#### getUsers

    Iterator<User> getUsers()

Return the set of `User`s defined in this user database.

#### close

    void close()
               throws Exception

Finalize access to this user database.

Throws:
  `Exception` - if any exception is thrown during closing

#### createGroup

    Group createGroup(String groupname,
                    String description)

Create and return a new `Group` defined in this user database.

Parameters:
  `groupname` - The group name of the new group (must be unique)
  `description` - The description of this group

#### createRole

    Role createRole(String rolename,
                  String description)

Create and return a new `Role` defined in this user database.

Parameters:
  `rolename` - The role name of the new role (must be unique)
  `description` - The description of this role

#### createUser

    User createUser(String username,
                  String password,
                  String fullName)

Create and return a new `User` defined in this user database.

Parameters:
  `username` - The logon username of the new user (must be unique)
  `password` - The logon password of the new user
  `fullName` - The full name of the new user

#### findGroup

    Group findGroup(String groupname)

Return the `Group` with the specified group name, if any; otherwise return `null`.

Parameters:
  `groupname` - Name of the group to return

#### findRole

    Role findRole(String rolename)

Return the `Role` with the specified role name, if any; otherwise return `null`.

Parameters:
  `rolename` - Name of the role to return

#### findUser

    User findUser(String username)

Return the `User` with the specified user name, if any; otherwise return `null`.

Parameters:
  `username` - Name of the user to return

#### open

    void open()
              throws Exception

Initialize access to this user database.

Throws:
  `Exception` - if any exception is thrown during opening

#### removeGroup

    void removeGroup(Group group)

Remove the specified `Group` from this user database.

Parameters:
  `group` - The group to be removed

#### removeRole

    void removeRole(Role role)

Remove the specified `Role` from this user database.

Parameters:
  `role` - The role to be removed

#### removeUser

    void removeUser(User user)

Remove the specified `User` from this user database.

Parameters:
  `user` - The user to be removed

#### save

    void save()
              throws Exception

Save any updated information to the persistent storage location for this user database.

Throws:
  `Exception` - if any exception is thrown during saving