/** * Calculate an ordered list of ancestors, starting with the parent * * @param roleName */ public List<String> getAncestors(String roleName) { checkRole(roleName); List<String> ancestors = new ArrayList<String>(); fillAncestors(parentMappings.get(roleName), ancestors); return ancestors; }
/** * recursive method to fill the ancestor list * * @param roleName * @param ancestors */ protected void fillAncestors(String roleName, List<String> ancestors) { if (roleName == null || roleName.length() == 0) return; // end recursion ancestors.add(roleName); String parentName = parentMappings.get(roleName); if (ancestors.contains(parentName)) { cycleDetected(roleName, parentName); } fillAncestors(parentMappings.get(roleName), ancestors); }