T
- type of LdapConfigpublic abstract class AbstractLdap<T extends LdapConfig> extends Object implements BaseLdap
AbstractLdap
contains the functions for basic interaction with a
LDAP. Methods are provided for connecting, binding, querying and updating.Modifier and Type | Field and Description |
---|---|
protected static CopyResultHandler<Binding> |
BINDING_COPY_RESULT_HANDLER
Default copy binding handler.
|
protected T |
config
LDAP configuration environment.
|
protected ConnectionHandler |
connectionHandler
LDAP connection handler.
|
protected static CopyResultHandler<Object> |
COPY_RESULT_HANDLER
Default copy result handler.
|
protected org.apache.commons.logging.Log |
logger
Log for this class.
|
protected static CopyResultHandler<NameClassPair> |
NCP_COPY_RESULT_HANDLER
Default copy name class pair handler.
|
protected static CopyResultHandler<SearchResult> |
SR_COPY_RESULT_HANDLER
Default copy search result handler, used if none supplied.
|
Constructor and Description |
---|
AbstractLdap() |
Modifier and Type | Method and Description |
---|---|
void |
close()
This will close the connection to the LDAP.
|
protected boolean |
compare(String dn,
String filter,
Object[] filterArgs)
This will perform an LDAP compare operation with the supplied filter and
dn.
|
boolean |
connect()
This will establish a connection if one does not already exist by binding
to the LDAP using parameters given by
LdapConfig.getBindDn() and
LdapConfig.getBindCredential() . |
protected void |
create(String dn,
Attributes attrs)
This will create the supplied dn in the LDAP namespace with the supplied
attributes.
|
protected void |
delete(String dn)
This will delete the supplied dn from the LDAP namespace.
|
protected void |
finalize()
Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.
|
protected Attributes |
getAttributes(String dn,
String[] retAttrs,
AttributeHandler... handler)
This will return the matching attributes associated with the supplied dn.
|
protected LdapContext |
getContext()
This will return an initialized connection to the LDAP.
|
protected Iterator<SearchResult> |
getSchema(String dn)
This will return the LDAP schema associated with the supplied dn.
|
protected Iterator<NameClassPair> |
list(String dn)
This will enumerate the names bounds to the specified context, along with
the class names of objects bound to them.
|
protected Iterator<Binding> |
listBindings(String dn)
This will enumerate the names bounds to the specified context, along with
the objects bound to them.
|
protected void |
modifyAttributes(String dn,
int modOp,
Attributes attrs)
This will modify the supplied attributes for the supplied value given by
the modification operation.
|
protected void |
modifyAttributes(String dn,
ModificationItem[] mods)
This will modify the supplied dn using the supplied modifications.
|
protected void |
operationRetry(LdapContext ctx,
NamingException e,
int count)
Confirms whether the supplied exception matches an exception from
LdapConfig.getOperationRetryExceptions() and the supplied count is less
than LdapConfig.getOperationRetry() . |
protected Iterator<SearchResult> |
pagedSearch(String dn,
String filter,
Object[] filterArgs,
SearchControls searchControls,
SearchResultHandler... handler)
This will query the LDAP with the supplied dn, filter, filter arguments,
and search controls.
|
boolean |
reconnect()
This will close the current connection to the LDAP and establish a new
connection to the LDAP using
connect() . |
protected void |
rename(String oldDn,
String newDn)
This will rename the supplied dn in the LDAP namespace.
|
protected Iterator<SearchResult> |
search(String dn,
String filter,
Object[] filterArgs,
SearchControls searchControls,
SearchResultHandler... handler)
This will query the LDAP with the supplied dn, filter, filter arguments,
and search controls.
|
protected Iterator<SearchResult> |
searchAttributes(String dn,
Attributes matchAttrs,
String[] retAttrs,
SearchResultHandler... handler)
This will query the LDAP for the supplied dn, matching attributes and
return attributes.
|
protected void |
setLdapConfig(T ldapConfig)
This will set the config parameters of this
Ldap . |
String |
toString()
Provides a descriptive string representation of this instance.
|
protected static final CopyResultHandler<SearchResult> SR_COPY_RESULT_HANDLER
protected static final CopyResultHandler<NameClassPair> NCP_COPY_RESULT_HANDLER
protected static final CopyResultHandler<Binding> BINDING_COPY_RESULT_HANDLER
protected static final CopyResultHandler<Object> COPY_RESULT_HANDLER
protected final org.apache.commons.logging.Log logger
protected ConnectionHandler connectionHandler
protected T extends LdapConfig config
protected void setLdapConfig(T ldapConfig)
Ldap
.ldapConfig
- LdapConfig
protected boolean compare(String dn, String filter, Object[] filterArgs) throws NamingException
dn
- String
name to comparefilter
- String
expression to use for comparefilterArgs
- Object[]
to substitute for variables in
the filterboolean
- result of compare operationNamingException
- if the LDAP returns an errorprotected Iterator<SearchResult> search(String dn, String filter, Object[] filterArgs, SearchControls searchControls, SearchResultHandler... handler) throws NamingException
Iterator
is a
deep copy of the original search results. If filterArgs is null, then no
variable substitution will occur. See DirContext
.dn
- String
name to begin search atfilter
- String
expression to use for the searchfilterArgs
- Object[]
to substitute for variables in
the filtersearchControls
- SearchControls
to perform search withhandler
- SearchResultHandler[]
to post process resultsIterator
- of LDAP search resultsNamingException
- if the LDAP returns an errorprotected Iterator<SearchResult> pagedSearch(String dn, String filter, Object[] filterArgs, SearchControls searchControls, SearchResultHandler... handler) throws NamingException
search(String, String, Object[],
SearchControls, SearchResultHandler...)
. The PagedResultsControl is used
in conjunction with LdapConfig.getPagedResultsSize()
to produce the
results.dn
- String
name to begin search atfilter
- String
expression to use for the searchfilterArgs
- Object[]
to substitute for variables in
the filtersearchControls
- SearchControls
to perform search withhandler
- SearchResultHandler[]
to post process resultsIterator
- of LDAP search resultsNamingException
- if the LDAP returns an errorprotected Iterator<SearchResult> searchAttributes(String dn, Attributes matchAttrs, String[] retAttrs, SearchResultHandler... handler) throws NamingException
Iterator
is a deep copy of the original search
results. If matchAttrs is empty or null then all objects in the target
context are returned. If retAttrs is null then all attributes will be
returned. If retAttrs is an empty array then no attributes will be
returned. See DirContext
.dn
- String
name to search inmatchAttrs
- Attributes
attributes to matchretAttrs
- String[]
attributes to returnhandler
- SearchResultHandler[]
to post process resultsIterator
- of LDAP search resultsNamingException
- if the LDAP returns an errorprotected Iterator<NameClassPair> list(String dn) throws NamingException
Iterator
is a deep copy of the original search results. See Context.list(String)
.dn
- String
LDAP context to listIterator
- LDAP search resultNamingException
- if the LDAP returns an errorprotected Iterator<Binding> listBindings(String dn) throws NamingException
Iterator
is a deep
copy of the original search results. See Context.listBindings(String)
.dn
- String
LDAP context to listIterator
- LDAP search resultNamingException
- if the LDAP returns an errorprotected Attributes getAttributes(String dn, String[] retAttrs, AttributeHandler... handler) throws NamingException
DirContext
.dn
- String
named object in the LDAPretAttrs
- String[]
attributes to returnhandler
- AttributeHandler[]
to post process resultsAttributes
NamingException
- if the LDAP returns an errorprotected Iterator<SearchResult> getSchema(String dn) throws NamingException
Iterator
is a deep copy of the original search
results. See DirContext
.dn
- String
named object in the LDAPIterator
- LDAP search resultNamingException
- if the LDAP returns an errorprotected void modifyAttributes(String dn, int modOp, Attributes attrs) throws NamingException
DirContext
.dn
- String
named object in the LDAPmodOp
- int
modification operationattrs
- Attributes
attributes to be used for the
operation, may be nullNamingException
- if the LDAP returns an errorprotected void modifyAttributes(String dn, ModificationItem[] mods) throws NamingException
DirContext
.dn
- String
named object in the LDAPmods
- ModificationItem[]
modificationsNamingException
- if the LDAP returns an errorprotected void create(String dn, Attributes attrs) throws NamingException
DirContext
. Note that the context created by this operation is
immediately closed.dn
- String
named object in the LDAPattrs
- Attributes
attributes to be added to this entryNamingException
- if the LDAP returns an errorprotected void rename(String oldDn, String newDn) throws NamingException
Context.rename(String, String)
.oldDn
- String
object to renamenewDn
- String
new nameNamingException
- if the LDAP returns an errorprotected void delete(String dn) throws NamingException
Context.destroySubcontext(String)
.dn
- String
named object in the LDAPNamingException
- if the LDAP returns an errorpublic boolean connect() throws NamingException
LdapConfig.getBindDn()
and
LdapConfig.getBindCredential()
. If these parameters have not been
set then an anonymous bind will be attempted. This connection must be
closed using close()
. Any method which requires an LDAP connection
will call this method independently. This method should only be used if you
need to verify that you can connect to the LDAP.connect
in interface BaseLdap
boolean
- whether the connection was successfulNamingException
- if the LDAP cannot be reachedpublic boolean reconnect() throws NamingException
connect()
.reconnect
in interface BaseLdap
boolean
- whether the connection was successfulNamingException
- if the LDAP cannot be reachedpublic void close()
protected LdapContext getContext() throws NamingException
LdapContext
NamingException
- if the LDAP returns an errorprotected void operationRetry(LdapContext ctx, NamingException e, int count) throws NamingException
LdapConfig.getOperationRetryExceptions()
and the supplied count is less
than LdapConfig.getOperationRetry()
. LdapConfig.getOperationRetryWait()
is used in conjunction with LdapConfig.getOperationRetryBackoff()
to delay retries. Calls close()
if no exception is thrown, which allows the client to reconnect
when the operation is performed again.ctx
- LdapContext
that performed the operatione
- NamingException
that was throwncount
- int
operation attemptsNamingException
- if the operation won't be retriedpublic String toString()
Copyright © 2018. All rights reserved.