]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/util/directory/ldap/LdapEntry.java
Working read-only WebDav server
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / util / directory / ldap / LdapEntry.java
1 package org.argeo.util.directory.ldap;
2
3 import java.util.Arrays;
4 import java.util.Dictionary;
5 import java.util.List;
6 import java.util.Set;
7 import java.util.StringJoiner;
8 import java.util.TreeSet;
9
10 import javax.naming.directory.Attributes;
11 import javax.naming.ldap.LdapName;
12
13 import org.argeo.util.naming.LdapAttrs;
14
15 /** An LDAP entry. */
16 public interface LdapEntry {
17 LdapName getDn();
18
19 Attributes getAttributes();
20
21 void publishAttributes(Attributes modifiedAttributes);
22
23 List<LdapName> getReferences(String attributeId);
24
25 Dictionary<String, Object> getProperties();
26
27 boolean hasCredential(String key, Object value);
28
29 /*
30 * UTILITIES
31 */
32 public static void addObjectClasses(Dictionary<String, Object> properties, Set<String> objectClasses) {
33 String value = properties.get(LdapAttrs.objectClasses.name()).toString();
34 Set<String> currentObjectClasses = new TreeSet<>(Arrays.asList(value.toString().split("\n")));
35 currentObjectClasses.addAll(objectClasses);
36 StringJoiner values = new StringJoiner("\n");
37 currentObjectClasses.forEach((s) -> values.add(s));
38 properties.put(LdapAttrs.objectClasses.name(), values.toString());
39 }
40 }