From 13816294a2708eba572ed8a24d0b23073210c61b Mon Sep 17 00:00:00 2001 From: Ulrik Sandberg Date: Mon, 3 Dec 2007 11:22:21 +0000 Subject: [PATCH] First shot at implementing traditional create, update and delete. Cleaned up interfaces. --- .../ldap/samples/person/dao/CompanyDao.java | 2 +- .../ldap/samples/person/dao/CountryDao.java | 2 +- .../ldap/samples/person/dao/GroupDao.java | 14 +-- .../ldap/samples/person/dao/PersonDao.java | 14 +-- .../person/dao/TraditionalPersonDaoImpl.java | 88 ++++++++++++++----- .../samples/person/service/GroupService.java | 12 +-- .../samples/person/service/PersonService.java | 12 +-- 7 files changed, 96 insertions(+), 48 deletions(-) diff --git a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CompanyDao.java b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CompanyDao.java index dbab51a8..a0a47d45 100644 --- a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CompanyDao.java +++ b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CompanyDao.java @@ -23,5 +23,5 @@ import java.util.List; * @author Ulrik Sandberg */ public interface CompanyDao { - public List findByCountry(String country); + List findByCountry(String country); } diff --git a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CountryDao.java b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CountryDao.java index 77d7b0d3..ee7d8b51 100644 --- a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CountryDao.java +++ b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/CountryDao.java @@ -23,5 +23,5 @@ import java.util.List; * @author Ulrik Sandberg */ public interface CountryDao { - public List findAll(); + List findAll(); } diff --git a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/GroupDao.java b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/GroupDao.java index 5b204512..c4fec25c 100644 --- a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/GroupDao.java +++ b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/GroupDao.java @@ -26,17 +26,17 @@ import org.springframework.ldap.samples.person.domain.SearchCriteria; * @author Ulrik Sandberg */ public interface GroupDao { - public void create(Group group); + void create(Group group); - public void update(Group group); + void update(Group group); - public void delete(Group group); + void delete(Group group); - public Group findByPrimaryKey(String name); + Group findByPrimaryKey(String name); - public List findAll(); + List findAll(); - public List find(SearchCriteria criteria); + List find(SearchCriteria criteria); /** * Update all groups referring to the original DN with the new DN value. @@ -46,5 +46,5 @@ public interface GroupDao { * @param newDn * the new DN. */ - public void updateMemberDn(String originalDn, String newDn); + void updateMemberDn(String originalDn, String newDn); } diff --git a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/PersonDao.java b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/PersonDao.java index cdb1612b..4ba46d0a 100644 --- a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/PersonDao.java +++ b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/PersonDao.java @@ -27,18 +27,18 @@ import org.springframework.ldap.samples.person.domain.SearchCriteria; * @author Ulrik Sandberg */ public interface PersonDao { - public void create(Person person); + void create(Person person); - public void update(Person person); + void update(Person person); - public void delete(Person person); + void delete(Person person); - public Person findByPrimaryKey(String dn); + Person findByPrimaryKey(String dn); - public Person findByPrimaryKeyData(String country, String company, + Person findByPrimaryKeyData(String country, String company, String fullname); - public List findAll(); + List findAll(); - public List find(SearchCriteria criteria); + List find(SearchCriteria criteria); } diff --git a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/TraditionalPersonDaoImpl.java b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/TraditionalPersonDaoImpl.java index 61361acc..ef7fc7aa 100644 --- a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/TraditionalPersonDaoImpl.java +++ b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/dao/TraditionalPersonDaoImpl.java @@ -25,14 +25,13 @@ import javax.naming.NamingEnumeration; import javax.naming.NamingException; import javax.naming.directory.Attribute; import javax.naming.directory.Attributes; +import javax.naming.directory.BasicAttribute; +import javax.naming.directory.BasicAttributes; import javax.naming.directory.DirContext; import javax.naming.directory.InitialDirContext; import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; -import org.springframework.ldap.core.DirContextAdapter; -import org.springframework.ldap.core.DirContextOperations; - import org.apache.commons.lang.StringUtils; import org.springframework.ldap.samples.person.domain.Person; import org.springframework.ldap.samples.person.domain.SearchCriteria; @@ -52,31 +51,81 @@ public class TraditionalPersonDaoImpl implements PersonDao { private String base; - // TODO Rewrite using traditional tools - DirContextOperations getContextToBind(Person person) { - DirContextAdapter adapter = new DirContextAdapter(); - adapter.setAttributeValues("objectclass", new String[] { "top", - "person", "organizationalPerson", "inetOrgPerson" }); - adapter.setAttributeValue("cn", person.getFullName()); - adapter.setAttributeValue("sn", person.getLastName()); - adapter.setAttributeValues("description", person.getDescription()); - return adapter; + Attributes getAttributesToBind(Person person) { + BasicAttributes attributes = new BasicAttributes(); + BasicAttribute oc = new BasicAttribute("objectclass"); + oc.add("top"); + oc.add("person"); + oc.add("organizationalPerson"); + oc.add("inetOrgPerson"); + attributes.put(oc); + attributes.put("cn", person.getFullName()); + attributes.put("sn", person.getLastName()); + attributes.put("description", person.getDescription()); + return attributes; } - // TODO Rewrite using traditional tools + /* + * @see org.springframework.ldap.samples.person.dao.PersonDao#create(org.springframework.ldap.samples.person.domain.Person) + */ public void create(Person person) { - // ldapOperations.bind(buildDn(person), getContextToBind(person), null); + DirContext ctx = createContext(); + try { + ctx.bind(buildDn(person.getCountry(), person.getCompany(), person + .getFullName()), null, getAttributesToBind(person)); + } catch (NamingException e) { + throw new RuntimeException(e); + } finally { + if (ctx != null) { + try { + ctx.close(); + } catch (Exception e) { + // Never mind this. + } + } + } } - // TODO Rewrite using traditional tools + /* + * @see org.springframework.ldap.samples.person.dao.PersonDao#update(org.springframework.ldap.samples.person.domain.Person) + */ public void update(Person person) { - // ldapOperations.rebind(buildDn(person), getContextToBind(person), - // null); + DirContext ctx = createContext(); + try { + ctx.rebind(buildDn(person.getCountry(), person.getCompany(), person + .getFullName()), null, getAttributesToBind(person)); + } catch (NamingException e) { + throw new RuntimeException(e); + } finally { + if (ctx != null) { + try { + ctx.close(); + } catch (Exception e) { + // Never mind this. + } + } + } } - // TODO Rewrite using traditional tools + /* + * @see org.springframework.ldap.samples.person.dao.PersonDao#delete(org.springframework.ldap.samples.person.domain.Person) + */ public void delete(Person person) { - // ldapOperations.unbind(buildDn(person)); + DirContext ctx = createContext(); + try { + ctx.unbind(buildDn(person.getCountry(), person.getCompany(), person + .getFullName())); + } catch (NamingException e) { + throw new RuntimeException(e); + } finally { + if (ctx != null) { + try { + ctx.close(); + } catch (Exception e) { + // Never mind this. + } + } + } } /* @@ -243,5 +292,4 @@ public class TraditionalPersonDaoImpl implements PersonDao { public void setBase(String base) { this.base = base; } - } diff --git a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/GroupService.java b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/GroupService.java index 3d78b925..674a74f8 100644 --- a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/GroupService.java +++ b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/GroupService.java @@ -28,15 +28,15 @@ import org.springframework.ldap.samples.person.domain.SearchCriteria; */ public interface GroupService { - public void create(String name, Set members); + void create(String name, Set members); - public void update(Group group); + void update(Group group); - public void delete(Group group); + void delete(Group group); - public Group findByPrimaryKey(String name); + Group findByPrimaryKey(String name); - public List find(SearchCriteria criteria); + List find(SearchCriteria criteria); - public List findAll(); + List findAll(); } diff --git a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/PersonService.java b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/PersonService.java index b784b5e7..1b77697f 100644 --- a/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/PersonService.java +++ b/spring-ldap-person/src/main/java/org/springframework/ldap/samples/person/service/PersonService.java @@ -28,16 +28,16 @@ import org.springframework.ldap.samples.person.domain.SearchCriteria; */ public interface PersonService { - public void create(String country, String company, String fullname, + void create(String country, String company, String fullname, String lastname, String[] description); - public void update(Person person); + void update(Person person); - public void delete(Person person); + void delete(Person person); - public Person findByPrimaryKey(String country, String company, String name); + Person findByPrimaryKey(String country, String company, String name); - public List find(SearchCriteria criteria); + List find(SearchCriteria criteria); - public List findAll(); + List findAll(); }