- public Role[] getRoles(String filter) throws InvalidSyntaxException {
- throw new UnsupportedOperationException();
+ protected List<DirectoryGroup> getDirectGroups(User user) {
+ LdapName dn;
+ if (user instanceof LdifUser)
+ dn = ((LdifUser) user).getDn();
+ else
+ try {
+ dn = new LdapName(user.getName());
+ } catch (InvalidNameException e) {
+ throw new UserDirectoryException("Badly formatted user name "
+ + user.getName(), e);
+ }
+
+ List<DirectoryGroup> directGroups = new ArrayList<DirectoryGroup>();
+ for (LdapName name : groups.keySet()) {
+ DirectoryGroup group = groups.get(name);
+ if (group.getMemberNames().contains(dn))
+ directGroups.add(group);
+ }
+ return directGroups;