Skip to content

Commit

Permalink
fixed placeholder validation: placeholders must be unresolvable
Browse files Browse the repository at this point in the history
Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch-si.com>
  • Loading branch information
thjaeckle committed Jan 28, 2019
1 parent 118f933 commit 2d18107
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 4 deletions.
Expand Up @@ -94,6 +94,12 @@ protected void validateSourceConfigs(final Connection connection, final DittoHea
validateSource(source, dittoHeaders, sourceDescription(source, connection)));
}

/**
* TODO TJ doc
* @param source
* @param dittoHeaders
* @param sourceDescription
*/
protected abstract void validateSource(final Source source, final DittoHeaders dittoHeaders,
final Supplier<String> sourceDescription);

Expand All @@ -108,11 +114,22 @@ protected void validateTargetConfigs(final Connection connection,
connection.getTargets().forEach(target -> validateTarget(target, dittoHeaders, targetDescription(target, connection)));
}

/**
* TODO TJ doc
* @param headerMapping
* @param dittoHeaders
*/
protected void validateHeaderMapping(final HeaderMapping headerMapping, final DittoHeaders dittoHeaders) {
headerMapping.getMapping().forEach((key, value)
-> validateTemplate(value, dittoHeaders, newHeadersPlaceholder(), newThingPlaceholder()));
}

/**
* TODO TJ doc
* @param target
* @param dittoHeaders
* @param sourceDescription
*/
protected abstract void validateTarget(final Target target, final DittoHeaders dittoHeaders,
final Supplier<String> sourceDescription);

Expand Down Expand Up @@ -140,11 +157,23 @@ private static Supplier<String> targetDescription(final Target target, final Con
target.getAddress(), connection.getId());
}

/**
* TODO TJ doc
* @param template
* @param placeholder
* @param headers
*/
protected void validateTemplate(final String template, final Placeholder<?> placeholder,
final DittoHeaders headers) {
validateTemplate(template, headers, placeholder);
}

/**
* TODO TJ doc
* @param template
* @param headers
* @param placeholders
*/
protected void validateTemplate(final String template, final DittoHeaders headers,
final Placeholder<?>... placeholders) {
try {
Expand Down
Expand Up @@ -58,6 +58,7 @@ public void testValidHeaderMapping() {
.headerMapping(TestConstants.HEADER_MAPPING)
.build();

// TODO TJ - when validating the mapping should not be applied, should it?
UNDER_TEST.validateSource(source, DittoHeaders.empty(), () -> "testSource");
}

Expand Down
Expand Up @@ -186,12 +186,17 @@ private static <T> String doApply(final String template,
UNRESOLVED_INPUT_HANDLER, allowUnresolved);
}

/**
* TODO TJ doc
*
* @param template
* @param placeholders
* @return
*/
public static String validate(final String template, final Placeholder<?>... placeholders) {
String replaced = template;
for (int i = 0; i < placeholders.length; i++) {
boolean isNotLastPlaceholder = i < placeholders.length - 1;
final Placeholder<?> thePlaceholder = placeholders[i];
replaced = doApply(template, thePlaceholder, isNotLastPlaceholder,
for (final Placeholder<?> thePlaceholder : placeholders) {
replaced = doApply(template, thePlaceholder, true, // when validating, placeholders may be unresolved
placeholder -> Optional.of(thePlaceholder.getPrefix()));
}
return replaced;
Expand Down

0 comments on commit 2d18107

Please sign in to comment.