X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Futil%2Fdirectory%2Fldap%2FLdifDao.java;h=c200faa27123e6a473beed244a2332dfc5589dab;hb=3c1cdc594d954520b14646102b366290bdad58c7;hp=d74ac166fc72075adb08008885344d4ac565e240;hpb=f3ea14abccc33b1c3326417a87c91145be776c72;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 d74ac166f..c200faa27 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 @@ -36,9 +36,10 @@ import org.osgi.service.useradmin.Role; /** A user admin based on a LDIF files. */ public class LdifDao extends AbstractLdapDirectoryDao { private NavigableMap entries = new TreeMap<>(); - private NavigableMap hierarchy = new TreeMap<>(); + private NavigableMap values = new TreeMap<>(); + public LdifDao(AbstractLdapDirectory directory) { super(directory); } @@ -104,6 +105,8 @@ public class LdifDao extends AbstractLdapDirectoryDao { lowerCase.add(id); } + values.put(key, attributes); + // analyse object classes NamingEnumeration objectClasses = attributes.get(objectClass.name()).getAll(); // System.out.println(key); @@ -111,14 +114,14 @@ public class LdifDao extends AbstractLdapDirectoryDao { String objectClass = objectClasses.next().toString(); // System.out.println(" " + objectClass); if (objectClass.toLowerCase().equals(inetOrgPerson.name().toLowerCase())) { - entries.put(key, newUser(key, attributes)); + entries.put(key, newUser(key)); break objectClasses; } else if (objectClass.toLowerCase().equals(getDirectory().getGroupObjectClass().toLowerCase())) { - entries.put(key, newGroup(key, attributes)); + entries.put(key, newGroup(key)); break objectClasses; } else if (objectClass.equalsIgnoreCase(LdapObjs.organizationalUnit.name())) { // TODO skip if it does not contain groups or users - hierarchy.put(key, new LdapHierarchyUnit(getDirectory(), key, attributes)); + hierarchy.put(key, new LdapHierarchyUnit(getDirectory(), key)); break objectClasses; } } @@ -151,15 +154,18 @@ public class LdifDao extends AbstractLdapDirectoryDao { @Override public Attributes doGetAttributes(LdapName name) { - try { - return doGetEntry(name).getAttributes(); - } catch (NameNotFoundException e) { - throw new IllegalStateException(name + " doe not exist in " + getDirectory().getBaseDn(), e); - } + if (!values.containsKey(name)) + throw new IllegalStateException(name + " doe not exist in " + getDirectory().getBaseDn()); + return values.get(name); + } + + @Override + public boolean checkConnection() { + return true; } @Override - public Boolean entryExists(LdapName dn) { + public boolean entryExists(LdapName dn) { return entries.containsKey(dn);// || groups.containsKey(dn); }