/** * Creates a <code>RestrictedMemberReader</code>. * * <p>There's no filtering to be done unless either the role has restrictions on this hierarchy, * or the hierarchy is ragged; there's a pre-condition to this effect. * * @param memberReader Underlying (presumably unrestricted) member reader * @param role Role whose access profile to obey. The role must have restrictions on this * hierarchy * @pre role.getAccessDetails(memberReader.getHierarchy()) != null || * memberReader.getHierarchy().isRagged() */ RestrictedMemberReader(MemberReader memberReader, Role role) { super(memberReader); RolapHierarchy hierarchy = memberReader.getHierarchy(); ragged = hierarchy.isRagged(); if (role.getAccessDetails(hierarchy) == null) { assert ragged; hierarchyAccess = RoleImpl.createAllAccess(hierarchy); } else { hierarchyAccess = role.getAccessDetails(hierarchy); } }