@Override public WithDittoHeaders apply(final ModifyAclEntry modifyAclEntry, final HeaderBasedPlaceholderSubstitutionAlgorithm substitutionAlgorithm) { requireNonNull(modifyAclEntry); requireNonNull(substitutionAlgorithm); final DittoHeaders dittoHeaders = modifyAclEntry.getDittoHeaders(); final AclEntry existingAclEntry = modifyAclEntry.getAclEntry(); final AclEntry substitutedAclEntry = substituteAclEntry(existingAclEntry, substitutionAlgorithm, dittoHeaders); if (existingAclEntry.equals(substitutedAclEntry)) { return modifyAclEntry; } else { return ModifyAclEntry.of(modifyAclEntry.getThingId(), substitutedAclEntry, dittoHeaders); } }
private static List<SubstitutionStrategy> createStrategies() { final List<SubstitutionStrategy> strategies = new LinkedList<>(); // replacement for policy-subject-id strategies.add(new ModifySubjectSubstitutionStrategy()); strategies.add(new ModifySubjectsSubstitutionStrategy()); strategies.add(new ModifyPolicyEntrySubstitutionStrategy()); strategies.add(new ModifyPolicyEntriesSubstitutionStrategy()); strategies.add(new ModifyPolicySubstitutionStrategy()); strategies.add(new CreatePolicySubstitutionStrategy()); // replacement for acl-subject-id strategies.add(new ModifyAclEntrySubstitutionStrategy()); strategies.add(new ModifyAclSubstitutionStrategy()); // replacement for both policy-subject-id and acl-subject-id strategies.add(new ModifyThingSubstitutionStrategy()); strategies.add(new CreateThingSubstitutionStrategy()); return strategies; } }