Bean Persistence
Ldaptive provides an API similar to the J2EE entity manager to facilitate reading and writing LDAP data with Java beans. This support is provided in a separate library that is available in the jars directory of the latest download.
Or included as a maven dependency:
<dependencies>
<dependency>
<groupId>org.ldaptive</groupId>
<artifactId>ldaptive-beans</artifactId>
<version>1.2.4</version>
</dependency>
</dependencies>
The interface for ldap entry manager looks like:
public interface LdapEntryManager<T>
{
T find(T object) throws LdapException;
Response<Void> add(T object) throws LdapException;
Response<Void> merge(T object) throws LdapException;
Response<Void> delete(T object) throws LdapException;
}
DefaultLdapEntryManager
Ldaptive provides a default implementation of the LdapEntryManager
which delegates to the appropriate add, merge, or delete operation.
Simple Java bean to illustrate usage:
@Entry(
dn = "distinguishedName"
attributes = {
@Attribute(name = "displayName", property = "name"),
@Attribute(name = "mail", property = "email"),
@Attribute(name = "telephoneNumber", property = "phoneNumber"),
})
public class MyObject
{
private String distinguishedName;
private String name;
private String email;
private String phoneNumber;
public MyObject() {}
public MyObject(String dn) { distinguisedName = dn; }
public String getDistinguishedName() { return distinguishedName; }
public String getName() { return name; }
public void setName(String s) { name = s; }
public String getEmail() { return email; }
public void setEmail(String s) { email = s; }
public String getPhoneNumber() { return phoneNumber; }
public void setPhoneNumber(String s) { phoneNumber = s; }
}
Perform some common operations against the LDAP:
DefaultLdapEntryManager<MyObject> manager = new DefaultLdapEntryManager<MyObject>(
new DefaultLdapEntryMapper<MyObject>(), new DefaultConnectionFactory("ldap://directory.ldaptive.org"));
// add a new entry to the LDAP
MyObject addObject = new MyObject("uid=dfisher,ou=people,dc=ldaptive,dc=org");
addObject.setName("Daniel Fisher");
addObject.setEmail("dfisher@ldaptive.org");
manager.add(addObject);
// modify the entry in the LDAP
MyObject mergeObject = manager.find(new MyObject("uid=dfisher,ou=people,dc=ldaptive,dc=org"));
mergeObject.setPhoneNumber("555-555-1234");
manager.merge(mergeObject);