X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Futil%2Fdirectory%2Fldap%2FAbstractLdapDirectory.java;h=eab82e0ec3a0ba2ea2426b01d62a6d7ab20f4c56;hb=0ce8ecfe974cec9f524c16884209cd08544d890d;hp=d8e8e7d2127a27de54c2aa0906021c6bc6a585ee;hpb=df60fd8de17590b8f4ab32fd0278e57aaaedbfa2;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/util/directory/ldap/AbstractLdapDirectory.java b/org.argeo.util/src/org/argeo/util/directory/ldap/AbstractLdapDirectory.java index d8e8e7d21..eab82e0ec 100644 --- a/org.argeo.util/src/org/argeo/util/directory/ldap/AbstractLdapDirectory.java +++ b/org.argeo.util/src/org/argeo/util/directory/ldap/AbstractLdapDirectory.java @@ -38,7 +38,7 @@ public abstract class AbstractLdapDirectory implements Directory, XAResourceProv protected static final String SHARED_STATE_PASSWORD = "javax.security.auth.login.password"; protected final LdapName baseDn; - protected final Hashtable properties; + protected final Hashtable configProperties; private final Rdn userBaseRdn, groupBaseRdn, systemRoleBaseRdn; private final String userObjectClass, groupObjectClass; private String memberAttributeId = "member"; @@ -60,33 +60,33 @@ public abstract class AbstractLdapDirectory implements Directory, XAResourceProv private LdapDirectoryDao directoryDao; public AbstractLdapDirectory(URI uriArg, Dictionary props, boolean scoped) { - this.properties = new Hashtable(); + this.configProperties = new Hashtable(); for (Enumeration keys = props.keys(); keys.hasMoreElements();) { String key = keys.nextElement(); - properties.put(key, props.get(key)); + configProperties.put(key, props.get(key)); } - baseDn = toLdapName(DirectoryConf.baseDn.getValue(properties)); + baseDn = toLdapName(DirectoryConf.baseDn.getValue(configProperties)); this.scoped = scoped; if (uriArg != null) { uri = uriArg.toString(); // uri from properties is ignored } else { - String uriStr = DirectoryConf.uri.getValue(properties); + String uriStr = DirectoryConf.uri.getValue(configProperties); if (uriStr == null) uri = null; else uri = uriStr; } - forcedPassword = DirectoryConf.forcedPassword.getValue(properties); + forcedPassword = DirectoryConf.forcedPassword.getValue(configProperties); - userObjectClass = DirectoryConf.userObjectClass.getValue(properties); - groupObjectClass = DirectoryConf.groupObjectClass.getValue(properties); + userObjectClass = DirectoryConf.userObjectClass.getValue(configProperties); + groupObjectClass = DirectoryConf.groupObjectClass.getValue(configProperties); - String userBase = DirectoryConf.userBase.getValue(properties); - String groupBase = DirectoryConf.groupBase.getValue(properties); - String systemRoleBase = DirectoryConf.systemRoleBase.getValue(properties); + String userBase = DirectoryConf.userBase.getValue(configProperties); + String groupBase = DirectoryConf.groupBase.getValue(configProperties); + String systemRoleBase = DirectoryConf.systemRoleBase.getValue(configProperties); try { // baseDn = new LdapName(UserAdminConf.baseDn.getValue(properties)); userBaseRdn = new Rdn(userBase); @@ -95,20 +95,20 @@ public abstract class AbstractLdapDirectory implements Directory, XAResourceProv // groupBaseDn = new LdapName(groupBase + "," + baseDn); systemRoleBaseRdn = new Rdn(systemRoleBase); } catch (InvalidNameException e) { - throw new IllegalArgumentException("Badly formated base DN " + DirectoryConf.baseDn.getValue(properties), - e); + throw new IllegalArgumentException( + "Badly formated base DN " + DirectoryConf.baseDn.getValue(configProperties), e); } // read only - String readOnlyStr = DirectoryConf.readOnly.getValue(properties); + String readOnlyStr = DirectoryConf.readOnly.getValue(configProperties); if (readOnlyStr == null) { readOnly = readOnlyDefault(uri); - properties.put(DirectoryConf.readOnly.name(), Boolean.toString(readOnly)); + configProperties.put(DirectoryConf.readOnly.name(), Boolean.toString(readOnly)); } else readOnly = Boolean.parseBoolean(readOnlyStr); // disabled - String disabledStr = DirectoryConf.disabled.getValue(properties); + String disabledStr = DirectoryConf.disabled.getValue(configProperties); if (disabledStr != null) disabled = Boolean.parseBoolean(disabledStr); else @@ -202,7 +202,7 @@ public abstract class AbstractLdapDirectory implements Directory, XAResourceProv checkEdit(); LdapEntryWorkingCopy wc = getWorkingCopy(); boolean actuallyDeleted; - if (getDirectoryDao().daoHasEntry(dn) || wc.getNewData().containsKey(dn)) { + if (getDirectoryDao().entryExists(dn) || wc.getNewData().containsKey(dn)) { LdapEntry user = doGetRole(dn); wc.getDeletedData().put(dn, user); actuallyDeleted = true; @@ -224,7 +224,7 @@ public abstract class AbstractLdapDirectory implements Directory, XAResourceProv LdapEntryWorkingCopy wc = getWorkingCopy(); LdapEntry user; try { - user = getDirectoryDao().daoGetEntry(dn); + user = getDirectoryDao().doGetEntry(dn); } catch (NameNotFoundException e) { user = null; } @@ -386,12 +386,27 @@ public abstract class AbstractLdapDirectory implements Directory, XAResourceProv return true;// read only by default } + /* + * AS AN ENTRY + */ + public LdapEntry asLdapEntry() { + try { + return directoryDao.doGetEntry(baseDn); + } catch (NameNotFoundException e) { + throw new IllegalStateException("Cannot get " + baseDn + " entry", e); + } + } + + public Dictionary getProperties() { + return asLdapEntry().getProperties(); + } + /* * ACCESSORS */ @Override public Optional getRealm() { - Object realm = getProperties().get(DirectoryConf.realm.name()); + Object realm = configProperties.get(DirectoryConf.realm.name()); if (realm == null) return Optional.empty(); return Optional.of(realm.toString()); @@ -421,12 +436,12 @@ public abstract class AbstractLdapDirectory implements Directory, XAResourceProv return systemRoleBaseRdn; } - public Dictionary getProperties() { - return properties; - } +// public Dictionary getConfigProperties() { +// return configProperties; +// } - public Dictionary cloneProperties() { - return new Hashtable<>(properties); + public Dictionary cloneConfigProperties() { + return new Hashtable<>(configProperties); } public String getForcedPassword() {