/** * Returns a new {@code ResourceNode} for the given {@code parent} and {@code name}. * * @param parent the parent node of this resource node. * @param name the sub resource name of this node. * @return the ResourceNode. * @throws NullPointerException if any argument is {@code null} */ public static ResourceNode of(final PolicyTreeNode parent, final String name) { return of(parent, name, EffectedPermissions.newInstance(Permissions.none(), Permissions.none())); }
private static void mergePermissions(final Resource resource, final ResourceNode existingChild) { final EffectedPermissions existingChildPermissions = existingChild.getPermissions(); final Collection<String> mergedGrantedPermissions = new HashSet<>(existingChildPermissions.getGrantedPermissions()); final Collection<String> mergedRevokedPermissions = new HashSet<>(existingChildPermissions.getRevokedPermissions()); if (!resource.getEffectedPermissions().getRevokedPermissions().isEmpty()) { mergedRevokedPermissions.addAll(resource.getEffectedPermissions().getRevokedPermissions()); } if (!resource.getEffectedPermissions().getGrantedPermissions().isEmpty()) { mergedGrantedPermissions.addAll(resource.getEffectedPermissions().getGrantedPermissions()); } existingChild.setPermissions( EffectedPermissions.newInstance(mergedGrantedPermissions, mergedRevokedPermissions)); }
.orElseGet(() -> { final ResourceNode child = ResourceNode.of(parentNode, resource.getType(), EffectedPermissions.newInstance(new ArrayList<>(), new ArrayList<>())); parentNode.addChild(child); return child;