Skip to content

Commit

Permalink
[#1228] renamed MiscPlaceholder to TimePlaceholder
Browse files Browse the repository at this point in the history
* moved TimePlaceholder to "ditto-placeholders"
* added support for parsing placeholders as value in RqlParserPase as new type ParsedPlaceholder

Signed-off-by: Thomas Jaeckle <thomas.jaeckle@bosch.io>
  • Loading branch information
thjaeckle committed Dec 17, 2021
1 parent dd30dba commit ec58c57
Show file tree
Hide file tree
Showing 28 changed files with 451 additions and 155 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
package org.eclipse.ditto.connectivity.api.placeholders;

import org.eclipse.ditto.protocol.placeholders.MiscPlaceholder;
import org.eclipse.ditto.placeholders.TimePlaceholder;
import org.eclipse.ditto.protocol.placeholders.ResourcePlaceholder;
import org.eclipse.ditto.protocol.placeholders.TopicPathPlaceholder;

Expand Down Expand Up @@ -72,10 +72,10 @@ public static ResourcePlaceholder newResourcePlaceholder() {
}

/**
* @return the singleton instance of {@link MiscPlaceholder}
* @return the singleton instance of {@link TimePlaceholder}
*/
public static MiscPlaceholder newMiscPlaceholder() {
return MiscPlaceholder.getInstance();
public static TimePlaceholder newMiscPlaceholder() {
return TimePlaceholder.getInstance();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,13 @@
import org.eclipse.ditto.placeholders.ExpressionResolver;
import org.eclipse.ditto.placeholders.HeadersPlaceholder;
import org.eclipse.ditto.placeholders.PlaceholderFactory;
import org.eclipse.ditto.placeholders.TimePlaceholder;
import org.eclipse.ditto.protocol.Adaptable;
import org.eclipse.ditto.protocol.HeaderTranslator;
import org.eclipse.ditto.protocol.JsonifiableAdaptable;
import org.eclipse.ditto.protocol.ProtocolFactory;
import org.eclipse.ditto.protocol.TopicPath;
import org.eclipse.ditto.protocol.adapter.DittoProtocolAdapter;
import org.eclipse.ditto.protocol.placeholders.MiscPlaceholder;
import org.eclipse.ditto.things.model.ThingId;
import org.eclipse.ditto.things.model.signals.commands.modify.MergeThing;
import org.eclipse.ditto.things.model.signals.commands.query.ThingQueryCommandResponse;
Expand All @@ -69,7 +69,7 @@ public class UpdateTwinWithLiveResponseMessageMapper extends AbstractMessageMapp
private static final DittoProtocolAdapter DITTO_PROTOCOL_ADAPTER =
DittoProtocolAdapter.of(HeaderTranslator.empty());

private static final MiscPlaceholder MISC_PLACEHOLDER = MiscPlaceholder.getInstance();
private static final TimePlaceholder TIME_PLACEHOLDER = TimePlaceholder.getInstance();
private static final HeadersPlaceholder HEADERS_PLACEHOLDER = PlaceholderFactory.newHeadersPlaceholder();
private static final RequestPlaceholder REQUEST_PLACEHOLDER = ConnectivityPlaceholders.newRequestPlaceholder();

Expand Down Expand Up @@ -188,7 +188,7 @@ private Map<String, String> resolvePlaceholders(final Map<String, String> extern
private static ExpressionResolver getExpressionResolver(final Map<String, String> headers,
@Nullable final AuthorizationContext authorizationContext) {
return PlaceholderFactory.newExpressionResolver(List.of(
PlaceholderFactory.newPlaceholderResolver(MISC_PLACEHOLDER, new Object()),
PlaceholderFactory.newPlaceholderResolver(TIME_PLACEHOLDER, new Object()),
PlaceholderFactory.newPlaceholderResolver(HEADERS_PLACEHOLDER, headers),
PlaceholderFactory.newPlaceholderResolver(REQUEST_PLACEHOLDER, authorizationContext)
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@
import org.eclipse.ditto.json.JsonValue;
import org.eclipse.ditto.placeholders.PlaceholderFactory;
import org.eclipse.ditto.placeholders.PlaceholderResolver;
import org.eclipse.ditto.placeholders.TimePlaceholder;
import org.eclipse.ditto.protocol.TopicPath;
import org.eclipse.ditto.protocol.adapter.DittoProtocolAdapter;
import org.eclipse.ditto.protocol.placeholders.MiscPlaceholder;
import org.eclipse.ditto.protocol.placeholders.ResourcePlaceholder;
import org.eclipse.ditto.protocol.placeholders.TopicPathPlaceholder;
import org.eclipse.ditto.rql.parser.RqlPredicateParser;
Expand Down Expand Up @@ -127,7 +127,7 @@ public final class OutboundMappingProcessorActor
private static final DittoProtocolAdapter DITTO_PROTOCOL_ADAPTER = DittoProtocolAdapter.newInstance();
private static final TopicPathPlaceholder TOPIC_PATH_PLACEHOLDER = TopicPathPlaceholder.getInstance();
private static final ResourcePlaceholder RESOURCE_PLACEHOLDER = ResourcePlaceholder.getInstance();
private static final MiscPlaceholder MISC_PLACEHOLDER = MiscPlaceholder.getInstance();
private static final TimePlaceholder TIME_PLACEHOLDER = TimePlaceholder.getInstance();

private final ThreadSafeDittoLoggingAdapter dittoLoggingAdapter;

Expand Down Expand Up @@ -640,17 +640,17 @@ private Collection<OutboundSignalWithSender> applyFilter(final OutboundSignalWit
.newPlaceholderResolver(TOPIC_PATH_PLACEHOLDER, topicPath);
final PlaceholderResolver<WithResource> resourcePlaceholderResolver = PlaceholderFactory
.newPlaceholderResolver(RESOURCE_PLACEHOLDER, signal);
final PlaceholderResolver<Object> miscPlaceholderResolver = PlaceholderFactory
.newPlaceholderResolver(MISC_PLACEHOLDER, new Object());
final PlaceholderResolver<Object> timePlaceholderResolver = PlaceholderFactory
.newPlaceholderResolver(TIME_PLACEHOLDER, new Object());
final DittoHeaders dittoHeaders = signal.getDittoHeaders();
final Criteria criteria = QueryFilterCriteriaFactory.modelBased(RqlPredicateParser.getInstance(),
topicPathPlaceholderResolver, resourcePlaceholderResolver, miscPlaceholderResolver
topicPathPlaceholderResolver, resourcePlaceholderResolver, timePlaceholderResolver
).filterCriteria(filter.get(), dittoHeaders);
return outboundSignalWithExtra.getExtra()
.flatMap(extra -> ThingEventToThingConverter
.mergeThingWithExtraFields(signal, extraFields.get(), extra)
.filter(ThingPredicateVisitor.apply(criteria, topicPathPlaceholderResolver,
resourcePlaceholderResolver, miscPlaceholderResolver))
resourcePlaceholderResolver, timePlaceholderResolver))
.map(thing -> outboundSignalWithExtra))
.map(Collections::singletonList)
.orElse(List.of());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@
import org.eclipse.ditto.messages.model.signals.commands.MessageCommandResponse;
import org.eclipse.ditto.placeholders.PlaceholderFactory;
import org.eclipse.ditto.placeholders.PlaceholderResolver;
import org.eclipse.ditto.placeholders.TimePlaceholder;
import org.eclipse.ditto.policies.model.signals.announcements.PolicyAnnouncement;
import org.eclipse.ditto.protocol.TopicPath;
import org.eclipse.ditto.protocol.adapter.DittoProtocolAdapter;
import org.eclipse.ditto.protocol.placeholders.MiscPlaceholder;
import org.eclipse.ditto.protocol.placeholders.ResourcePlaceholder;
import org.eclipse.ditto.protocol.placeholders.TopicPathPlaceholder;
import org.eclipse.ditto.rql.parser.RqlPredicateParser;
Expand All @@ -72,7 +72,7 @@ public final class SignalFilter {
private static final DittoProtocolAdapter DITTO_PROTOCOL_ADAPTER = DittoProtocolAdapter.newInstance();
private static final TopicPathPlaceholder TOPIC_PATH_PLACEHOLDER = TopicPathPlaceholder.getInstance();
private static final ResourcePlaceholder RESOURCE_PLACEHOLDER = ResourcePlaceholder.getInstance();
private static final MiscPlaceholder MISC_PLACEHOLDER = MiscPlaceholder.getInstance();
private static final TimePlaceholder TIME_PLACEHOLDER = TimePlaceholder.getInstance();

private final Connection connection;
private final ConnectionMonitorRegistry<ConnectionMonitor> connectionMonitorRegistry;
Expand Down Expand Up @@ -168,22 +168,22 @@ private static boolean matchesFilterBeforeEnrichment(final FilteredTopic filtere
PlaceholderFactory.newPlaceholderResolver(TOPIC_PATH_PLACEHOLDER, topicPath);
final PlaceholderResolver<WithResource> resourcePlaceholderResolver = PlaceholderFactory
.newPlaceholderResolver(RESOURCE_PLACEHOLDER, signal);
final PlaceholderResolver<Object> miscPlaceholderResolver = PlaceholderFactory
.newPlaceholderResolver(MISC_PLACEHOLDER, new Object());
final PlaceholderResolver<Object> timePlaceholderResolver = PlaceholderFactory
.newPlaceholderResolver(TIME_PLACEHOLDER, new Object());
final Criteria criteria = parseCriteria(filterOptional.get(), signal.getDittoHeaders(),
topicPathPlaceholderResolver, resourcePlaceholderResolver, miscPlaceholderResolver);
topicPathPlaceholderResolver, resourcePlaceholderResolver, timePlaceholderResolver);
final Set<JsonPointer> extraFields = filteredTopic.getExtraFields()
.map(JsonFieldSelector::getPointers)
.orElse(Collections.emptySet());
if (signal instanceof ThingEvent) {
return ThingEventToThingConverter.thingEventToThing((ThingEvent<?>) signal)
.filter(thing -> Thing3ValuePredicateVisitor.couldBeTrue(criteria, extraFields, thing,
topicPathPlaceholderResolver, resourcePlaceholderResolver, miscPlaceholderResolver))
topicPathPlaceholderResolver, resourcePlaceholderResolver, timePlaceholderResolver))
.isPresent();
} else {
final Thing emptyThing = Thing.newBuilder().build();
return Thing3ValuePredicateVisitor.couldBeTrue(criteria, extraFields, emptyThing,
topicPathPlaceholderResolver, resourcePlaceholderResolver, miscPlaceholderResolver);
topicPathPlaceholderResolver, resourcePlaceholderResolver, timePlaceholderResolver);
}
} else {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
import org.eclipse.ditto.connectivity.service.messaging.monitoring.logs.ConnectionLogger;
import org.eclipse.ditto.placeholders.ExpressionResolver;
import org.eclipse.ditto.placeholders.PlaceholderFactory;
import org.eclipse.ditto.protocol.placeholders.MiscPlaceholder;
import org.eclipse.ditto.placeholders.TimePlaceholder;
import org.eclipse.ditto.protocol.placeholders.ResourcePlaceholder;
import org.eclipse.ditto.protocol.placeholders.TopicPathPlaceholder;
import org.eclipse.ditto.rql.parser.RqlPredicateParser;
Expand Down Expand Up @@ -82,7 +82,7 @@ private ConnectionValidator(LoggingAdapter loggingAdapter,
.collect(Collectors.toMap(AbstractProtocolValidator::type, Function.identity()));
this.specMap = Collections.unmodifiableMap(theSpecMap);
queryFilterCriteriaFactory = QueryFilterCriteriaFactory.modelBased(RqlPredicateParser.getInstance(),
TopicPathPlaceholder.getInstance(), ResourcePlaceholder.getInstance(), MiscPlaceholder.getInstance());
TopicPathPlaceholder.getInstance(), ResourcePlaceholder.getInstance(), TimePlaceholder.getInstance());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public final class UpdateTwinWithLiveResponseMessageMapperTest {
private static final String CUSTOM_HEADER_KEY = "some-custom-hint";
private static final String CUSTOM_HEADER_VALUE = "my-awesome-hint";
private static final JsonValue KNOWN_METADATA_VALUE_2 = JsonValue.of("{{ header:" + CUSTOM_HEADER_KEY + " }}");
private static final JsonValue KNOWN_METADATA_VALUE_3 = JsonValue.of("{{ misc:current-timestamp-iso8601 }}");
private static final JsonValue KNOWN_METADATA_VALUE_3 = JsonValue.of("{{ time:now }}");
private static final String UNRESOLVED_HEADER_KEY = "unresolvable-header";
private static final String UNRESOLVABLE_HEADER_DEFAULT_FALLBACK = "none";
private static final JsonValue KNOWN_METADATA_VALUE_4 = JsonValue.of("{{header:" + UNRESOLVED_HEADER_KEY +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ published: true
permalink: 2021-11-26-http-live-channel.html
layout: post
author: stefan_maute
tags: [blog, http, live]
tags: [blog, http]
hide_sidebar: true
sidebar: false
toc: true
Expand Down

0 comments on commit ec58c57

Please sign in to comment.