1 package org
.argeo
.osgi
.useradmin
;
3 import java
.util
.ArrayList
;
6 import java
.util
.Objects
;
8 import javax
.naming
.directory
.Attributes
;
9 import javax
.naming
.ldap
.LdapName
;
11 import org
.osgi
.framework
.InvalidSyntaxException
;
12 import org
.osgi
.service
.useradmin
.Role
;
14 /** LDIF/LDAP based implementation of {@link HierarchyUnit}. */
15 class LdifHierarchyUnit
implements HierarchyUnit
{
16 private final AbstractUserDirectory directory
;
18 private final LdapName dn
;
19 private final int type
;
20 private final Attributes attributes
;
23 List
<HierarchyUnit
> children
= new ArrayList
<>();
25 LdifHierarchyUnit(AbstractUserDirectory directory
, LdapName dn
, int type
, Attributes attributes
) {
26 Objects
.requireNonNull(directory
);
27 Objects
.requireNonNull(dn
);
29 this.directory
= directory
;
32 this.attributes
= attributes
;
36 public HierarchyUnit
getParent() {
41 public Iterable
<HierarchyUnit
> getDirectHierachyUnits() {
46 public int getHierarchyUnitType() {
51 public String
getHierarchyUnitName() {
52 String name
= LdapNameUtils
.getLastRdnValue(dn
);
53 // TODO check ou, o, etc.
57 public Attributes
getAttributes() {
62 public String
getBasePath() {
67 public List
<?
extends Role
> getHierarchyUnitRoles(String filter
, boolean deep
) {
69 return directory
.getRoles(dn
, filter
, deep
);
70 } catch (InvalidSyntaxException e
) {
71 throw new IllegalArgumentException("Cannot filter " + filter
+ " " + dn
, e
);
76 public UserDirectory
getDirectory() {
81 public int hashCode() {
86 public boolean equals(Object obj
) {
87 if (!(obj
instanceof LdifHierarchyUnit
))
89 return ((LdifHierarchyUnit
) obj
).dn
.equals(dn
);
93 public String
toString() {
94 return "Hierarchy Unit " + dn
.toString();