static Subjects substituteSubjects(final Subjects subjects, final HeaderBasedPlaceholderSubstitutionAlgorithm substitutionAlgorithm, final DittoHeaders dittoHeaders) { Subjects newSubjects = subjects; for (final Subject subject : subjects) { final String subjectId = subject.getId().toString(); final String substitutedSubjectId = substitutionAlgorithm.substitute(subjectId, dittoHeaders); if (!subjectId.equals(substitutedSubjectId)) { final Subject newSubject = Subject.newInstance(substitutedSubjectId, subject.getType()); newSubjects = newSubjects.removeSubject(subjectId).setSubject(newSubject); } } return newSubjects; }
@Override public Policy setSubjectFor(final CharSequence label, final Subject subject) { final Label lbl = Label.of(label); checkNotNull(subject, "subject to set to the Policy entry"); final Policy result; final PolicyEntry existingPolicyEntry = entries.get(lbl); if (null != existingPolicyEntry) { final Subjects existingSubjects = existingPolicyEntry.getSubjects(); final Subjects newSubjects = existingSubjects.setSubject(subject); if (!Objects.equals(existingSubjects, newSubjects)) { final Map<Label, PolicyEntry> entriesCopy = copyEntries(); entriesCopy.put(lbl, newPolicyEntry(lbl, newSubjects, existingPolicyEntry.getResources())); result = new ImmutablePolicy(policyId, entriesCopy, lifecycle, revision, modified); } else { result = this; } } else { result = setSubjectsFor(label, Subjects.newInstance(subject)); } return result; }
.newPolicyEntry(sc.getLabel(), policyEntry.getSubjects().setSubject(sc.getSubject()), policyEntry.getResources())) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder() .newPolicyEntry(sm.getLabel(), policyEntry.getSubjects().setSubject(sm.getSubject()), policyEntry.getResources())) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder()
.newPolicyEntry(sc.getLabel(), policyEntry.getSubjects().setSubject(sc.getSubject()), policyEntry.getResources())) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder() .newPolicyEntry(sm.getLabel(), policyEntry.getSubjects().setSubject(sm.getSubject()), policyEntry.getResources())) .ifPresent(modifiedPolicyEntry -> policy = policy.toBuilder()