/* (non-Javadoc) * @see org.jasig.portal.groups.IEntityGroupStore#findEntitiesForGroup(org.jasig.portal.groups.IEntityGroup) */ @SuppressWarnings("unchecked") public Iterator findEntitiesForGroup(IEntityGroup group) throws GroupsException { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Searching Grouper for members of the group with key: " + group.getKey()); } try { // execute a search for members of the specified group GcGetMembers getGroupsMembers = new GcGetMembers(); getGroupsMembers.addGroupName(group.getLocalKey()); getGroupsMembers.assignIncludeSubjectDetail(true); WsGetMembersResults results = getGroupsMembers.execute(); if (results == null || results.getResults() == null || results.getResults().length == 0 || results.getResults()[0].getWsSubjects() == null) { LOGGER.debug("No members found for Grouper group with key " + group.getLocalKey()); return Collections.<IGroupMember>emptyList().iterator(); } WsSubject[] gInfos = results.getResults()[0].getWsSubjects(); final List<IGroupMember> members = new ArrayList<IGroupMember>(gInfos.length); // add each result to the member list for (WsSubject gInfo : gInfos) { // if the member is not a group (aka person) if (!StringUtils.equals(gInfo.getSourceId(), "g:gsa")) { if (LOGGER.isDebugEnabled()) { LOGGER.debug( "creating leaf member:" + gInfo.getId() + " and name: " + gInfo.getName() + " from group: " + group.getLocalKey()); } // use the name instead of id as it shows better in the display IGroupMember member = new EntityImpl(gInfo.getName(), IPerson.class); members.add(member); } } // return an iterator for the assembled group return members.iterator(); } catch (Exception e) { LOGGER.warn( "Exception while attempting to retrieve " + "member entities of group with key " + group.getKey() + " from Grouper web services: " + e.getMessage()); return Collections.<IGroupMember>emptyList().iterator(); } }
@SuppressWarnings("unchecked") public Iterator findMemberGroups(IEntityGroup group) throws GroupsException { if (LOGGER.isDebugEnabled()) { LOGGER.debug("Searching for group-type members of group with key: " + group.getKey()); } try { if (!validKey(group.getLocalKey())) { return Collections.<IEntityGroup>emptyList().iterator(); } GcGetMembers gcGetMembers = new GcGetMembers(); gcGetMembers.addGroupName(group.getLocalKey()); gcGetMembers.assignIncludeSubjectDetail(true); gcGetMembers.addSourceId("g:gsa"); WsGetMembersResults results = gcGetMembers.execute(); if (results == null || results.getResults() == null || results.getResults().length == 0 || results.getResults()[0].getWsSubjects() == null) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("No group-type members found for group with key " + group.getKey()); } return Collections.<IEntityGroup>emptyList().iterator(); } final List<IEntityGroup> members = new ArrayList<IEntityGroup>(); WsSubject[] subjects = results.getResults()[0].getWsSubjects(); for (WsSubject wsSubject : subjects) { if (validKey(wsSubject.getName())) { WsGroup wsGroup = findGroupFromKey(wsSubject.getName()); if (wsGroup != null) { IEntityGroup member = createUportalGroupFromGrouperGroup(wsGroup); members.add(member); if (LOGGER.isTraceEnabled()) { LOGGER.trace("found IEntityGroup member: " + member); } } } } return members.iterator(); } catch (Exception e) { LOGGER.warn( "Exception while attempting to retrieve " + "member groups of group with key " + group.getKey() + " from Grouper web services: " + e.getMessage()); return Collections.<IGroupMember>emptyList().iterator(); } }