@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()); } } }
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) { NotificationSearchRequest searchRequest = (NotificationSearchRequest) request.getBody(); NotificationSearchResponse payload = searchRequest.getId() != null && !StringUtils.isEmpty(searchRequest.getDeviceId()) ? searchSingleNotificationByDeviceAndId(searchRequest.getId(), searchRequest.getDeviceId()) : searchMultipleNotifications(searchRequest); return Response.newBuilder() .withBody(payload) .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(); } }
@Override public Response handle(Request request) { final CountDeviceRequest req = (CountDeviceRequest) request.getBody(); final long count = deviceDao.count(req.getName(), req.getNamePattern(), req.getNetworkId(), req.getNetworkName(), req.getPrincipal()); final CountResponse countResponse = new CountResponse(count); return Response.newBuilder() .withBody(countResponse) .buildSuccess(); } }
@Override public Response handle(Request request) { CommandSearchRequest searchRequest = (CommandSearchRequest) request.getBody(); CommandSearchResponse payload = searchRequest.getId() != null && !StringUtils.isEmpty(searchRequest.getDeviceId()) ? searchSingleCommandByDeviceAndId(searchRequest.getId(), searchRequest.getDeviceId(), searchRequest.isReturnUpdated()) : searchMultipleCommands(searchRequest); return Response.newBuilder() .withBody(payload) .buildSuccess(); }
@Override public Response handle(Request request) { final CountNetworkRequest req = (CountNetworkRequest) request.getBody(); final long count = networkDao.count(req.getName(), req.getNamePattern(), req.getPrincipal()); final CountResponse countResponse = new CountResponse(count); return Response.newBuilder() .withBody(countResponse) .buildSuccess(); } }
@Override public Response handle(Request request) { final ListUserRequest req = (ListUserRequest) request.getBody(); final List<UserVO> users = userDao.list(req.getLogin(), req.getLoginPattern(), req.getRole(), req.getStatus(), req.getSortField(), req.isSortOrderAsc(), req.getTake(), req.getSkip()); return Response.newBuilder() .withBody(new ListUserResponse(users)) .buildSuccess(); } }
@Override public Response handle(Request request) { final ListDeviceTypeRequest req = (ListDeviceTypeRequest) request.getBody(); final List<DeviceTypeVO> deviceTypes = deviceTypeDao.list(req.getName(), req.getNamePattern(), req.getSortField(), req.isSortOrderAsc(), req.getTake(), req.getSkip(), req.getPrincipal()); return Response.newBuilder() .withBody(new ListDeviceTypeResponse(deviceTypes)) .buildSuccess(); } }
@Override public Response handle(Request request) { final CountUserRequest req = (CountUserRequest) request.getBody(); final long count = userDao.count(req.getLogin(), req.getLoginPattern(), req.getRole(), req.getStatus()); final CountResponse countResponse = new CountResponse(count); return Response.newBuilder() .withBody(countResponse) .buildSuccess(); } }
@Override public Response handle(Request request) { final CountPluginRequest req = (CountPluginRequest) request.getBody(); final long count = pluginDao.count(req.getName(), req.getNamePattern(), req.getTopicName(), req.getStatus(), req.getUserId(), req.getPrincipal()); final CountResponse countResponse = new CountResponse(count); return Response.newBuilder() .withBody(countResponse) .buildSuccess(); } }
@Override public Response handle(Request request) { final ListDeviceRequest req = (ListDeviceRequest) request.getBody(); final List<DeviceVO> devices = deviceDao.list(req.getName(), req.getNamePattern(), req.getNetworkId(), req.getNetworkName(), req.getSortField(), req.isSortOrderAsc(), req.getTake(), req.getSkip(), req.getPrincipal()); return Response.newBuilder() .withBody(new ListDeviceResponse(devices)) .buildSuccess(); } }
@Override public Response handle(Request request) { DeviceCommand deviceCommand = request.getBody().cast(CommandInsertRequest.class).getDeviceCommand(); CommandEvent commandEvent = new CommandEvent(deviceCommand); eventBus.publish(commandEvent); hazelcastService.store(deviceCommand); CommandInsertResponse payload = new CommandInsertResponse(deviceCommand); return Response.newBuilder() .withBody(payload) .buildSuccess(); } }
@Override public Response handle(Request request) { DeviceNotification notification = ((NotificationInsertRequest) request.getBody()).getDeviceNotification(); NotificationEvent notificationEvent = new NotificationEvent(notification); eventBus.publish(notificationEvent); hazelcastService.store(notification); NotificationInsertResponse payload = new NotificationInsertResponse(notification); return Response.newBuilder() .withBody(payload) .buildSuccess(); } }
@Override public Response handle(Request request) { final CountDeviceTypeRequest req = (CountDeviceTypeRequest) request.getBody(); final long count = deviceTypeDao.count(req.getName(), req.getNamePattern(), req.getPrincipal()); final CountResponse countResponse = new CountResponse(count); return Response.newBuilder() .withBody(countResponse) .buildSuccess(); } }
@Override public Response handle(Request request) { final ListNetworkRequest req = (ListNetworkRequest) request.getBody(); final List<NetworkVO> networks = networkDao.list(req.getName(), req.getNamePattern(), req.getSortField(), req.isSortOrderAsc(), req.getTake(), req.getSkip(), req.getPrincipal()); return Response.newBuilder() .withBody(new ListNetworkResponse(networks)) .buildSuccess(); } }
@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(); }
@Override public Response handle(Request request) { final ListPluginRequest req = (ListPluginRequest) request.getBody(); final List<PluginVO> plugins = pluginDao.list(req.getName(), req.getNamePattern(), req.getTopicName(), req.getStatus(), req.getUserId(), req.getSortField(), req.isSortOrderAsc(), req.getTake(), req.getSkip(), req.getPrincipal()); return Response.newBuilder() .withBody(new ListPluginResponse(plugins)) .buildSuccess(); } }
@Override public Response handle(Request request) { final DeviceDeleteRequest req = (DeviceDeleteRequest) request.getBody(); final DeviceVO device = req.getDevice(); eventBus.unsubscribeDevice(device); return Response.newBuilder() .withBody(new DeviceDeleteResponse()) .withCorrelationId(request.getCorrelationId()) .buildSuccess(); } }