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