X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Futil%2Fdirectory%2Fldap%2FLdapEntry.java;h=cf293cee2e94aa2ec6eda2312ae4aef2209a19ab;hb=285c23f26c4d634cd139d393ebcb708187d5e960;hp=45788b93576ac0757643252aef9cd3080ca295a0;hpb=4012bedd8870634488b307d2233590fb1226e5d4;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java b/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java index 45788b935..cf293cee2 100644 --- a/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java +++ b/org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java @@ -1,11 +1,18 @@ package org.argeo.util.directory.ldap; +import java.util.Arrays; import java.util.Dictionary; import java.util.List; +import java.util.Set; +import java.util.StringJoiner; +import java.util.TreeSet; import javax.naming.directory.Attributes; import javax.naming.ldap.LdapName; +import org.argeo.util.naming.LdapAttrs; + +/** An LDAP entry. */ public interface LdapEntry { LdapName getDn(); @@ -13,10 +20,21 @@ public interface LdapEntry { void publishAttributes(Attributes modifiedAttributes); - public List getReferences(String attributeId); - - public Dictionary getProperties(); + List getReferences(String attributeId); + + Dictionary getProperties(); - public boolean hasCredential(String key, Object value) ; + boolean hasCredential(String key, Object value); + /* + * UTILITIES + */ + public static void addObjectClasses(Dictionary properties, Set objectClasses) { + String value = properties.get(LdapAttrs.objectClasses.name()).toString(); + Set currentObjectClasses = new TreeSet<>(Arrays.asList(value.toString().split("\n"))); + currentObjectClasses.addAll(objectClasses); + StringJoiner values = new StringJoiner("\n"); + currentObjectClasses.forEach((s) -> values.add(s)); + properties.put(LdapAttrs.objectClasses.name(), values.toString()); + } }