Skip to content

Commit

Permalink
Handle empty field selectors for signal enrichment in Gateway
Browse files Browse the repository at this point in the history
Signed-off-by: Yannic Klem <Yannic.Klem@bosch.io>
  • Loading branch information
Yannic92 committed Apr 5, 2022
1 parent 81f6715 commit c13a647
Showing 1 changed file with 6 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public CompletionStage<JsonObject> retrieveExtraFields(@Nullable final SignalEnr
newPlaceholderResolver(RequestPlaceholder.getInstance(), getDittoHeaders().getAuthorizationContext())
);
final Optional<ThingFieldSelector> resolvedExtraFields = session.getExtraFields()
.map(extraFields -> getExtraFields(expressionResolver, extraFields));
.flatMap(extraFields -> getExtraFields(expressionResolver, extraFields));
if (resolvedExtraFields.isPresent()) {
final Optional<ThingId> thingIdOptional = WithEntityId.getEntityIdOfType(ThingId.class, signal);
if (facade != null && thingIdOptional.isPresent()) {
Expand All @@ -117,16 +117,19 @@ public CompletionStage<JsonObject> retrieveExtraFields(@Nullable final SignalEnr
}
}

private ThingFieldSelector getExtraFields(final ExpressionResolver expressionResolver,
private Optional<ThingFieldSelector> getExtraFields(final ExpressionResolver expressionResolver,
final ThingFieldSelector thingFieldSelector) {
final List<JsonPointer> jsonPointers = thingFieldSelector.getPointers().stream()
.map(JsonPointer::toString)
.map(expressionResolver::resolve)
.flatMap(PipelineElement::toStream)
.map(JsonPointer::of)
.collect(Collectors.toList());
if(jsonPointers.isEmpty()) {
return Optional.empty();
}
final JsonFieldSelector jsonFieldSelector = JsonFactory.newFieldSelector(jsonPointers);
return ThingFieldSelector.fromJsonFieldSelector(jsonFieldSelector);
return Optional.of(ThingFieldSelector.fromJsonFieldSelector(jsonFieldSelector));
}

@Override
Expand Down

0 comments on commit c13a647

Please sign in to comment.