private void validate(CommandSubscribeRequest request) { Assert.notNull(request, "Request body is null"); Assert.notNull(request.getFilter(), "Filter is null"); Assert.notNull(request.getSubscriptionId(), "Subscription id not provided"); }
@Override public Response handle(Request request) { CommandSubscribeRequest body = (CommandSubscribeRequest) request.getBody(); validate(body); Subscriber subscriber = new Subscriber(body.getSubscriptionId(), request.getReplyTo(), request.getCorrelationId()); Filter filter = body.getFilter(); if (body.isReturnUpdated()) { filter.setEventName(COMMANDS_UPDATE_EVENT.name()); } eventBus.subscribe(filter, subscriber); Collection<DeviceCommand> commands = findCommands(filter, body.getNames(), body.getTimestamp(), body.isReturnUpdated(), body.getLimit()); CommandSubscribeResponse subscribeResponse = new CommandSubscribeResponse(body.getSubscriptionId(), commands); return Response.newBuilder() .withBody(subscribeResponse) .withLast(false) .withCorrelationId(request.getCorrelationId()) .buildSuccess(); }
.map(filter -> new CommandSubscribeRequest(subscriptionId, filter, names, timestamp, returnUpdated, limit)) .map(subscribeRequest -> { CompletableFuture<Collection<DeviceCommand>> future = new CompletableFuture<>(); Request request = Request.newBuilder() .withBody(subscribeRequest) .withPartitionKey(subscribeRequest.getFilter().getFirstKey()) .withSingleReply(false) .build();
private List<Response> createCommandSubscription(PluginSubscribeRequest body, boolean returnUpdated) { return body.getFilters().stream() .map(filter -> { filter.setEventName(COMMAND_EVENT.name()); CommandSubscribeRequest commandSubscribeRequest = new CommandSubscribeRequest(body.getSubscriptionId(), filter, body.getNames(), null, returnUpdated, 0); Request commandRequest = Request.newBuilder() .withBody(commandSubscribeRequest) .withSingleReply(false) .build(); commandRequest.setReplyTo(body.getTopicName()); return commandSubscribeRequestHandler.handle(commandRequest); }).collect(toList()); }