# Class GenericGroup<UD extends UserDatabase>

java.lang.Object
org.apache.catalina.users.AbstractGroup
org.apache.catalina.users.GenericGroup<UD>

Type Parameters:
  `UD` - The specific type of UserDase with which this group is associated

All Implemented Interfaces:
  `Principal, Group`

public class GenericGroup<UD extends UserDatabase> extends AbstractGroup

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

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final UD`
`database`
The `UserDatabase` that owns this group.
`protected final CopyOnWriteArrayList<Role>`
`roles`
The set of `Role`s associated with this group.

### Fields inherited from class AbstractGroup

`description, groupname`

## Method Summary

Modifier and Type
Method
Description
`void`
`addRole(Role role)`
Add a new `Role` to those assigned specifically to this group.
`boolean`
`equals(Object obj)`
`Iterator<Role>`
`getRoles()`
Returns the set of `Role`s assigned specifically to this group.
`UserDatabase`
`getUserDatabase()`
Returns the `UserDatabase` within which this Group is defined.
`Iterator<User>`
`getUsers()`
Returns the set of `User`s that are members of this group.
`int`
`hashCode()`
`boolean`
`isInRole(Role role)`
Is this group specifically assigned the specified `Role`?
`void`
`removeRole(Role role)`
Remove a `Role` from those assigned to this group.
`void`
`removeRoles()`
Remove all `Role`s from those assigned to this group.

### Methods inherited from class AbstractGroup

`getDescription, getGroupname, getName, setDescription, setGroupname`

### Methods inherited from class Object

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

### Methods inherited from interface Principal

`implies, toString`

## Field Details

### database

protected final UD extends UserDatabase database
The `UserDatabase` that owns this group.

### roles

protected final CopyOnWriteArrayList<Role> roles
The set of `Role`s associated with this group.

## Method Details

### getRoles

public Iterator<Role> getRoles()
Description copied from interface: `Group`
Returns the set of `Role`s assigned specifically to this group.

Returns:
  the set of `Role`s assigned specifically to this group.

### getUserDatabase

public UserDatabase getUserDatabase()
Description copied from interface: `Group`
Returns the `UserDatabase` within which this Group is defined.

Returns:
  the `UserDatabase` within which this Group is defined.

### getUsers

public Iterator<User> getUsers()
Description copied from interface: `Group`
Returns the set of `User`s that are members of this group.

Returns:
  the set of `User`s that are members of this group.

### addRole

public void addRole(Role role)
Description copied from interface: `Group`
Add a new `Role` to those assigned specifically to this group.

Parameters:
  `role` - The new role

### isInRole

public boolean isInRole(Role role)
Description copied from interface: `Group`
Is this group specifically assigned the specified `Role`?

Parameters:
  `role` - The role to check
Returns:
  `true` if the group is assigned to the specified role otherwise `false`

### removeRole

public void removeRole(Role role)
Description copied from interface: `Group`
Remove a `Role` from those assigned to this group.

Parameters:
  `role` - The old role

### removeRoles

public void removeRoles()
Description copied from interface: `Group`
Remove all `Role`s from those assigned to this group.

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