org.springframework.ldap.pool

## Class DelegatingContext

- java.lang.Object
- - org.springframework.ldap.pool.DelegatingContext

- All Implemented Interfaces:
    Context
  Direct Known Subclasses:
    DelegatingDirContext

      public class DelegatingContext
      extends Object
      implements Context

  Used by `PoolingContextSource` to wrap a `Context`, delegating most methods to the underlying context, retains a reference to the pool the context was checked out from and returns itself to the pool when `close()` is called.
  Author:
    Eric Dalquist

- - ### Field Summary

    - ### Fields inherited from interface javax.naming.Context

      `APPLET, AUTHORITATIVE, BATCHSIZE, DNS_URL, INITIAL_CONTEXT_FACTORY, LANGUAGE, OBJECT_FACTORIES, PROVIDER_URL, REFERRAL, SECURITY_AUTHENTICATION, SECURITY_CREDENTIALS, SECURITY_PRINCIPAL, SECURITY_PROTOCOL, STATE_FACTORIES, URL_PKG_PREFIXES`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DelegatingContext(org.apache.commons.pool.KeyedObjectPool keyedObjectPool, Context delegateContext, DirContextType dirContextType)` Create a new delegating context for the specified pool, context and context type.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `addToEnvironment(String propName, Object propVal)`
    `protected void` | `assertOpen()`
    `void` | `bind(Name name, Object obj)`
    `void` | `bind(String name, Object obj)`
    `void` | `close()`
    `Name` | `composeName(Name name, Name prefix)`
    `String` | `composeName(String name, String prefix)`
    `Context` | `createSubcontext(Name name)`
    `Context` | `createSubcontext(String name)`
    `void` | `destroySubcontext(Name name)`
    `void` | `destroySubcontext(String name)`
    `boolean` | `equals(Object obj)`
    `Context` | `getDelegateContext()`
    `Hashtable<?,?>` | `getEnvironment()`
    `Context` | `getInnermostDelegateContext()` Recursivley inspect delegates until a non-delegating context is found.
    `String` | `getNameInNamespace()`
    `NameParser` | `getNameParser(Name name)`
    `NameParser` | `getNameParser(String name)`
    `int` | `hashCode()`
    `NamingEnumeration<NameClassPair>` | `list(Name name)`
    `NamingEnumeration<NameClassPair>` | `list(String name)`
    `NamingEnumeration<Binding>` | `listBindings(Name name)`
    `NamingEnumeration<Binding>` | `listBindings(String name)`
    `Object` | `lookup(Name name)`
    `Object` | `lookup(String name)`
    `Object` | `lookupLink(Name name)`
    `Object` | `lookupLink(String name)`
    `void` | `rebind(Name name, Object obj)`
    `void` | `rebind(String name, Object obj)`
    `Object` | `removeFromEnvironment(String propName)`
    `void` | `rename(Name oldName, Name newName)`
    `void` | `rename(String oldName, String newName)`
    `String` | `toString()`
    `void` | `unbind(Name name)`
    `void` | `unbind(String name)`

    - ### Methods inherited from class java.lang.Object

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

- - ### Constructor Detail

    - #### DelegatingContext

          public DelegatingContext(org.apache.commons.pool.KeyedObjectPool keyedObjectPool,
                                   Context delegateContext,
                                   DirContextType dirContextType)

      Create a new delegating context for the specified pool, context and context type.
      Parameters:
        `keyedObjectPool` - The pool the delegate context was checked out from.
        `delegateContext` - The context to delegate operations to.
        `dirContextType` - The type of context, used as a key for the pool.
      Throws:
        `IllegalArgumentException` - if any of the arguments are null

  - ### Method Detail

    - #### getDelegateContext

          public Context getDelegateContext()

      Returns:
        The direct delegate for this context proxy

    - #### getInnermostDelegateContext

          public Context getInnermostDelegateContext()

      Recursivley inspect delegates until a non-delegating context is found.
      Returns:
        The innermost (real) Context that is being delegated to.

    - #### assertOpen

          protected void assertOpen()
                             throws NamingException

      Throws:
        `NamingException` - If the delegate is null, `close()` has been called.

    - #### equals

          public boolean equals(Object obj)

      Overrides:
        `equals` in class `Object`
      See Also:
        `Object.equals(java.lang.Object)`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`
      See Also:
        `Object.hashCode()`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`
      See Also:
        `Object.toString()`

    - #### addToEnvironment

          public Object addToEnvironment(String propName,
                                         Object propVal)
                                  throws NamingException

      Specified by:
        `addToEnvironment` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.addToEnvironment(java.lang.String, java.lang.Object)`

    - #### bind

          public void bind(Name name,
                           Object obj)
                    throws NamingException

      Specified by:
        `bind` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.bind(javax.naming.Name, java.lang.Object)`

    - #### bind

          public void bind(String name,
                           Object obj)
                    throws NamingException

      Specified by:
        `bind` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.bind(java.lang.String, java.lang.Object)`

    - #### close

          public void close()
                     throws NamingException

      Specified by:
        `close` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.close()`

    - #### composeName

          public Name composeName(Name name,
                                  Name prefix)
                           throws NamingException

      Specified by:
        `composeName` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.composeName(javax.naming.Name, javax.naming.Name)`

    - #### composeName

          public String composeName(String name,
                                    String prefix)
                             throws NamingException

      Specified by:
        `composeName` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.composeName(java.lang.String, java.lang.String)`

    - #### createSubcontext

          public Context createSubcontext(Name name)
                                   throws NamingException

      Specified by:
        `createSubcontext` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.createSubcontext(javax.naming.Name)`

    - #### createSubcontext

          public Context createSubcontext(String name)
                                   throws NamingException

      Specified by:
        `createSubcontext` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.createSubcontext(java.lang.String)`

    - #### destroySubcontext

          public void destroySubcontext(Name name)
                                 throws NamingException

      Specified by:
        `destroySubcontext` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.destroySubcontext(javax.naming.Name)`

    - #### destroySubcontext

          public void destroySubcontext(String name)
                                 throws NamingException

      Specified by:
        `destroySubcontext` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.destroySubcontext(java.lang.String)`

    - #### getEnvironment

          public Hashtable<?,?> getEnvironment()
                                        throws NamingException

      Specified by:
        `getEnvironment` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.getEnvironment()`

    - #### getNameInNamespace

          public String getNameInNamespace()
                                    throws NamingException

      Specified by:
        `getNameInNamespace` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.getNameInNamespace()`

    - #### getNameParser

          public NameParser getNameParser(Name name)
                                   throws NamingException

      Specified by:
        `getNameParser` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.getNameParser(javax.naming.Name)`

    - #### getNameParser

          public NameParser getNameParser(String name)
                                   throws NamingException

      Specified by:
        `getNameParser` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.getNameParser(java.lang.String)`

    - #### list

          public NamingEnumeration<NameClassPair> list(Name name)
                                                throws NamingException

      Specified by:
        `list` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.list(javax.naming.Name)`

    - #### list

          public NamingEnumeration<NameClassPair> list(String name)
                                                throws NamingException

      Specified by:
        `list` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.list(java.lang.String)`

    - #### listBindings

          public NamingEnumeration<Binding> listBindings(Name name)
                                                  throws NamingException

      Specified by:
        `listBindings` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.listBindings(javax.naming.Name)`

    - #### listBindings

          public NamingEnumeration<Binding> listBindings(String name)
                                                  throws NamingException

      Specified by:
        `listBindings` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.listBindings(java.lang.String)`

    - #### lookup

          public Object lookup(Name name)
                        throws NamingException

      Specified by:
        `lookup` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.lookup(javax.naming.Name)`

    - #### lookup

          public Object lookup(String name)
                        throws NamingException

      Specified by:
        `lookup` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.lookup(java.lang.String)`

    - #### lookupLink

          public Object lookupLink(Name name)
                            throws NamingException

      Specified by:
        `lookupLink` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.lookupLink(javax.naming.Name)`

    - #### lookupLink

          public Object lookupLink(String name)
                            throws NamingException

      Specified by:
        `lookupLink` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.lookupLink(java.lang.String)`

    - #### rebind

          public void rebind(Name name,
                             Object obj)
                      throws NamingException

      Specified by:
        `rebind` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.rebind(javax.naming.Name, java.lang.Object)`

    - #### rebind

          public void rebind(String name,
                             Object obj)
                      throws NamingException

      Specified by:
        `rebind` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.rebind(java.lang.String, java.lang.Object)`

    - #### removeFromEnvironment

          public Object removeFromEnvironment(String propName)
                                       throws NamingException

      Specified by:
        `removeFromEnvironment` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.removeFromEnvironment(java.lang.String)`

    - #### rename

          public void rename(Name oldName,
                             Name newName)
                      throws NamingException

      Specified by:
        `rename` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.rename(javax.naming.Name, javax.naming.Name)`

    - #### rename

          public void rename(String oldName,
                             String newName)
                      throws NamingException

      Specified by:
        `rename` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.rename(java.lang.String, java.lang.String)`

    - #### unbind

          public void unbind(Name name)
                      throws NamingException

      Specified by:
        `unbind` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.unbind(javax.naming.Name)`

    - #### unbind

          public void unbind(String name)
                      throws NamingException

      Specified by:
        `unbind` in interface `Context`
      Throws:
        `NamingException`
      See Also:
        `Context.unbind(java.lang.String)`