private static Adaptable handleSingleRetrieve(final ThingQueryCommand<?> command, final TopicPath.Channel channel) { final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(command.getThingId()); final CommandsTopicPathBuilder commandsTopicPathBuilder; commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final String commandName = command.getClass().getSimpleName().toLowerCase(); if (!commandName.startsWith(TopicPath.Action.RETRIEVE.toString())) { throw UnknownCommandException.newBuilder(commandName).build(); } final PayloadBuilder payloadBuilder = Payload.newBuilder(command.getResourcePath()); command.getSelectedFields().ifPresent(payloadBuilder::withFields); return Adaptable.newBuilder(commandsTopicPathBuilder.retrieve().build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(command.getDittoHeaders())) .build(); }
private static Adaptable handleSingleRetrieve(final ThingQueryCommand<?> command, final TopicPath.Channel channel) { final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(command.getThingId()); final CommandsTopicPathBuilder commandsTopicPathBuilder; commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final String commandName = command.getClass().getSimpleName().toLowerCase(); if (!commandName.startsWith(TopicPath.Action.RETRIEVE.toString())) { throw UnknownCommandException.newBuilder(commandName).build(); } final PayloadBuilder payloadBuilder = Payload.newBuilder(command.getResourcePath()); command.getSelectedFields().ifPresent(payloadBuilder::withFields); return Adaptable.newBuilder(commandsTopicPathBuilder.retrieve().build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(command.getDittoHeaders())) .build(); }
private static Adaptable handleMultipleRetrieve(final RetrieveThings command, final TopicPath.Channel channel) { final String commandName = command.getClass().getSimpleName().toLowerCase(); if (!commandName.startsWith(TopicPath.Action.RETRIEVE.toString())) { throw UnknownCommandException.newBuilder(commandName).build(); } final String namespace = command.getNamespace().orElse("_"); final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilderFromNamespace(namespace); final CommandsTopicPathBuilder commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final PayloadBuilder payloadBuilder = Payload.newBuilder(command.getResourcePath()); command.getSelectedFields().ifPresent(payloadBuilder::withFields); payloadBuilder.withValue(createIdsPayload(command.getThingIds())); return Adaptable.newBuilder(commandsTopicPathBuilder.retrieve().build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(command.getDittoHeaders())) .build(); }
@Override public Adaptable constructAdaptable(final ThingModifyCommandResponse commandResponse, final TopicPath.Channel channel) { final String responseName = commandResponse.getClass().getSimpleName().toLowerCase(); if (!responseName.endsWith("response")) { throw UnknownCommandResponseException.newBuilder(responseName).build(); } final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(commandResponse.getId()); final CommandsTopicPathBuilder commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final String commandName = commandResponse.getClass().getSimpleName().toLowerCase(); if (commandName.startsWith(TopicPath.Action.CREATE.toString())) { commandsTopicPathBuilder.create(); } else if (commandName.startsWith(TopicPath.Action.MODIFY.toString())) { commandsTopicPathBuilder.modify(); } else if (commandName.startsWith(TopicPath.Action.DELETE.toString())) { commandsTopicPathBuilder.delete(); } else { throw UnknownCommandException.newBuilder(commandName).build(); } final PayloadBuilder payloadBuilder = Payload.newBuilder(commandResponse.getResourcePath()) // .withStatus(commandResponse.getStatusCode()); final Optional<JsonValue> value = commandResponse.getEntity(commandResponse.getImplementedSchemaVersion()); value.ifPresent(payloadBuilder::withValue); return Adaptable.newBuilder(commandsTopicPathBuilder.build()) // .withPayload(payloadBuilder.build()) // .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(commandResponse.getDittoHeaders())) // .build(); }
private static Adaptable handleMultipleRetrieve(final RetrieveThings command, final TopicPath.Channel channel) { final String commandName = command.getClass().getSimpleName().toLowerCase(); if (!commandName.startsWith(TopicPath.Action.RETRIEVE.toString())) { throw UnknownCommandException.newBuilder(commandName).build(); } final String namespace = command.getNamespace().orElse("_"); final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilderFromNamespace(namespace); final CommandsTopicPathBuilder commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final PayloadBuilder payloadBuilder = Payload.newBuilder(command.getResourcePath()); command.getSelectedFields().ifPresent(payloadBuilder::withFields); payloadBuilder.withValue(createIdsPayload(command.getThingIds())); return Adaptable.newBuilder(commandsTopicPathBuilder.retrieve().build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(command.getDittoHeaders())) .build(); }
@Override public Adaptable constructAdaptable(final ThingModifyCommandResponse commandResponse, final TopicPath.Channel channel) { final String responseName = commandResponse.getClass().getSimpleName().toLowerCase(); if (!responseName.endsWith("response")) { throw UnknownCommandResponseException.newBuilder(responseName).build(); } final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(commandResponse.getId()); final CommandsTopicPathBuilder commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final String commandName = commandResponse.getClass().getSimpleName().toLowerCase(); if (commandName.startsWith(TopicPath.Action.CREATE.toString())) { commandsTopicPathBuilder.create(); } else if (commandName.startsWith(TopicPath.Action.MODIFY.toString())) { commandsTopicPathBuilder.modify(); } else if (commandName.startsWith(TopicPath.Action.DELETE.toString())) { commandsTopicPathBuilder.delete(); } else { throw UnknownCommandException.newBuilder(commandName).build(); } final PayloadBuilder payloadBuilder = Payload.newBuilder(commandResponse.getResourcePath()) // .withStatus(commandResponse.getStatusCode()); final Optional<JsonValue> value = commandResponse.getEntity(commandResponse.getImplementedSchemaVersion()); value.ifPresent(payloadBuilder::withValue); return Adaptable.newBuilder(commandsTopicPathBuilder.build()) // .withPayload(payloadBuilder.build()) // .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(commandResponse.getDittoHeaders())) // .build(); }
@Override public Adaptable constructAdaptable(final ThingModifyCommand command, final TopicPath.Channel channel) { final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(command.getThingId()); final CommandsTopicPathBuilder commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final String commandName = command.getClass().getSimpleName().toLowerCase(); if (commandName.startsWith(TopicPath.Action.CREATE.toString())) { commandsTopicPathBuilder.create(); } else if (commandName.startsWith(TopicPath.Action.MODIFY.toString())) { commandsTopicPathBuilder.modify(); } else if (commandName.startsWith(TopicPath.Action.DELETE.toString())) { commandsTopicPathBuilder.delete(); } else { throw UnknownCommandException.newBuilder(commandName).build(); } final PayloadBuilder payloadBuilder = Payload.newBuilder(command.getResourcePath()); final Optional<JsonValue> value = command.getEntity(command.getImplementedSchemaVersion()); value.ifPresent(payloadBuilder::withValue); return Adaptable.newBuilder(commandsTopicPathBuilder.build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(command.getDittoHeaders())) .build(); }
@Override public Adaptable constructAdaptable(final ThingModifyCommand command, final TopicPath.Channel channel) { final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(command.getThingId()); final CommandsTopicPathBuilder commandsTopicPathBuilder = fromTopicPathBuilderWithChannel(topicPathBuilder, channel); final String commandName = command.getClass().getSimpleName().toLowerCase(); if (commandName.startsWith(TopicPath.Action.CREATE.toString())) { commandsTopicPathBuilder.create(); } else if (commandName.startsWith(TopicPath.Action.MODIFY.toString())) { commandsTopicPathBuilder.modify(); } else if (commandName.startsWith(TopicPath.Action.DELETE.toString())) { commandsTopicPathBuilder.delete(); } else { throw UnknownCommandException.newBuilder(commandName).build(); } final PayloadBuilder payloadBuilder = Payload.newBuilder(command.getResourcePath()); final Optional<JsonValue> value = command.getEntity(command.getImplementedSchemaVersion()); value.ifPresent(payloadBuilder::withValue); return Adaptable.newBuilder(commandsTopicPathBuilder.build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(command.getDittoHeaders())) .build(); }
.build(); return Adaptable.newBuilder(commandsTopicPathBuilder.build()) .withPayload(payload) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(commandResponse.getDittoHeaders()))
.build(); return Adaptable.newBuilder(commandsTopicPathBuilder.build()) .withPayload(payload) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(commandResponse.getDittoHeaders()))
value.ifPresent(payloadBuilder::withValue); return Adaptable.newBuilder(eventsTopicPathBuilder.build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(event.getDittoHeaders()))
value.ifPresent(payloadBuilder::withValue); return Adaptable.newBuilder(eventsTopicPathBuilder.build()) .withPayload(payloadBuilder.build()) .withHeaders(ProtocolFactory.newHeadersWithDittoContentType(event.getDittoHeaders()))
final Map<String, String> externalHeaders = headerTranslator.toExternalHeaders(allHeadersBuilder.build()); return Adaptable.newBuilder(messagesTopicPathBuilder.build()) .withPayload(payloadBuilder.build()) .withHeaders(DittoHeaders.of(externalHeaders)).build();
final Map<String, String> externalHeaders = headerTranslator.toExternalHeaders(allHeadersBuilder.build()); return Adaptable.newBuilder(messagesTopicPathBuilder.build()) .withPayload(payloadBuilder.build()) .withHeaders(DittoHeaders.of(externalHeaders)).build();
@Override public Adaptable toAdaptable(final ThingErrorResponse thingErrorResponse, final TopicPath.Channel channel) { final Payload payload = Payload.newBuilder(thingErrorResponse.getResourcePath()) // .withStatus(thingErrorResponse.getStatusCode()) // .withValue(thingErrorResponse.toJson(thingErrorResponse.getImplementedSchemaVersion()) // .getValue(CommandResponse.JsonFields.PAYLOAD) .orElse(JsonFactory.nullObject())) // only use the error payload .build(); final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(thingErrorResponse.getId()); final TopicPathBuildable topicPathBuildable; if (channel == TopicPath.Channel.TWIN) { topicPathBuildable = topicPathBuilder.twin().errors(); } else if (channel == TopicPath.Channel.LIVE) { topicPathBuildable = topicPathBuilder.live().errors(); } else { throw new IllegalArgumentException("Unknown Channel '" + channel + "'"); } final DittoHeaders responseHeaders = ProtocolFactory.newHeadersWithDittoContentType(thingErrorResponse.getDittoHeaders()); return Adaptable.newBuilder(topicPathBuildable.build()) .withPayload(payload) .withHeaders(DittoHeaders.of(headerTranslator.toExternalHeaders(responseHeaders))) .build(); }
@Override public Adaptable toAdaptable(final ThingErrorResponse thingErrorResponse, final TopicPath.Channel channel) { final Payload payload = Payload.newBuilder(thingErrorResponse.getResourcePath()) // .withStatus(thingErrorResponse.getStatusCode()) // .withValue(thingErrorResponse.toJson(thingErrorResponse.getImplementedSchemaVersion()) // .getValue(CommandResponse.JsonFields.PAYLOAD) .orElse(JsonFactory.nullObject())) // only use the error payload .build(); final TopicPathBuilder topicPathBuilder = ProtocolFactory.newTopicPathBuilder(thingErrorResponse.getId()); final TopicPathBuildable topicPathBuildable; if (channel == TopicPath.Channel.TWIN) { topicPathBuildable = topicPathBuilder.twin().errors(); } else if (channel == TopicPath.Channel.LIVE) { topicPathBuildable = topicPathBuilder.live().errors(); } else { throw new IllegalArgumentException("Unknown Channel '" + channel + "'"); } final DittoHeaders responseHeaders = ProtocolFactory.newHeadersWithDittoContentType(thingErrorResponse.getDittoHeaders()); return Adaptable.newBuilder(topicPathBuildable.build()) .withPayload(payload) .withHeaders(DittoHeaders.of(headerTranslator.toExternalHeaders(responseHeaders))) .build(); }