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.