private PagsGroup initGroupDef(IPersonAttributesGroupDefinition group) { Element element = this.pagsGroupCache.get(group.getName()); if (element != null) { return (PagsGroup) element.getObjectValue(); } PagsGroup groupDef = new PagsGroup(); groupDef.setKey(group.getName()); groupDef.setName(group.getName()); groupDef.setDescription(group.getDescription()); addMemberKeys(groupDef, group.getMembers()); Set<IPersonAttributesGroupTestGroupDefinition> testGroups = group.getTestGroups(); for (IPersonAttributesGroupTestGroupDefinition testGroup : testGroups) { TestGroup tg = new TestGroup(); Set<IPersonAttributesGroupTestDefinition> tests = testGroup.getTests(); for (IPersonAttributesGroupTestDefinition test : tests) { IPersonTester testerInst = initializeTester(test); if (testerInst == null) { /* * A tester was intended that we cannot now recreate. This * is a potentially dangerous situation, since tests in PAGS * are "or-ed" together; a functioning group with a missing * test would have a wider membership, not narrower. (And * remember -- permissions are tied to groups.) We need to * play it safe and keep this group out of the mix. */ return null; } tg.addTest(testerInst); } groupDef.addTestGroup(tg); } element = new Element(group.getName(), groupDef); this.pagsGroupCache.put(element); return groupDef; }
@Override public Iterator<IEntityGroup> findMemberGroups(IEntityGroup group) throws GroupsException { /* * The GaP system prevents this method from being called with a nn-PAGS group. */ IPersonAttributesGroupDefinition pagsGroup = getPagsGroupDefByName(group.getName()); List<IEntityGroup> results = new ArrayList<IEntityGroup>(); for (IPersonAttributesGroupDefinition member : pagsGroup.getMembers()) { results.add(convertPagsGroupToEntity(member)); } return results.iterator(); }