private Builder(final RetrieveThings retrieveThings) { this.thingIds = retrieveThings.getThingIds(); dittoHeaders = retrieveThings.getDittoHeaders(); selectedFields = retrieveThings.getSelectedFields().orElse(null); namespace = retrieveThings.getNamespace().orElse(null); }
private Builder(final RetrieveThings retrieveThings) { this.thingIds = retrieveThings.getThingIds(); dittoHeaders = retrieveThings.getDittoHeaders(); selectedFields = retrieveThings.getSelectedFields().orElse(null); namespace = retrieveThings.getNamespace().orElse(null); }
private void handleRetrieveThings(final RetrieveThings rt, final Object msgToAsk) { LogUtil.enhanceLogWithCorrelationId(log, rt.getDittoHeaders().getCorrelationId()); log.info("Got '{}' message. Retrieving requested '{}' Things..", RetrieveThings.class.getSimpleName(), rt.getThingIds().size()); final ActorRef sender = getSender(); PatternsCS.ask(targetActor, msgToAsk, Duration.ofSeconds(ASK_TIMEOUT)) .thenAccept(sourceRef -> handleSourceRef((SourceRef) sourceRef, rt.getThingIds(), rt, sender) ); }
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(); }
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 Receive createReceive() { return ReceiveBuilder.create() // # handle "RetrieveThings" command .match(RetrieveThings.class, rt -> { LogUtil.enhanceLogWithCorrelationId(log, rt.getDittoHeaders().getCorrelationId()); log.info("Got '{}' message. Retrieving requested '{}' Things..", RetrieveThings.class.getSimpleName(), rt.getThingIds().size()); retrieveThings(rt, getSender()); }) // # handle "SudoRetrieveThings" command .match(SudoRetrieveThings.class, rt -> { LogUtil.enhanceLogWithCorrelationId(log, rt.getDittoHeaders().getCorrelationId()); log.info("Got '{}' message. Retrieving requested '{}' Things..", SudoRetrieveThings.class.getSimpleName(), rt.getThingIds().size()); retrieveThings(rt, getSender()); }) // # handle unknown message .matchAny(m -> { log.warning("Got unknown message: {}", m); unhandled(m); }) // # build PartialFunction .build(); }