Class SingleContextSource
java.lang.Object
org.springframework.ldap.core.support.SingleContextSource
- All Implemented Interfaces:
org.springframework.beans.factory.DisposableBean
,ContextSource
public class SingleContextSource
extends Object
implements ContextSource, org.springframework.beans.factory.DisposableBean
A
ContextSource
to be used as a decorator around a target ContextSource
to make sure the target is never actually closed. Useful when working with e.g. paged results,
as these require the same target to be used.-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
A proxy for DirContext forwarding all operation to the target DirContext, but making sure that noclose
operations will be performed. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
destroy()
Destroy method that allows the target DirContext to be cleaned up when the SingleContextSource is not going to be used any more.static <T> T
doWithSingleContext
(ContextSource contextSource, LdapOperationsCallback<T> callback) Construct a SingleContextSource and execute the LdapOperationsCallback using the created instance.static <T> T
doWithSingleContext
(ContextSource contextSource, LdapOperationsCallback<T> callback, boolean useReadOnly, boolean ignorePartialResultException, boolean ignoreNameNotFoundException) Construct a SingleContextSource and execute the LdapOperationsCallback using the created instance.getContext
(String principal, String credentials) Gets aDirContext
instance authenticated using the supplied principal and credentials.Gets a read-onlyDirContext
.Gets a read-writeDirContext
instance.
-
Constructor Details
-
SingleContextSource
Constructor.- Parameters:
ctx
- the target DirContext.
-
-
Method Details
-
getReadOnlyContext
Description copied from interface:ContextSource
Gets a read-onlyDirContext
. The returnedDirContext
must be possible to perform read-only operations on.- Specified by:
getReadOnlyContext
in interfaceContextSource
- Returns:
- A DirContext instance, never null.
-
getReadWriteContext
Description copied from interface:ContextSource
Gets a read-writeDirContext
instance.- Specified by:
getReadWriteContext
in interfaceContextSource
- Returns:
- A
DirContext
instance, nevernull
.
-
getContext
Description copied from interface:ContextSource
Gets aDirContext
instance authenticated using the supplied principal and credentials. Typically to be used for plain authentication purposes. Note that this method will never make use of native Java LDAP pooling, even though this instance is configured to do so. This is to force password changes in the target directory to take effect as soon as possible.- Specified by:
getContext
in interfaceContextSource
- Parameters:
principal
- The principal (typically a distinguished name of a user in the LDAP tree) to use for authentication.credentials
- The credentials to use for authentication.- Returns:
- an authenticated
DirContext
instance, nevernull
.
-
destroy
public void destroy()Destroy method that allows the target DirContext to be cleaned up when the SingleContextSource is not going to be used any more.- Specified by:
destroy
in interfaceorg.springframework.beans.factory.DisposableBean
-
doWithSingleContext
public static <T> T doWithSingleContext(ContextSource contextSource, LdapOperationsCallback<T> callback) Construct a SingleContextSource and execute the LdapOperationsCallback using the created instance. This makes sure the same connection will be used for all operations inside the LdapOperationsCallback, which is particularly useful when working with e.g. Paged Results as these typically require the exact same connection to be used for all requests involving the same cookie. The SingleContextSource instance will be properly disposed of once the operation has been completed.By default, the
ContextSource.getReadWriteContext()
method will be used to create the DirContext instance to operate on.- Parameters:
contextSource
- The target ContextSource to retrieve a DirContext from.callback
- the callback to perform the Ldap operations.- Returns:
- the result returned from the callback.
- Since:
- 2.0
- See Also:
-
doWithSingleContext
public static <T> T doWithSingleContext(ContextSource contextSource, LdapOperationsCallback<T> callback, boolean useReadOnly, boolean ignorePartialResultException, boolean ignoreNameNotFoundException) Construct a SingleContextSource and execute the LdapOperationsCallback using the created instance. This makes sure the same connection will be used for all operations inside the LdapOperationsCallback, which is particularly useful when working with e.g. Paged Results as these typically require the exact same connection to be used for all requests involving the same cookie.. The SingleContextSource instance will be properly disposed of once the operation has been completed.- Parameters:
contextSource
- The target ContextSource to retrieve a DirContext fromcallback
- the callback to perform the Ldap operationsuseReadOnly
- iftrue
, use theContextSource.getReadOnlyContext()
method on the target ContextSource to get the actual DirContext instance, iffalse
, useContextSource.getReadWriteContext()
.ignorePartialResultException
- Used for populating this property on the created LdapTemplate instance.ignoreNameNotFoundException
- Used for populating this property on the created LdapTemplate instance.- Returns:
- the result returned from the callback.
- Since:
- 2.0
-