/** * Returns a collection with all roles matching a given key-value pair. * * @param key the key to search for; * @param value the value to search for. * @return a list with all matching roles, can be empty, but never <code>null</code>. */ public List getRoles(String key, String value) { if (key == null) { throw new IllegalArgumentException("Key cannot be null!"); } if (value == null) { throw new IllegalArgumentException("Value cannot be null!"); } List matchingRoles = new ArrayList(); try { String criteria = "(".concat(key).concat("=").concat(value).concat(")"); Role[] roles = m_store.getRoles(criteria); for (int i = 0; i < roles.length; i++) { Role role = roles[i]; if (!isPredefinedRole(role.getName())) { matchingRoles.add(wireChangeListener(role)); } } } catch (Exception e) { throw new BackendException("Failed to get roles!", e); } return matchingRoles; }
/** * Removes a given role as (required)member from any groups it is member of. * * @param removedRole the role that is removed from the store already, cannot be <code>null</code> * . * @throws BackendException in case of problems accessing the store. */ private void removeRoleFromAllGroups(Role removedRole) { try { Role[] roles = m_store.getRoles(null); for (int i = 0; i < roles.length; i++) { if (roles[i].getType() == Role.GROUP) { Group group = (Group) roles[i]; // Don't check whether the given role is actually a member // of the group, but let the group itself figure this out... group.removeMember(removedRole); } } } catch (Exception e) { throw new BackendException("Failed to get all roles!", e); } }
/** * Returns a collection with all roles matching a given filter. * * @param filter the filter to match the individual roles against, can be <code>null</code> if all * roles should be returned. * @return a list with all matching roles, can be empty, but never <code>null</code>. */ public List getRoles(String filter) { List matchingRoles = new ArrayList(); try { Role[] roles = m_store.getRoles(sanitizeFilter(filter)); for (int i = 0; i < roles.length; i++) { Role role = roles[i]; if (!isPredefinedRole(role.getName())) { matchingRoles.add(wireChangeListener(role)); } } } catch (Exception e) { throw new BackendException("Failed to get roles!", e); } return matchingRoles; }