X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifUserAdmin.java;h=6d9305a176e29e5e9edab2e40ba93f0e5713a7a0;hb=4c7e1885b8bf3c93fa0919ace122e3f289a925ea;hp=f9163d7e2af20dfd43caa759443241ee464b74c3;hpb=da9d144b6b241e1526a3bd255dff905a7969a5bc;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUserAdmin.java b/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUserAdmin.java index f9163d7e2..6d9305a17 100644 --- a/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUserAdmin.java +++ b/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUserAdmin.java @@ -308,6 +308,9 @@ public class LdifUserAdmin extends AbstractUserDirectory { init(); } + /* + * HIERARCHY + */ @Override public int getHierarchyChildCount() { return rootHierarchyUnits.size(); @@ -318,8 +321,21 @@ public class LdifUserAdmin extends AbstractUserDirectory { return rootHierarchyUnits.get(i); } - /* - * HIERARCHY - */ + @Override + public HierarchyUnit getHierarchyUnit(String path) { + LdapName dn = LdapNameUtils.toLdapName(path); + return hierarchy.get(dn); + } + + @Override + public HierarchyUnit getHierarchyUnit(Role role) { + LdapName dn = LdapNameUtils.toLdapName(role.getName()); + // 2 levels + LdapName huDn = LdapNameUtils.getParent(LdapNameUtils.getParent(dn)); + HierarchyUnit hierarchyUnit = hierarchy.get(huDn); + if (hierarchyUnit == null) + throw new IllegalStateException("No hierarchy unit found for " + role); + return hierarchyUnit; + } }