@Override public ImmutablePolicyBuilder removeResourceFor(final CharSequence label, final ResourceKey resourceKey) { checkNotNull(resourceKey, "key of the resource to be removed"); retrieveGrantedPermissions(label).remove(resourceKey); retrieveRevokedPermissions(label).remove(resourceKey); return this; }
@Nonnull private Resources getFinalResources(final CharSequence label) { final Map<ResourceKey, Permissions> grantedMap = retrieveGrantedPermissions(label); final Map<ResourceKey, Permissions> revokedMap = retrieveRevokedPermissions(label); final Collection<ResourceKey> allResourceKeys = new LinkedHashSet<>(grantedMap.keySet()); allResourceKeys.addAll(revokedMap.keySet()); final Collection<Resource> resourcesList = allResourceKeys.stream() .map(resourceKey -> { final Permissions granted = grantedMap.get(resourceKey); final Permissions revoked = revokedMap.get(resourceKey); final EffectedPermissions ep = PoliciesModelFactory.newEffectedPermissions(granted, revoked); return PoliciesModelFactory.newResource(resourceKey, ep); }) .collect(Collectors.toList()); return PoliciesModelFactory.newResources(resourcesList); }
@Override public ImmutablePolicyBuilder setGrantedPermissionsFor(final CharSequence label, final ResourceKey resourceKey, final Permissions grantedPermissions) { checkResourceKey(resourceKey); checkNotNull(revokedPermissions, "granted permissions"); retrieveGrantedPermissions(label).put(resourceKey, grantedPermissions); return this; }
@Override public ImmutablePolicyBuilder setPermissionsFor(final CharSequence label, final ResourceKey resourceKey, final EffectedPermissions effectedPermissions) { checkResourceKey(resourceKey); checkNotNull(effectedPermissions, "permissions to be set"); retrieveGrantedPermissions(label).put(resourceKey, effectedPermissions.getGrantedPermissions()); retrieveRevokedPermissions(label).put(resourceKey, effectedPermissions.getRevokedPermissions()); return this; }
@Override public ImmutablePolicyBuilder setResourcesFor(final CharSequence label, final Resources resources) { checkNotNull(resources, "Resources to be set"); final Map<ResourceKey, Permissions> grantedMap = retrieveGrantedPermissions(label); final Map<ResourceKey, Permissions> revokedMap = retrieveRevokedPermissions(label); resources.forEach(resource -> { final ResourceKey resourceKey = resource.getResourceKey(); final EffectedPermissions effectedPermissions = resource.getEffectedPermissions(); grantedMap.put(resourceKey, effectedPermissions.getGrantedPermissions()); revokedMap.put(resourceKey, effectedPermissions.getRevokedPermissions()); }); return this; }