In Java LDAP, data can be modified in two ways: either using rebind or modifyAttributes.
A rebind
is a very crude way to modify data.
It's basically an unbind
followed by a
bind
. It looks like this:
Example 2.9. Modifying using rebind
package com.example.dao;
public class PersonDaoImpl implements PersonDao {
private LdapTemplate ldapTemplate;
...
public void update(Person p) {
Name dn = buildDn(p);
ldapTemplate.rebind(dn, null, buildAttributes(p));
}
}
If only the modified attributes should be replaced, there is a
method called modifyAttributes
that takes an array of
modifications:
Example 2.10. Modifying using modifyAttributes
package com.example.dao;
public class PersonDaoImpl implements PersonDao {
private LdapTemplate ldapTemplate;
...
public void updateDescription(Person p) {
Name dn = buildDn(p);
Attribute attr = new BasicAttribute("description", p.getDescription())
ModificationItem item = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr);
ldapTemplate.modifyAttributes(dn, new ModificationItem[] {item});
}
}
Building Attributes
and
ModificationItem
arrays is a lot of work, but as you
will see in Chapter 3, Simpler Attribute Access and Manipulation with DirContextAdapter, the update operations
can be simplified.