RFC 4527, LDAP Read Entry Controls, describes the pre-read controls that let your application get the content of an entry immediately before modifications are applied.
if (isSupported(PreReadRequestControl.OID)) {
final String dn = "uid=bjensen,ou=People,dc=example,dc=com";
final ModifyRequest request =
Requests.newModifyRequest(dn)
.addControl(PreReadRequestControl.newControl(true, "mail"))
.addModification(
ModificationType.REPLACE, "mail", "modified@example.com");
final Result result = connection.modify(request);
try {
final PreReadResponseControl control =
result.getControl(PreReadResponseControl.DECODER,
new DecodeOptions());
final Entry entry = control.getEntry();
final LDIFEntryWriter writer = new LDIFEntryWriter(System.out);
writer.writeEntry(entry);
writer.close();
} catch (final DecodeException e) {
// Failed to decode the response control.
} catch (final IOException e) {
// The writer could not write to System.out.
}
}
OpenDJ directory server supports these controls:
dn: uid=bjensen,ou=People,dc=example,dc=com mail: bjensen@example.com

