/** * Add a group to cache, only netgroups are cached * * @param groups list of group names to add to cache */ @Override public void cacheGroupsAdd(List<String> groups) throws IOException { for (String group : groups) { if (group.length() == 0) { // better safe than sorry (should never happen) } else if (group.charAt(0) == '@') { if (!NetgroupCache.isCached(group)) { NetgroupCache.add(group, getUsersForNetgroup(group)); } } else { // unix group, not caching } } }
/** * Get unix groups (parent) and netgroups for given user * * @param user get groups and netgroups for this user * @return groups and netgroups for user */ @Override public List<String> getGroups(String user) throws IOException { // parent get unix groups List<String> groups = new LinkedList<String>(super.getGroups(user)); NetgroupCache.getNetgroups(user, groups); return groups; }
/** Refresh the netgroup cache */ @Override public void cacheGroupsRefresh() throws IOException { List<String> groups = NetgroupCache.getNetgroupNames(); NetgroupCache.clear(); cacheGroupsAdd(groups); }