In the same manner as for custom search
methods,
you can actually execute any method in DirContext
by
using a ContextExecutor
.
public interface ContextExecutor { public Object executeWithContext(DirContext ctx) throws NamingException; }
When implementing a custom ContextExecutor
, you
can choose between using the executeReadOnly()
or the
executeReadWrite()
method. Let's say that we want to
call this method:
Object lookupLink(Name name)
It's available in DirContext
, but there is no
matching method in LdapTemplate
. It's a lookup method,
so it should be read-only. We can implement it like this:
Example 4.3. A custom DirContext method using ContextExecutor
package com.example.dao; public class PersonDaoImpl implements PersonDao { ... public Object lookupLink(final Name name) { ContextExecutor executor = new ContextExecutor() { public Object executeWithContext(DirContext ctx) { return ctx.lookupLink(name); } }; return ldapTemplate.executeReadOnly(executor); } }
In the same manner you can execute a read-write operation using
the executeReadWrite()
method.