Package org.apache.catalina.users

## Class GenericUser<UD extends UserDatabase>

- java.lang.Object
- - org.apache.catalina.users.AbstractUser
  - - org.apache.catalina.users.GenericUser<UD>

- Type Parameters:
    `UD` - The specific type of UserDase with which this role is associated
  All Implemented Interfaces:
    `java.security.Principal`, `User`
  Direct Known Subclasses:
    `MemoryUser`

      public class GenericUser<UD extends UserDatabase>
      extends AbstractUser

  Concrete implementation of `User` for a `UserDatabase`.

  Author:
    Craig R. McClanahan

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected UD` | `database` | The `UserDatabase` that owns this user.
    `protected java.util.concurrent.CopyOnWriteArrayList<Group>` | `groups` | The set of `Group`s that this user is a member of.
    `protected java.util.concurrent.CopyOnWriteArrayList<Role>` | `roles` | The set of `Role`s associated with this user.

    - ### Fields inherited from class org.apache.catalina.users.AbstractUser

      `fullName, password, username`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addGroup​(Group group)` | Add a new `Group` to those this user belongs to.
    `void` | `addRole​(Role role)` | Add a new `Role` to those assigned specifically to this user.
    `boolean` | `equals​(java.lang.Object obj)` |
    `java.util.Iterator<Group>` | `getGroups()` | Return the set of `Group`s to which this user belongs.
    `java.util.Iterator<Role>` | `getRoles()` | Return the set of `Role`s assigned specifically to this user.
    `UserDatabase` | `getUserDatabase()` | Return the `UserDatabase` within which this User is defined.
    `int` | `hashCode()` |
    `boolean` | `isInGroup​(Group group)` | Is this user in the specified group?
    `boolean` | `isInRole​(Role role)` | Is this user specifically assigned the specified `Role`?
    `void` | `removeGroup​(Group group)` | Remove a `Group` from those this user belongs to.
    `void` | `removeGroups()` | Remove all `Group`s from those this user belongs to.
    `void` | `removeRole​(Role role)` | Remove a `Role` from those assigned to this user.
    `void` | `removeRoles()` | Remove all `Role`s from those assigned to this user.
    `void` | `setFullName​(java.lang.String fullName)` | Set the full name of this user.
    `void` | `setPassword​(java.lang.String password)` | Set the logon password of this user, optionally prefixed with the identifier of an encoding scheme surrounded by curly braces, such as `{md5}xxxxx`.
    `void` | `setUsername​(java.lang.String username)` | Set the logon username of this user, which must be unique within the scope of a `UserDatabase`.

    - ### Methods inherited from class org.apache.catalina.users.AbstractUser

      `getFullName, getName, getPassword, getUsername`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.security.Principal

      `implies, toString`

- - ### Field Detail

    - #### database

          protected final UD extends UserDatabase database

      The `UserDatabase` that owns this user.

    - #### groups

          protected final java.util.concurrent.CopyOnWriteArrayList<Group> groups

      The set of `Group`s that this user is a member of.

    - #### roles

          protected final java.util.concurrent.CopyOnWriteArrayList<Role> roles

      The set of `Role`s associated with this user.

  - ### Method Detail

    - #### getGroups

          public java.util.Iterator<Group> getGroups()

      Return the set of `Group`s to which this user belongs.
      Specified by:
        `getGroups` in interface `User`
      Specified by:
        `getGroups` in class `AbstractUser`
      Returns:
        the set of `Group`s to which this user belongs.

    - #### getRoles

          public java.util.Iterator<Role> getRoles()

      Return the set of `Role`s assigned specifically to this user.
      Specified by:
        `getRoles` in interface `User`
      Specified by:
        `getRoles` in class `AbstractUser`
      Returns:
        the set of `Role`s assigned specifically to this user.

    - #### getUserDatabase

          public UserDatabase getUserDatabase()

      Return the `UserDatabase` within which this User is defined.
      Returns:
        the `UserDatabase` within which this User is defined.

    - #### addGroup

          public void addGroup​(Group group)

      Add a new `Group` to those this user belongs to.
      Specified by:
        `addGroup` in interface `User`
      Specified by:
        `addGroup` in class `AbstractUser`
      Parameters:
        `group` - The new group

    - #### addRole

          public void addRole​(Role role)

      Add a new `Role` to those assigned specifically to this user.
      Specified by:
        `addRole` in interface `User`
      Specified by:
        `addRole` in class `AbstractUser`
      Parameters:
        `role` - The new role

    - #### isInGroup

          public boolean isInGroup​(Group group)

      Is this user in the specified group?
      Specified by:
        `isInGroup` in interface `User`
      Specified by:
        `isInGroup` in class `AbstractUser`
      Parameters:
        `group` - The group to check
      Returns:
        `true` if the user is in the specified group

    - #### isInRole

          public boolean isInRole​(Role role)

      Is this user specifically assigned the specified `Role`? This method does NOT check for roles inherited based on `Group` membership.
      Specified by:
        `isInRole` in interface `User`
      Specified by:
        `isInRole` in class `AbstractUser`
      Parameters:
        `role` - The role to check
      Returns:
        `true` if the user has the specified role

    - #### removeGroup

          public void removeGroup​(Group group)

      Remove a `Group` from those this user belongs to.
      Specified by:
        `removeGroup` in interface `User`
      Specified by:
        `removeGroup` in class `AbstractUser`
      Parameters:
        `group` - The old group

    - #### removeGroups

          public void removeGroups()

      Remove all `Group`s from those this user belongs to.
      Specified by:
        `removeGroups` in interface `User`
      Specified by:
        `removeGroups` in class `AbstractUser`

    - #### removeRole

          public void removeRole​(Role role)

      Remove a `Role` from those assigned to this user.
      Specified by:
        `removeRole` in interface `User`
      Specified by:
        `removeRole` in class `AbstractUser`
      Parameters:
        `role` - The old role

    - #### removeRoles

          public void removeRoles()

      Remove all `Role`s from those assigned to this user.
      Specified by:
        `removeRoles` in interface `User`
      Specified by:
        `removeRoles` in class `AbstractUser`

    - #### setFullName

          public void setFullName​(java.lang.String fullName)

      Description copied from class: `AbstractUser`
      Set the full name of this user.
      Specified by:
        `setFullName` in interface `User`
      Overrides:
        `setFullName` in class `AbstractUser`
      Parameters:
        `fullName` - The new full name

    - #### setPassword

          public void setPassword​(java.lang.String password)

      Description copied from class: `AbstractUser`
      Set the logon password of this user, optionally prefixed with the identifier of an encoding scheme surrounded by curly braces, such as `{md5}xxxxx`.
      Specified by:
        `setPassword` in interface `User`
      Overrides:
        `setPassword` in class `AbstractUser`
      Parameters:
        `password` - The new logon password

    - #### setUsername

          public void setUsername​(java.lang.String username)

      Description copied from class: `AbstractUser`
      Set the logon username of this user, which must be unique within the scope of a `UserDatabase`.
      Specified by:
        `setUsername` in interface `User`
      Overrides:
        `setUsername` in class `AbstractUser`
      Parameters:
        `username` - The new logon username

    - #### equals

          public boolean equals​(java.lang.Object obj)

      Specified by:
        `equals` in interface `java.security.Principal`
      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          public int hashCode()

      Specified by:
        `hashCode` in interface `java.security.Principal`
      Overrides:
        `hashCode` in class `java.lang.Object`