]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.util/src/org/argeo/util/directory/ldap/LdifDao.java
Introduce WebDav support
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / util / directory / ldap / LdifDao.java
index c805d12725856fce3fb6edd853a833472965c141..7387d9e0f9cd52f735ec94625fa296380431d259 100644 (file)
@@ -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<String, Object> fromUri(String uri, String baseDn) {
-               Hashtable<String, Object> res = new Hashtable<String, Object>();
-               res.put(DirectoryConf.uri.name(), uri);
-               res.put(DirectoryConf.baseDn.name(), baseDn);
-               return res;
-       }
+//     private static Dictionary<String, Object> fromUri(String uri, String baseDn) {
+//             Hashtable<String, Object> res = new Hashtable<String, Object>();
+//             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);
        }