use of org.dcache.gplazma.NoSuchPrincipalException in project dcache by dCache.
the class Nis method reverseMap.
@Override
public Set<Principal> reverseMap(Principal principal) throws NoSuchPrincipalException {
String id = principal.getName();
try {
Set<Principal> principals = new HashSet<>();
if (principal instanceof GidPrincipal) {
NamingEnumeration<SearchResult> ne = _ctx.search(NISMAP_GROUP_BY_GID, new BasicAttributes(GID_NUMBER_ATTRIBUTE, id));
while (ne.hasMore()) {
SearchResult result = ne.next();
String name = (String) result.getAttributes().get(COMMON_NAME_ATTRIBUTE).get();
principals.add(new GroupNamePrincipal(name));
}
} else if (principal instanceof UidPrincipal) {
NamingEnumeration<SearchResult> ne = _ctx.search(NISMAP_PASSWORD_BY_UID, new BasicAttributes(UID_NUMBER_ATTRIBUTE, id));
while (ne.hasMore()) {
SearchResult result = ne.next();
String name = (String) result.getAttributes().get(USER_ID_ATTRIBUTE).get();
principals.add(new UserNamePrincipal(name));
}
}
return principals;
} catch (NamingException e) {
LOGGER.debug("Failed to get reverse mapping: {}", e.toString());
}
throw new NoSuchPrincipalException(principal);
}
Aggregations