throw new UserDirectoryException(
"Attribute " + nameAttr.getID() + "=" + nameAttr.get() + " not consistent with DN " + name);
- writer.append(LdapAttrs.DN + ":").append(name.toString()).append('\n');
+ writer.append(LdapAttrs.DN + ": ").append(name.toString()).append('\n');
Attribute objectClassAttr = attributes.get("objectClass");
if (objectClassAttr != null)
writeAttribute(objectClassAttr);
Object value = attrValues.next();
if (value instanceof byte[]) {
String encoded = Base64.getEncoder().encodeToString((byte[]) value);
- writer.append(attribute.getID()).append("::").append(encoded).append('\n');
+ writer.append(attribute.getID()).append(":: ").append(encoded).append('\n');
} else {
- writer.append(attribute.getID()).append(':').append(value.toString()).append('\n');
+ writer.append(attribute.getID()).append(": ").append(value.toString()).append('\n');
}
}
}
package org.argeo.osgi.useradmin;
import static org.argeo.naming.LdapAttrs.objectClass;
+import static org.argeo.naming.LdapObjs.extensibleObject;
import static org.argeo.naming.LdapObjs.inetOrgPerson;
import static org.argeo.naming.LdapObjs.organizationalPerson;
import static org.argeo.naming.LdapObjs.person;
import java.util.List;
import javax.naming.InvalidNameException;
+import javax.naming.NameNotFoundException;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.argeo.naming.LdapAttrs;
+import org.argeo.naming.LdapObjs;
import org.osgi.framework.Filter;
import org.osgi.framework.FrameworkUtil;
import org.osgi.framework.InvalidSyntaxException;
protected abstract Boolean daoHasRole(LdapName dn);
- protected abstract DirectoryUser daoGetRole(LdapName key);
+ protected abstract DirectoryUser daoGetRole(LdapName key) throws NameNotFoundException;
protected abstract List<DirectoryUser> doGetRoles(Filter f);
protected DirectoryUser doGetRole(LdapName dn) {
UserDirectoryWorkingCopy wc = getWorkingCopy();
- DirectoryUser user = daoGetRole(dn);
+ DirectoryUser user;
+ try {
+ user = daoGetRole(dn);
+ } catch (NameNotFoundException e) {
+ user = null;
+ }
if (wc != null) {
if (user == null && wc.getNewUsers().containsKey(dn))
user = wc.getNewUsers().get(dn);
if (wc.getDeletedUsers().containsKey(dn)) {
wc.getDeletedUsers().remove(dn);
wc.getModifiedUsers().put(dn, attrs);
+ return getRole(name);
} else {
wc.getModifiedUsers().put(dn, attrs);
DirectoryUser newRole = newRole(dn, type, attrs);
wc.getNewUsers().put(dn, newRole);
+ return newRole;
}
- return getRole(name);
}
protected DirectoryUser newRole(LdapName dn, int type, Attributes attrs) {
objClass.add(person.name());
}
objClass.add(top.name());
+ objClass.add(extensibleObject.name());
attrs.put(objClass);
newRole = new LdifUser(this, dn, attrs);
} else if (type == Role.GROUP) {
@Override
protected Boolean daoHasRole(LdapName dn) {
- return daoGetRole(dn) != null;
+ try {
+ return daoGetRole(dn) != null;
+ } catch (NameNotFoundException e) {
+ return false;
+ }
}
@Override
- protected DirectoryUser daoGetRole(LdapName name) {
+ protected DirectoryUser daoGetRole(LdapName name) throws NameNotFoundException {
try {
Attributes attrs = getLdapContext().getAttributes(name);
if (attrs.size() == 0)
else
throw new UserDirectoryException("Unsupported LDAP type for " + name);
return res;
+ } catch (NameNotFoundException e) {
+ throw e;
} catch (NamingException e) {
log.error("Cannot get role: " + name, e);
return null;
import java.util.SortedMap;
import java.util.TreeMap;
+import javax.naming.NameNotFoundException;
import javax.naming.NamingEnumeration;
import javax.naming.directory.Attributes;
import javax.naming.ldap.LdapName;
groups = null;
}
- protected DirectoryUser daoGetRole(LdapName key) {
+ @Override
+ protected DirectoryUser daoGetRole(LdapName key) throws NameNotFoundException {
if (groups.containsKey(key))
return groups.get(key);
if (users.containsKey(key))
return users.get(key);
- return null;
+ throw new NameNotFoundException(key + " not persisted");
}
+ @Override
protected Boolean daoHasRole(LdapName dn) {
return users.containsKey(dn) || groups.containsKey(dn);
}