Package 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

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `close()` | Finalize access to this user database.
    `Group` | `createGroup​(java.lang.String groupname, java.lang.String description)` | Create and return a new `Group` defined in this user database.
    `Role` | `createRole​(java.lang.String rolename, java.lang.String description)` | Create and return a new `Role` defined in this user database.
    `User` | `createUser​(java.lang.String username, java.lang.String password, java.lang.String fullName)` | Create and return a new `User` defined in this user database.
    `Group` | `findGroup​(java.lang.String groupname)` |
    `Role` | `findRole​(java.lang.String rolename)` |
    `User` | `findUser​(java.lang.String username)` |
    `java.util.Iterator<Group>` | `getGroups()` |
    `java.lang.String` | `getId()` |
    `java.util.Iterator<Role>` | `getRoles()` |
    `java.util.Iterator<User>` | `getUsers()` |
    `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

          java.util.Iterator<Group> getGroups()

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

    - #### getId

          java.lang.String getId()

      Returns:
        the unique global identifier of this user database.

    - #### getRoles

          java.util.Iterator<Role> getRoles()

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

    - #### getUsers

          java.util.Iterator<User> getUsers()

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

    - #### close

          void close()
              throws java.lang.Exception

      Finalize access to this user database.
      Throws:
        `java.lang.Exception` - if any exception is thrown during closing

    - #### createGroup

          Group createGroup​(java.lang.String groupname,
                            java.lang.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
      Returns:
        The new group

    - #### createRole

          Role createRole​(java.lang.String rolename,
                          java.lang.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
      Returns:
        The new role

    - #### createUser

          User createUser​(java.lang.String username,
                          java.lang.String password,
                          java.lang.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
      Returns:
        The new user

    - #### findGroup

          Group findGroup​(java.lang.String groupname)

      Parameters:
        `groupname` - Name of the group to return
      Returns:
        the `Group` with the specified group name, if any; otherwise return `null`.

    - #### findRole

          Role findRole​(java.lang.String rolename)

      Parameters:
        `rolename` - Name of the role to return
      Returns:
        the `Role` with the specified role name, if any; otherwise return `null`.

    - #### findUser

          User findUser​(java.lang.String username)

      Parameters:
        `username` - Name of the user to return
      Returns:
        the `User` with the specified user name, if any; otherwise return `null`.

    - #### open

          void open()
             throws java.lang.Exception

      Initialize access to this user database.
      Throws:
        `java.lang.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 java.lang.Exception

      Save any updated information to the persistent storage location for this user database.
      Throws:
        `java.lang.Exception` - if any exception is thrown during saving