private void validate(PluginSubscribeRequest request) { Assert.notNull(request, "Request body is null"); Assert.notNull(request.getFilters(), "Filters is null"); Assert.notNull(request.getSubscriptionId(), "Subscription id not provided"); }
private List<Response> createNotificationSubscription(PluginSubscribeRequest body) { return body.getFilters().stream() .map(filter -> { filter.setEventName(NOTIFICATION_EVENT.name()); NotificationSubscribeRequest notificationSubscribeRequest = new NotificationSubscribeRequest( body.getSubscriptionId(), filter, body.getNames(), null); Request notificationRequest = Request.newBuilder() .withBody(notificationSubscribeRequest) .withSingleReply(false) .build(); notificationRequest.setReplyTo(body.getTopicName()); return notificationSubscribeRequestHandler.handle(notificationRequest); }).collect(toList()); }
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()); }
@Override public Response handle(Request request) { PluginSubscribeRequest body = (PluginSubscribeRequest) request.getBody(); validate(body); if (body.isReturnCommands()) { createCommandSubscription(body, false); } if (body.isReturnUpdatedCommands()) { createCommandSubscription(body, true); } if (body.isReturnNotifications()) { createNotificationSubscription(body); } return Response.newBuilder() .withBody(new PluginSubscribeResponse(body.getSubscriptionId())) .withLast(false) .withCorrelationId(request.getCorrelationId()) .buildSuccess(); }