X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.util%2Fsrc%2Forg%2Fargeo%2Futil%2Fdirectory%2Fldap%2FDefaultLdapEntry.java;h=c01d1c3c1a3e5b898f34b4b0cc48bf9a0b532034;hb=3c1cdc594d954520b14646102b366290bdad58c7;hp=c4d20feba922576dc181129ebcd75dae523fbde5;hpb=285c23f26c4d634cd139d393ebcb708187d5e960;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.util/src/org/argeo/util/directory/ldap/DefaultLdapEntry.java b/org.argeo.util/src/org/argeo/util/directory/ldap/DefaultLdapEntry.java index c4d20feba..c01d1c3c1 100644 --- a/org.argeo.util/src/org/argeo/util/directory/ldap/DefaultLdapEntry.java +++ b/org.argeo.util/src/org/argeo/util/directory/ldap/DefaultLdapEntry.java @@ -32,20 +32,44 @@ public class DefaultLdapEntry implements LdapEntry { private final LdapName dn; -// private Attributes publishedAttributes; + private AttributeDictionary properties; + private AttributeDictionary credentials; - // Temporarily expose the fields - protected AttributeDictionary properties; - protected AttributeDictionary credentials; +// private String primaryObjectClass; +// private List objectClasses = new ArrayList<>(); protected DefaultLdapEntry(AbstractLdapDirectory directory, LdapName dn) { Objects.requireNonNull(directory); Objects.requireNonNull(dn); this.directory = directory; this.dn = dn; -// this.publishedAttributes = attributes; -// properties = new AttributeDictionary(false); -// credentials = new AttributeDictionary(true); + + // Object classes +// Objects.requireNonNull(initialAttributes); +// try { +// NamingEnumeration en = initialAttributes.get(LdapAttrs.objectClass.name()).getAll(); +// String first = null; +// attrs: while (en.hasMore()) { +// String v = en.next().toString(); +// if (v.equalsIgnoreCase(LdapObjs.top.name())) +// continue attrs; +// if (first == null) +// first = v; +// if (v.equalsIgnoreCase(getDirectory().getUserObjectClass())) +// primaryObjectClass = getDirectory().getUserObjectClass(); +// else if (v.equalsIgnoreCase(getDirectory().getGroupObjectClass())) +// primaryObjectClass = getDirectory().getGroupObjectClass(); +// objectClasses.add(v); +// } +// if (primaryObjectClass == null) { +// if (first == null) +// throw new IllegalStateException("Could not find primary object class"); +// primaryObjectClass = first; +// } +// } catch (NamingException e) { +// throw new IllegalStateException("Cannot find object classes", e); +// } + } @Override @@ -54,9 +78,6 @@ public class DefaultLdapEntry implements LdapEntry { } public synchronized Attributes getAttributes() { -// // lazy loading -// if (publishedAttributes == null) -// publishedAttributes = getDirectory().getDirectoryDao().doGetAttributes(dn); return isEditing() ? getModifiedAttributes() : getDirectory().getDirectoryDao().doGetAttributes(dn); } @@ -374,6 +395,7 @@ public class DefaultLdapEntry implements LdapEntry { @Override public Object put(String key, Object value) { + Objects.requireNonNull(value, "Value for key " + key + " is null"); try { if (key == null) { // FIXME remove this "feature", a key should be specified