X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Futil%2Fdirectory%2Fldap%2FLdifDao.java;h=7387d9e0f9cd52f735ec94625fa296380431d259;hb=e9d0731a65b0d3523906c58f987ad9610c4286b7;hp=c805d12725856fce3fb6edd853a833472965c141;hpb=dc27b57704278684e72efcaf72b01c5b91df39f8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/util/directory/ldap/LdifDao.java b/org.argeo.util/src/org/argeo/util/directory/ldap/LdifDao.java index c805d1272..7387d9e0f 100644 --- a/org.argeo.util/src/org/argeo/util/directory/ldap/LdifDao.java +++ b/org.argeo.util/src/org/argeo/util/directory/ldap/LdifDao.java @@ -12,9 +12,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; -import java.util.Dictionary; import java.util.HashSet; -import java.util.Hashtable; import java.util.List; import java.util.NavigableMap; import java.util.Objects; @@ -28,7 +26,6 @@ import javax.naming.NamingException; import javax.naming.directory.Attributes; import javax.naming.ldap.LdapName; -import org.argeo.util.directory.DirectoryConf; import org.argeo.util.directory.HierarchyUnit; import org.argeo.util.naming.LdapObjs; import org.osgi.framework.Filter; @@ -86,12 +83,12 @@ public class LdifDao extends AbstractLdapDirectoryDao { // return scopedUserAdmin; // } - private static Dictionary fromUri(String uri, String baseDn) { - Hashtable res = new Hashtable(); - res.put(DirectoryConf.uri.name(), uri); - res.put(DirectoryConf.baseDn.name(), baseDn); - return res; - } +// private static Dictionary fromUri(String uri, String baseDn) { +// Hashtable res = new Hashtable(); +// res.put(DirectoryConf.uri.name(), uri); +// res.put(DirectoryConf.baseDn.name(), baseDn); +// return res; +// } public void init() { @@ -217,7 +214,7 @@ public class LdifDao extends AbstractLdapDirectoryDao { */ @Override - public LdapEntry daoGetEntry(LdapName key) throws NameNotFoundException { + public LdapEntry doGetEntry(LdapName key) throws NameNotFoundException { // if (groups.containsKey(key)) // return groups.get(key); // if (users.containsKey(key)) @@ -228,7 +225,16 @@ public class LdifDao extends AbstractLdapDirectoryDao { } @Override - public Boolean daoHasEntry(LdapName dn) { + public Attributes doGetAttributes(LdapName name) { + try { + return doGetEntry(name).getAttributes(); + } catch (NameNotFoundException e) { + throw new IllegalStateException(name + " doe not exist in " + getDirectory().getBaseDn(), e); + } + } + + @Override + public Boolean entryExists(LdapName dn) { return entries.containsKey(dn);// || groups.containsKey(dn); } @@ -281,7 +287,7 @@ public class LdifDao extends AbstractLdapDirectoryDao { entries: for (LdapName name : entries.keySet()) { LdapEntry group; try { - LdapEntry entry = daoGetEntry(name); + LdapEntry entry = doGetEntry(name); if (AbstractLdapDirectory.hasObjectClass(entry.getAttributes(), getDirectory().getGroupObjectClass())) { group = entry; } else { @@ -329,7 +335,7 @@ public class LdifDao extends AbstractLdapDirectoryDao { Attributes modifiedAttrs = wc.getModifiedData().get(dn); LdapEntry user; try { - user = daoGetEntry(dn); + user = doGetEntry(dn); } catch (NameNotFoundException e) { throw new IllegalStateException("User to modify no found " + dn, e); } @@ -364,6 +370,8 @@ public class LdifDao extends AbstractLdapDirectoryDao { // } @Override public HierarchyUnit doGetHierarchyUnit(LdapName dn) { + if (getDirectory().getBaseDn().equals(dn)) + return getDirectory(); return hierarchy.get(dn); }