# 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()`
  `UserDatabase`
  `getUserDatabase()`
  `Iterator<User>`
  `getUsers()`
  `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()
    Returns:
      the set of `Role`s assigned specifically to this group.

  - ### getUserDatabase

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

  - ### getUsers

    public Iterator<User> getUsers()
    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`