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
Modifier and Type
Field
Description
`protected final UD`
`database`
The `UserDatabase` that owns this user.
`protected final CopyOnWriteArrayList<Group>`
`groups`
The set of `Group`s that this user is a member of.
`protected final 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

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(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 Details

### 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 Details

### 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`