# Class NestedCredentialHandler

java.lang.Object
org.apache.catalina.realm.NestedCredentialHandler

All Implemented Interfaces:
  `CredentialHandler`

public class NestedCredentialHandler extends Object implements CredentialHandler
Nested credential handler that delegates to multiple handlers.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `NestedCredentialHandler()`
  Default constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addCredentialHandler(CredentialHandler handler)`
  Add a credential handler.
  `CredentialHandler[]`
  `getCredentialHandlers()`
  Get the credential handlers.
  `boolean`
  `matches(String inputCredentials, String storedCredentials)`
  Checks to see if the input credentials match the stored credentials
  `String`
  `mutate(String inputCredentials)`
  The input credentials will be passed to the first nested `CredentialHandler`.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### NestedCredentialHandler

    public NestedCredentialHandler()
    Default constructor.

- ## Method Details

  - ### matches

    public boolean matches(String inputCredentials, String storedCredentials)
    Description copied from interface: `CredentialHandler`
    Checks to see if the input credentials match the stored credentials
    Specified by:
      `matches` in interface `CredentialHandler`
    Parameters:
      `inputCredentials` - User provided credentials
      `storedCredentials` - Credentials stored in the `Realm`
    Returns:
      `true` if the inputCredentials match the storedCredentials, otherwise `false`

  - ### mutate

    public String mutate(String inputCredentials)
    The input credentials will be passed to the first nested `CredentialHandler`. If no nested `CredentialHandler` are configured then `null` will be returned. Generates the equivalent stored credentials for the given input credentials.
    Specified by:
      `mutate` in interface `CredentialHandler`
    Parameters:
      `inputCredentials` - User provided credentials
    Returns:
      The equivalent stored credentials for the given input credentials

  - ### addCredentialHandler

    public void addCredentialHandler(CredentialHandler handler)
    Add a credential handler.
    Parameters:
      `handler` - the handler to add

  - ### getCredentialHandlers

    public CredentialHandler[] getCredentialHandlers()
    Get the credential handlers.
    Returns:
      the credential handlers