@Override @SuppressWarnings("unchecked") public Response handle(Request request) { final Action action = request.getBody().getAction(); try { return Optional.ofNullable(requestHandlersMapper.requestHandlerMap().get(action)) .map(handler -> handler.handle(request)) .orElseThrow(() -> new RuntimeException("Action '" + action + "' is not supported.")); } catch (Exception e) { logger.error("Unable to handle request.", e); return Response.newBuilder() .withBody(new ErrorResponse(e.getMessage())) .withLast(true) .buildFailed(HttpStatus.INTERNAL_SERVER_ERROR.value()); } } }
private Response handleClientRequest(Request request) { Response response; try { response = Optional.ofNullable(requestHandler.handle(request)) .orElseThrow(() -> new NullPointerException("Response must not be null")); } catch (Exception e) { logger.error("Unexpected exception occurred during request handling (action='{}', handler='{}')", request.getBody().getAction().name(), requestHandler.getClass().getCanonicalName(), e); response = Response.newBuilder() .withLast(request.isSingleReplyExpected()) .buildFailed(500); } return response; }
private Response handleClientRequest(Request request) { Response response; final Action action = request.getBody().getAction(); RequestHandler requestHandler = requestHandlersMapper.requestHandlerMap().get(action); if (requestHandler == null) { throw new RuntimeException("Action '" + action + "' is not supported."); } try { response = Optional.ofNullable(requestHandler.handle(request)) .orElseThrow(() -> new NullPointerException("Response must not be null")); } catch (Exception e) { logger.error("Unexpected exception occurred during request handling (action='{}', handler='{}')", request.getBody().getAction().name(), requestHandler.getClass().getCanonicalName(), e); response = Response.newBuilder() .withLast(request.isSingleReplyExpected()) .buildFailed(500); } return response; } }
@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(); }
@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(); }
@Override public Response handle(Request request) { NotificationSubscribeRequest body = (NotificationSubscribeRequest) request.getBody(); validate(body); Subscriber subscriber = new Subscriber(body.getSubscriptionId(), request.getReplyTo(), request.getCorrelationId()); Filter filter = body.getFilter(); eventBus.subscribe(filter, subscriber); Collection<DeviceNotification> notifications = findNotifications(filter, body.getNames(), body.getTimestamp()); NotificationSubscribeResponse subscribeResponse = new NotificationSubscribeResponse(body.getSubscriptionId(), notifications); return Response.newBuilder() .withBody(subscribeResponse) .withLast(false) .withCorrelationId(request.getCorrelationId()) .buildSuccess(); }
@Override public Response handle(Request request) { final CommandUpdateSubscribeRequest body = request.getBody().cast(CommandUpdateSubscribeRequest.class); final Subscriber subscriber = new Subscriber(body.getSubscriptionId(), request.getReplyTo(), request.getCorrelationId()); eventBus.subscribe(body.getFilter(), subscriber); final DeviceCommand deviceCommand = hazelcastService .find(body.getCommandId(), body.getDeviceId(), DeviceCommand.class) .orElse(null); return Response.newBuilder() .withBody(new CommandUpdateSubscribeResponse(body.getSubscriptionId(), deviceCommand)) .withLast(false) .withCorrelationId(request.getCorrelationId()) .buildSuccess(); } }
public void publish(Event event) { event.getApplicableFilters() .stream() .flatMap(filter -> registry.getSubscribers(filter).stream()) .forEach(subscriber -> { Response response = Response.newBuilder() .withBody(event) .withCorrelationId(subscriber.getCorrelationId()) .withLast(false) .buildSuccess(); dispatcher.send(subscriber.getReplyTo(), response); }); }
@Override public Response handle(Request request) { PluginUnsubscribeRequest body = (PluginUnsubscribeRequest) request.getBody(); validate(body); removeCommandSubscription(body); removeNotificationSubscription(body); return Response.newBuilder() .withBody(new PluginUnsubscribeResponse(body.getSubscriptionId())) .withLast(false) .withCorrelationId(request.getCorrelationId()) .buildSuccess(); }