X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifUserAdmin.java;h=521ae8bb6e89916c6b88ea490767658e8b3012fa;hb=8260f4470f514ea347ca53f5b4dfc632c4a4de66;hp=7b87a4b6e7fbd497cf8786c853cb7616589e8171;hpb=6342d1d28f8338866c876f8b6364ce3f1eac28aa;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifUserAdmin.java b/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifUserAdmin.java index 7b87a4b6e..521ae8bb6 100644 --- a/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifUserAdmin.java +++ b/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifUserAdmin.java @@ -22,7 +22,8 @@ import javax.naming.directory.Attributes; import javax.naming.ldap.LdapName; import javax.transaction.TransactionManager; -import org.apache.commons.io.IOUtils; +import org.argeo.util.naming.LdifParser; +import org.argeo.util.naming.LdifWriter; import org.osgi.framework.Filter; import org.osgi.service.useradmin.Role; @@ -49,8 +50,8 @@ public class LdifUserAdmin extends AbstractUserDirectory { private static Dictionary fromUri(String uri, String baseDn) { Hashtable res = new Hashtable(); - res.put(UserAdminConf.uri.property(), uri); - res.put(UserAdminConf.baseDn.property(), baseDn); + res.put(UserAdminConf.uri.name(), uri); + res.put(UserAdminConf.baseDn.name(), baseDn); return res; } @@ -69,16 +70,13 @@ public class LdifUserAdmin extends AbstractUserDirectory { public void save() { if (getUri() == null) - throw new UserDirectoryException( - "Cannot save LDIF user admin: no URI is set"); + throw new UserDirectoryException("Cannot save LDIF user admin: no URI is set"); if (isReadOnly()) - throw new UserDirectoryException("Cannot save LDIF user admin: " - + getUri() + " is read-only"); + throw new UserDirectoryException("Cannot save LDIF user admin: " + getUri() + " is read-only"); try (FileOutputStream out = new FileOutputStream(new File(getUri()))) { save(out); } catch (IOException e) { - throw new UserDirectoryException("Cannot save user admin to " - + getUri(), e); + throw new UserDirectoryException("Cannot save user admin to " + getUri(), e); } } @@ -90,7 +88,7 @@ public class LdifUserAdmin extends AbstractUserDirectory { for (LdapName name : users.keySet()) ldifWriter.writeEntry(name, users.get(name).getAttributes()); } finally { - IOUtils.closeQuietly(out); + out.close(); } } @@ -109,14 +107,12 @@ public class LdifUserAdmin extends AbstractUserDirectory { while (ids.hasMoreElements()) { String id = ids.nextElement().toLowerCase(); if (lowerCase.contains(id)) - throw new UserDirectoryException(key - + " has duplicate id " + id); + throw new UserDirectoryException(key + " has duplicate id " + id); lowerCase.add(id); } // analyse object classes - NamingEnumeration objectClasses = attributes.get( - objectClass.name()).getAll(); + NamingEnumeration objectClasses = attributes.get(objectClass.name()).getAll(); // System.out.println(key); objectClasses: while (objectClasses.hasMore()) { String objectClass = objectClasses.next().toString(); @@ -131,12 +127,13 @@ public class LdifUserAdmin extends AbstractUserDirectory { } } } catch (Exception e) { - throw new UserDirectoryException( - "Cannot load user admin service from LDIF", e); + throw new UserDirectoryException("Cannot load user admin service from LDIF", e); } } public void destroy() { + if (users == null || groups == null) + throw new UserDirectoryException("User directory " + getBaseDn() + " is already destroyed"); users.clear(); users = null; groups.clear(); @@ -200,8 +197,7 @@ public class LdifUserAdmin extends AbstractUserDirectory { else if (groups.containsKey(dn)) groups.remove(dn); else - throw new UserDirectoryException("User to delete not found " - + dn); + throw new UserDirectoryException("User to delete not found " + dn); } // add for (LdapName dn : wc.getNewUsers().keySet()) { @@ -213,8 +209,7 @@ public class LdifUserAdmin extends AbstractUserDirectory { else if (Role.GROUP == user.getType()) groups.put(dn, (DirectoryGroup) user); else - throw new UserDirectoryException("Unsupported role type " - + user.getType() + " for new user " + dn); + throw new UserDirectoryException("Unsupported role type " + user.getType() + " for new user " + dn); } // modify for (LdapName dn : wc.getModifiedUsers().keySet()) { @@ -225,8 +220,7 @@ public class LdifUserAdmin extends AbstractUserDirectory { else if (groups.containsKey(dn)) user = groups.get(dn); else - throw new UserDirectoryException("User to modify no found " - + dn); + throw new UserDirectoryException("User to modify no found " + dn); user.publishAttributes(modifiedAttrs); } }