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:
  `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
`protected UD` `database` The `UserDatabase` that owns this user.
`protected CopyOnWriteArrayList<Group>` `groups` The set of `Group`s that this user is a member of.
`protected 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
`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​(Object obj)`
`Iterator<Group>` `getGroups()` Return the set of `Group`s to which this user belongs.
`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​(String fullName)` Set the full name of this user.
`void` `setPassword​(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​(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 CopyOnWriteArrayList<Group> groups

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

#### roles

    protected final CopyOnWriteArrayList<Role> roles

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

### Method Detail

#### getGroups

    public 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 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​(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​(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​(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​(Object obj)

Specified by:
  `equals` in interface `Principal`
Overrides:
  `equals` in class `Object`

#### hashCode

    public int hashCode()

Specified by:
  `hashCode` in interface `Principal`
Overrides:
  `hashCode` in class `Object`