@Override public Policy setResourceFor(final CharSequence label, final Resource resource) { final Label lbl = Label.of(label); checkNotNull(resource, "resource to set to the Policy entry"); final Map<Label, PolicyEntry> entriesCopy = copyEntries(); final PolicyEntry modifiedEntry; if (!entriesCopy.containsKey(lbl)) { modifiedEntry = newPolicyEntry(label, PoliciesModelFactory.emptySubjects(), newResources(resource)); } else { final PolicyEntry policyEntry = entriesCopy.get(lbl); final Resources modifiedResources = policyEntry.getResources().setResource(resource); modifiedEntry = newPolicyEntry(label, policyEntry.getSubjects(), modifiedResources); } entriesCopy.put(lbl, modifiedEntry); return new ImmutablePolicy(policyId, entriesCopy, lifecycle, revision, modified); }
.map(policyEntry -> PoliciesModelFactory.newPolicyEntry(rc.getLabel(), policyEntry.getSubjects(), policyEntry.getResources().setResource(rc.getResource()))) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder() .set(modifiedPolicyEntry) .map(policyEntry -> PoliciesModelFactory.newPolicyEntry(rm.getLabel(), policyEntry.getSubjects(), policyEntry.getResources().setResource(rm.getResource()))) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder() .set(modifiedPolicyEntry)
.map(policyEntry -> PoliciesModelFactory.newPolicyEntry(rc.getLabel(), policyEntry.getSubjects(), policyEntry.getResources().setResource(rc.getResource()))) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder() .set(modifiedPolicyEntry) .map(policyEntry -> PoliciesModelFactory.newPolicyEntry(rm.getLabel(), policyEntry.getSubjects(), policyEntry.getResources().setResource(rm.getResource()))) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder() .set(modifiedPolicyEntry)