# Class UserDatabaseRealm.UserDatabasePrincipal

java.lang.Object
org.apache.catalina.realm.GenericPrincipal
org.apache.catalina.realm.UserDatabaseRealm.UserDatabasePrincipal

All Implemented Interfaces:
  `Serializable, Principal, TomcatPrincipal`

Enclosing class:
  `UserDatabaseRealm`

public static final class UserDatabaseRealm.UserDatabasePrincipal extends GenericPrincipal
Principal implementation backed by a live `UserDatabase`. Roles are fetched from the database on each call rather than cached at construction time.

Since:
  4.1
See Also:
  - Serialized Form

## Field Summary

### Fields inherited from class GenericPrincipal

`attributes, gssCredential, loginContext, name, roles, userPrincipal`

## Constructor Summary

Constructors
Constructor
Description
`UserDatabasePrincipal(User user, UserDatabase database)`
Constructs a new UserDatabasePrincipal.

## Method Summary

Modifier and Type
Method
Description
`String[]`
`getRoles()`
Returns the set of roles associated with this user.
`boolean`
`hasRole(String role)`
Does the user represented by this Principal possess the specified role?

### Methods inherited from class GenericPrincipal

`equals, getAttribute, getAttributeNames, getGssCredential, getName, getUserPrincipal, hashCode, logout, setGssCredential, toString`

### Methods inherited from class Object

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

### Methods inherited from interface Principal

`implies`

## Constructor Details

### UserDatabasePrincipal

public UserDatabasePrincipal(User user, UserDatabase database)
Constructs a new UserDatabasePrincipal.

Parameters:
  `user` - The user
  `database` - The user database

## Method Details

### getRoles

public String[] getRoles()
Description copied from class: `GenericPrincipal`
Returns the set of roles associated with this user.

Overrides:
  `getRoles` in class `GenericPrincipal`
Returns:
  A cloned array of role names

### hasRole

public boolean hasRole(String role)
Description copied from class: `GenericPrincipal`
Does the user represented by this Principal possess the specified role?

Overrides:
  `hasRole` in class `GenericPrincipal`
Parameters:
  `role` - Role to be tested
Returns:
  `true` if this Principal has been assigned the given role, otherwise `false`