@Override public void match(final M filterInput, final DittoHeaders dittoHeaders) { final boolean match = enforcement.getFilters() .stream() .map(filter -> PlaceholderFilter.apply(filter, filterInput, filterPlaceholder)) .anyMatch(resolved -> resolved.equals(inputValue)); if (!match) { throw getEnforcementFailedException(dittoHeaders); } }
/** * Create a copy of this object with error message set. * * @param enforcement the enforcement options * @return a copy of this object. */ public static Enforcement newEnforcement(final Enforcement enforcement) { return ImmutableEnforcement.of(enforcement.getInput(), enforcement.getFilters()); }
/** * Create a copy of this object with error message set. * * @param enforcement the enforcement options * @return a copy of this object. */ public static Enforcement newEnforcement(final Enforcement enforcement) { return ImmutableEnforcement.of(enforcement.getInput(), enforcement.getFilters()); }
@Override protected void validateSource(final Source source, final DittoHeaders dittoHeaders, final Supplier<String> sourceDescription) { source.getEnforcement().ifPresent(enforcement -> { validateTemplate(enforcement.getInput(), PlaceholderFactory.newHeadersPlaceholder(), dittoHeaders); enforcement.getFilters().forEach(filterTemplate -> validateTemplate(filterTemplate, PlaceholderFactory.newThingPlaceholder(), dittoHeaders)); }); source.getHeaderMapping().ifPresent(mapping -> validateHeaderMapping(mapping, dittoHeaders)); }
@Override protected void validateSource(final Source source, final DittoHeaders dittoHeaders, final Supplier<String> sourceDescription) { source.getEnforcement().ifPresent(enforcement -> { validateTemplate(enforcement.getInput(), PlaceholderFactory.newHeadersPlaceholder(), dittoHeaders); enforcement.getFilters().forEach(filterTemplate -> validateTemplate(filterTemplate, PlaceholderFactory.newThingPlaceholder(), dittoHeaders)); }); source.getHeaderMapping().ifPresent(mapping -> validateHeaderMapping(mapping, dittoHeaders)); }
@Override protected void validateSource(final Source source, final DittoHeaders dittoHeaders, final Supplier<String> sourceDescription) { source.getEnforcement().ifPresent(enforcement -> { validateTemplate(enforcement.getInput(), PlaceholderFactory.newHeadersPlaceholder(), dittoHeaders); enforcement.getFilters().forEach(filterTemplate -> validateTemplate(filterTemplate, PlaceholderFactory.newThingPlaceholder(), dittoHeaders)); }); source.getHeaderMapping().ifPresent(mapping -> validateHeaderMapping(mapping, dittoHeaders)); }
@Override protected void validateSource(final Source source, final DittoHeaders dittoHeaders, final Supplier<String> sourceDescription) { source.getEnforcement().ifPresent(enforcement -> { validateTemplate(enforcement.getInput(), PlaceholderFactory.newHeadersPlaceholder(), dittoHeaders); enforcement.getFilters().forEach(filterTemplate -> validateTemplate(filterTemplate, PlaceholderFactory.newThingPlaceholder(), dittoHeaders)); }); source.getHeaderMapping().ifPresent(mapping -> validateHeaderMapping(mapping, dittoHeaders)); }
private static void validateSourceEnforcement(@Nullable final Enforcement enforcement, final DittoHeaders dittoHeaders, final Supplier<String> sourceDescription) { if (enforcement != null) { validateEnforcementInput(enforcement, sourceDescription, dittoHeaders); final String dummyThingId = "namespace:name"; final Map<String, String> filtersMap = PlaceholderFilter.filterAddressesAsMap(enforcement.getFilters(), dummyThingId, filter -> { throw invalidValueForConfig(filter, "filters", sourceDescription.get()) .description("Placeholder substitution failed. " + "Please check the placeholder variables against the documentation.") .dittoHeaders(dittoHeaders) .build(); }); filtersMap.forEach((filter, mqttTopic) -> validateMqttTopic(mqttTopic, true, errorMessage -> invalidValueForConfig(filter, "filters", sourceDescription.get()) .description( "The filter is not a valid MQTT topic after placeholder substitution. " + "Wildcard characters are allowed.") .dittoHeaders(dittoHeaders) .build())); } }
private static void validateSourceEnforcement(@Nullable final Enforcement enforcement, final DittoHeaders dittoHeaders, final Supplier<String> sourceDescription) { if (enforcement != null) { validateEnforcementInput(enforcement, sourceDescription, dittoHeaders); final String dummyThingId = "namespace:name"; final Map<String, String> filtersMap = PlaceholderFilter.filterAddressesAsMap(enforcement.getFilters(), dummyThingId, filter -> { throw invalidValueForConfig(filter, "filters", sourceDescription.get()) .description("Placeholder substitution failed. " + "Please check the placeholder variables against the documentation.") .dittoHeaders(dittoHeaders) .build(); }); filtersMap.forEach((filter, mqttTopic) -> validateMqttTopic(mqttTopic, true, errorMessage -> invalidValueForConfig(filter, "filters", sourceDescription.get()) .description( "The filter is not a valid MQTT topic after placeholder substitution. " + "Wildcard characters are allowed.") .dittoHeaders(dittoHeaders) .build())); } }