# Class LdapReferralException

java.lang.Object
java.lang.Throwable
java.lang.Exception
javax.naming.NamingException
javax.naming.ReferralException
javax.naming.ldap.LdapReferralException

All Implemented Interfaces:
  `Serializable`

public abstract class LdapReferralException extends ReferralException
This abstract class is used to represent an LDAP referral exception. It extends the base `ReferralException` by providing a `getReferralContext()` method that accepts request controls. LdapReferralException is an abstract class. Concrete implementations of it determine its synchronization and serialization properties.

A `Control[]` array passed as a parameter to the `getReferralContext()` method is owned by the caller. The service provider will not modify the array or keep a reference to it, although it may keep references to the individual `Control` objects in the array.

Since:
  1.3
See Also:
  - Serialized Form

- ## Field Summary

  ### Fields declared in class NamingException

  `remainingName, resolvedName, resolvedObj, rootException`
  Modifier and Type
  Field
  Description
  `protected Name`
  `remainingName`
  Contains the remaining name that has not been resolved yet.
  `protected Name`
  `resolvedName`
  Contains the part of the name that has been successfully resolved.
  `protected Object`
  `resolvedObj`
  Contains the object to which resolution of the part of the name was successful.
  `protected Throwable`
  `rootException`
  Contains the original exception that caused this NamingException to be thrown.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `LdapReferralException()`
  Constructs a new instance of LdapReferralException.
  `protected`
  `LdapReferralException(String explanation)`
  Constructs a new instance of LdapReferralException using the explanation supplied.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract Context`
  `getReferralContext()`
  Retrieves the context at which to continue the method using the context's environment and no controls.
  `abstract Context`
  `getReferralContext(Hashtable<?,?> env)`
  Retrieves the context at which to continue the method using environment properties and no controls.
  `abstract Context`
  `getReferralContext(Hashtable<?,?> env, Control[] reqCtls)`
  Retrieves the context at which to continue the method using request controls and environment properties.

  ### Methods declared in class ReferralException

  `getReferralInfo, retryReferral, skipReferral`
  Modifier and Type
  Method
  Description
  `abstract Object`
  `getReferralInfo()`
  Retrieves information (such as URLs) related to this referral.
  `abstract void`
  `retryReferral()`
  Retries the referral currently being processed.
  `abstract boolean`
  `skipReferral()`
  Discards the referral about to be processed.

  ### Methods declared in class NamingException

  `appendRemainingComponent, appendRemainingName, getCause, getExplanation, getRemainingName, getResolvedName, getResolvedObj, getRootCause, initCause, setRemainingName, setResolvedName, setResolvedObj, setRootCause, toString, toString`
  Modifier and Type
  Method
  Description
  `void`
  `appendRemainingComponent(String name)`
  Add name as the last component in remaining name.
  `void`
  `appendRemainingName(Name name)`
  Add components from 'name' as the last components in remaining name.
  `Throwable`
  `getCause()`
  Returns the cause of this exception.
  `String`
  `getExplanation()`
  Retrieves the explanation associated with this exception.
  `Name`
  `getRemainingName()`
  Retrieves the remaining unresolved portion of the name.
  `Name`
  `getResolvedName()`
  Retrieves the leading portion of the name that was resolved successfully.
  `Object`
  `getResolvedObj()`
  Retrieves the object to which resolution was successful.
  `Throwable`
  `getRootCause()`
  Retrieves the root cause of this NamingException, if any.
  `Throwable`
  `initCause(Throwable cause)`
  Initializes the cause of this exception to the specified value.
  `void`
  `setRemainingName(Name name)`
  Sets the remaining name field of this exception.
  `void`
  `setResolvedName(Name name)`
  Sets the resolved name field of this exception.
  `void`
  `setResolvedObj(Object obj)`
  Sets the resolved object field of this exception.
  `void`
  `setRootCause(Throwable e)`
  Records the root cause of this NamingException.
  `String`
  `toString()`
  Generates the string representation of this exception.
  `String`
  `toString(boolean detail)`
  Generates the string representation in more detail.

  ### Methods declared in class Throwable

  `addSuppressed, fillInStackTrace, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, printStackTrace, printStackTrace, printStackTrace, setStackTrace`
  Modifier and Type
  Method
  Description
  `final void`
  `addSuppressed(Throwable exception)`
  Appends the specified exception to the exceptions that were suppressed in order to deliver this exception.
  `Throwable`
  `fillInStackTrace()`
  Fills in the execution stack trace.
  `String`
  `getLocalizedMessage()`
  Creates a localized description of this throwable.
  `String`
  `getMessage()`
  Returns the detail message string of this throwable.
  `StackTraceElement[]`
  `getStackTrace()`
  Provides programmatic access to the stack trace information printed by `Throwable.printStackTrace()`.
  `final Throwable[]`
  `getSuppressed()`
  Returns an array containing all of the exceptions that were suppressed, typically by the `try`-with-resources statement, in order to deliver this exception.
  `void`
  `printStackTrace()`
  Prints this throwable and its backtrace to the standard error stream.
  `void`
  `printStackTrace(PrintStream s)`
  Prints this throwable and its backtrace to the specified print stream.
  `void`
  `printStackTrace(PrintWriter s)`
  Prints this throwable and its backtrace to the specified print writer.
  `void`
  `setStackTrace(StackTraceElement[] stackTrace)`
  Sets the stack trace elements that will be returned by `Throwable.getStackTrace()` and printed by `Throwable.printStackTrace()` and related methods.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### LdapReferralException

    protected LdapReferralException(String explanation)
    Constructs a new instance of LdapReferralException using the explanation supplied. All other fields are set to null.
    Parameters:
      `explanation` - Additional detail about this exception. Can be null.
    See Also:
      - `Throwable.getMessage()`

  - ### LdapReferralException

    protected LdapReferralException()
    Constructs a new instance of LdapReferralException. All fields are set to null.

- ## Method Details

  - ### getReferralContext

    public abstract Context getReferralContext() throws NamingException
    Retrieves the context at which to continue the method using the context's environment and no controls. The referral context is created using the environment properties of the context that threw the `ReferralException` and no controls.

    This method is equivalent to

    >      getReferralContext(ctx.getEnvironment(), null);

    where `ctx` is the context that threw the `ReferralException.`

    It is overridden in this class for documentation purposes only. See `ReferralException` for how to use this method.

    Specified by:
      `getReferralContext` in class `ReferralException`
    Returns:
      The non-null context at which to continue the method.
    Throws:
      `NamingException` - If a naming exception was encountered. Call either `retryReferral()` or `skipReferral()` to continue processing referrals.

  - ### getReferralContext

    public abstract Context getReferralContext(Hashtable<?,?> env) throws NamingException
    Retrieves the context at which to continue the method using environment properties and no controls. The referral context is created using `env` as its environment properties and no controls.

    This method is equivalent to

    >      getReferralContext(env, null);

    It is overridden in this class for documentation purposes only. See `ReferralException` for how to use this method.

    Specified by:
      `getReferralContext` in class `ReferralException`
    Parameters:
      `env` - The possibly null environment to use when retrieving the referral context. If null, no environment properties will be used.
    Returns:
      The non-null context at which to continue the method.
    Throws:
      `NamingException` - If a naming exception was encountered. Call either `retryReferral()` or `skipReferral()` to continue processing referrals.

  - ### getReferralContext

    public abstract Context getReferralContext(Hashtable<?,?> env, Control[] reqCtls) throws NamingException
    Retrieves the context at which to continue the method using request controls and environment properties. Regardless of whether a referral is encountered directly during a context operation, or indirectly, for example, during a search enumeration, the referral exception should provide a context at which to continue the operation. To continue the operation, the client program should re-invoke the method using the same arguments as the original invocation.

    `reqCtls` is used when creating the connection to the referred server. These controls will be used as the connection request controls for the context and context instances derived from the context. `reqCtls` will also be the context's request controls for subsequent context operations. See the `LdapContext` class description for details.

    This method should be used instead of the other two overloaded forms when the caller needs to supply request controls for creating the referral context. It might need to do this, for example, when it needs to supply special controls relating to authentication.

    Service provider implementors should read the "Service Provider" section in the `LdapContext` class description for implementation details.

    Parameters:
      `env` - The possibly null environment properties to use when for the new context. If null, the context is initialized with no environment properties.
      `reqCtls` - The possibly null request controls to use for the new context. If null or the empty array means use no request controls.
    Returns:
      The non-null context at which to continue the method.
    Throws:
      `NamingException` - If a naming exception was encountered. Call either `retryReferral()` or `skipReferral()` to continue processing referrals.