Skip to content

Commit

Permalink
Also resolve connectivity signals from Adaptables
Browse files Browse the repository at this point in the history
Signed-off-by: Florian Fendt <Florian.Fendt@bosch.io>
  • Loading branch information
ffendt committed May 5, 2021
1 parent 0f36719 commit 4e03f1c
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 1 deletion.
Expand Up @@ -26,6 +26,7 @@

import org.eclipse.ditto.protocol.Adaptable;
import org.eclipse.ditto.protocol.TopicPath;
import org.eclipse.ditto.protocol.adapter.connectivity.ConnectivityCommandAdapterProvider;
import org.eclipse.ditto.protocol.adapter.provider.AcknowledgementAdapterProvider;
import org.eclipse.ditto.protocol.adapter.provider.PolicyCommandAdapterProvider;
import org.eclipse.ditto.protocol.adapter.provider.ThingCommandAdapterProvider;
Expand All @@ -40,10 +41,12 @@ final class DefaultAdapterResolver implements AdapterResolver {

DefaultAdapterResolver(final ThingCommandAdapterProvider thingsAdapters,
final PolicyCommandAdapterProvider policiesAdapters,
final ConnectivityCommandAdapterProvider connectivityAdapters,
final AcknowledgementAdapterProvider acknowledgementAdapters) {
final List<Adapter<?>> adapters = new ArrayList<>();
adapters.addAll(thingsAdapters.getAdapters());
adapters.addAll(policiesAdapters.getAdapters());
adapters.addAll(connectivityAdapters.getAdapters());
adapters.addAll(acknowledgementAdapters.getAdapters());
resolver = computeResolver(adapters);
}
Expand Down
Expand Up @@ -96,7 +96,8 @@ private DittoProtocolAdapter(final ErrorRegistry<DittoRuntimeException> errorReg
this.policiesAdapters = new DefaultPolicyCommandAdapterProvider(errorRegistry, headerTranslator);
this.connectivityAdapters = new DefaultConnectivityCommandAdapterProvider(headerTranslator);
this.acknowledgementAdapters = new DefaultAcknowledgementsAdapterProvider(errorRegistry, headerTranslator);
this.adapterResolver = new DefaultAdapterResolver(thingsAdapters, policiesAdapters, acknowledgementAdapters);
this.adapterResolver = new DefaultAdapterResolver(thingsAdapters, policiesAdapters, connectivityAdapters,
acknowledgementAdapters);
}

private DittoProtocolAdapter(final HeaderTranslator headerTranslator,
Expand Down
Expand Up @@ -28,6 +28,8 @@
import java.util.Set;
import java.util.UUID;

import org.eclipse.ditto.connectivity.model.ConnectionId;
import org.eclipse.ditto.connectivity.model.signals.announcements.ConnectionOpenedAnnouncement;
import org.eclipse.ditto.json.JsonArray;
import org.eclipse.ditto.json.JsonFieldSelector;
import org.eclipse.ditto.json.JsonObject;
Expand Down Expand Up @@ -617,6 +619,53 @@ public void policyAnnouncementFromAdaptable() {
assertThat(announcement.getDittoHeaders().getCorrelationId()).contains(correlationId);
}

@Test
public void connectionAnnouncementToAdaptable() {
final ConnectionId connectionId = ConnectionId.of("myConnection");
final Instant openedAt = Instant.now();
final DittoHeaders dittoHeaders = DittoHeaders.newBuilder().randomCorrelationId().build();
final ConnectionOpenedAnnouncement announcement =
ConnectionOpenedAnnouncement.of(connectionId, openedAt, dittoHeaders);

final Adaptable adaptable = underTest.toAdaptable(announcement);

assertThat(adaptable.getTopicPath().getPath()).isEqualTo("_/myConnection/connections/announcements/opened");
assertThat(adaptable.getDittoHeaders().getCorrelationId()).isEqualTo(dittoHeaders.getCorrelationId());
assertThat(adaptable.getPayload().getPath().isEmpty()).isTrue();

final JsonValue payload = adaptable.getPayload().getValue().orElseThrow(NoSuchElementException::new);
final JsonValue expectedPayload = JsonObject.newBuilder()
.set(ConnectionOpenedAnnouncement.JsonFields.OPENED_AT, openedAt.toString())
.build();

assertThat(payload).isEqualTo(expectedPayload);
}

@Test
public void connectionAnnouncementFromAdaptable() {
final Instant openedAt = Instant.now();
final String correlationId = UUID.randomUUID().toString();
final JsonObject json = JsonObject.of(String.format("{\n" +
" \"topic\": \"_/myConnection/connections/announcements/opened\",\n" +
" \"headers\": {\"correlation-id\": \"%s\"},\n" +
" \"path\": \"/\",\n" +
" \"value\": {\n" +
" \"openedAt\": \"%s\"\n" +
" }\n" +
"}",
correlationId,
openedAt
));

final Adaptable adaptable = ProtocolFactory.jsonifiableAdaptableFromJson(json);
final ConnectionOpenedAnnouncement announcement =
(ConnectionOpenedAnnouncement) underTest.fromAdaptable(adaptable);

assertThat((CharSequence) announcement.getEntityId()).isEqualTo(ConnectionId.of("myConnection"));
assertThat(announcement.getOpenedAt()).isEqualTo(openedAt);
assertThat(announcement.getDittoHeaders().getCorrelationId()).contains(correlationId);
}

@Test
public void searchErrorResponseToAdaptable() {
final SearchErrorResponse errorResponse =
Expand Down

0 comments on commit 4e03f1c

Please sign in to comment.