@Override public void accept(Response response) { if (response.isFailed()) { String message = response.getBody() != null ? response.getBody().cast(ErrorResponse.class).getMessage() : "Unexpected error occurred."; future.completeExceptionally(new BackendException(message, response.getErrorCode())); } else { future.complete(response); } } }
public void offerResponse(Response response) { Consumer<Response> callback = correlationMap.get(response.getCorrelationId()); if (callback != null) { executionPool.execute(() -> { try { callback.accept(response); } finally { if (response.isLast()) { correlationMap.remove(response.getCorrelationId()); } } }); } else { logger.warn("Callback was not found for {}. Map size: {}, response: {}", response.getCorrelationId(), correlationMap.size(), response.getBody()); } }
public CompletableFuture<List<PluginVO>> list(ListPluginRequest listPluginRequest){ CompletableFuture<com.devicehive.shim.api.Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(listPluginRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> ((ListPluginResponse) response.getBody()).getPlugins()); }
public CompletableFuture<List<NetworkVO>> list(ListNetworkRequest request) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder().withBody(request).build(), new ResponseConsumer(future)); return future.thenApply(r -> ((ListNetworkResponse) r.getBody()).getNetworks()); }
public CompletableFuture<List<DeviceTypeVO>> list(ListDeviceTypeRequest request) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder().withBody(request).build(), new ResponseConsumer(future)); return future.thenApply(r -> ((ListDeviceTypeResponse) r.getBody()).getDeviceTypes()); } }
public CompletableFuture<Set<Long>> unsubscribe(Set<Long> subIds) { NotificationUnsubscribeRequest unsubscribeRequest = new NotificationUnsubscribeRequest(subIds); Request request = Request.newBuilder() .withBody(unsubscribeRequest) .build(); CompletableFuture<Set<Long>> future = new CompletableFuture<>(); Consumer<Response> responseConsumer = response -> { Action resAction = response.getBody().getAction(); if (resAction.equals(Action.NOTIFICATION_UNSUBSCRIBE_RESPONSE)) { future.complete(response.getBody().cast(NotificationUnsubscribeResponse.class).getSubscriptionIds()); subIds.forEach(requestResponseMatcher::removeSubscription); } else { logger.warn("Unknown action received from backend {}", resAction); } }; rpcClient.call(request, responseConsumer); return future; }
public CompletableFuture<EntityCountResponse> count(CountPluginRequest countPluginRequest) { CompletableFuture<com.devicehive.shim.api.Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(countPluginRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> new EntityCountResponse((CountResponse) response.getBody())); }
public CompletableFuture<EntityCountResponse> count(CountUserRequest countUserRequest) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(countUserRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> new EntityCountResponse((CountResponse)response.getBody())); }
public CompletableFuture<EntityCountResponse> count(CountNetworkRequest countNetworkRequest) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(countNetworkRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> new EntityCountResponse((CountResponse)response.getBody())); }
public CompletableFuture<EntityCountResponse> count(CountDeviceTypeRequest countDeviceTypeRequest) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(countDeviceTypeRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> new EntityCountResponse((CountResponse)response.getBody())); }
public CompletableFuture<EntityCountResponse> count(CountDeviceRequest countDeviceRequest) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(countDeviceRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> new EntityCountResponse((CountResponse)response.getBody())); }
public CompletableFuture<List<DeviceVO>> list(ListDeviceRequest listDeviceRequest) { CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(listDeviceRequest) .build(), new ResponseConsumer(future)); return future.thenApply(response -> ((ListDeviceResponse) response.getBody()).getDevices()); }
public CompletableFuture<Set<Long>> sendUnsubscribeRequest(Set<Long> subIds) { CommandUnsubscribeRequest unsubscribeRequest = new CommandUnsubscribeRequest(subIds); Request request = Request.newBuilder() .withBody(unsubscribeRequest) .build(); CompletableFuture<Set<Long>> future = new CompletableFuture<>(); Consumer<Response> responseConsumer = response -> { Action resAction = response.getBody().getAction(); if (resAction.equals(Action.COMMAND_UNSUBSCRIBE_RESPONSE)) { future.complete(response.getBody().cast(CommandUnsubscribeResponse.class).getSubscriptionIds()); subIds.forEach(requestResponseMatcher::removeSubscription); } else { logger.warn("Unknown action received from backend {}", resAction); } }; rpcClient.call(request, responseConsumer); return future; }
public CompletableFuture<Optional<DeviceNotification>> findOne(Long id, String deviceId) { NotificationSearchRequest searchRequest = new NotificationSearchRequest(); searchRequest.setId(id); searchRequest.setDeviceIds(Collections.singleton(deviceId)); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(searchRequest) .withPartitionKey(deviceId) .build(), new ResponseConsumer(future)); return future.thenApply(r -> ((NotificationSearchResponse) r.getBody()).getNotifications().stream().findFirst()); }
public CompletableFuture<Optional<DeviceCommand>> findOne(Long id, String deviceId, boolean returnUpdated) { CommandSearchRequest searchRequest = new CommandSearchRequest(); searchRequest.setId(id); searchRequest.setDeviceIds(Collections.singleton(deviceId)); searchRequest.setReturnUpdated(returnUpdated); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(searchRequest) .build(), new ResponseConsumer(future)); return future.thenApply(r -> r.getBody().cast(CommandSearchResponse.class).getCommands().stream().findFirst()); }
public CompletableFuture<Pair<Long, DeviceCommand>> sendSubscribeToUpdateRequest(final long commandId, final DeviceVO device, BiConsumer<DeviceCommand, Long> callback) { CompletableFuture<Pair<Long, DeviceCommand>> future = new CompletableFuture<>(); final Long subscriptionId = idGenerator.generate(); Consumer<Response> responseConsumer = response -> { Action resAction = response.getBody().getAction(); if (resAction.equals(Action.COMMAND_UPDATE_SUBSCRIBE_RESPONSE)) { future.complete(Pair.of(response.getBody().cast(CommandUpdateSubscribeResponse.class).getSubscriptionId(), response.getBody().cast(CommandUpdateSubscribeResponse.class).getDeviceCommand())); } else if (resAction.equals(COMMAND_UPDATE_EVENT)) { callback.accept(response.getBody().cast(CommandUpdateEvent.class).getDeviceCommand(), subscriptionId); } else { logger.warn("Unknown action received from backend {}", resAction); } }; Filter filter = new Filter(device.getNetworkId(), device.getDeviceTypeId(), Long.toString(commandId), COMMAND_UPDATE_EVENT.name(), null); rpcClient.call(Request.newBuilder() .withBody(new CommandUpdateSubscribeRequest(commandId, device.getDeviceId(), subscriptionId, filter)) .build(), responseConsumer); return future; }
public CompletableFuture<DeviceCommand> insert(DeviceCommandWrapper commandWrapper, DeviceVO device, UserVO user) { hiveValidator.validate(commandWrapper); DeviceCommand command = convertWrapperToCommand(commandWrapper, device, user); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(new CommandInsertRequest(command)) .withPartitionKey(device.getDeviceId()) .build(), new ResponseConsumer(future)); return future.thenApply(r -> ((CommandInsertResponse) r.getBody()).getDeviceCommand()); }
public CompletableFuture<DeviceNotification> insert(final DeviceNotification notification, final DeviceVO device) { hiveValidator.validate(notification); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(new NotificationInsertRequest(notification)) .withPartitionKey(device.getDeviceId()) .build(), new ResponseConsumer(future)); return future.thenApply(r -> r.getBody().cast(NotificationInsertResponse.class).getDeviceNotification()); }
public CompletableFuture<List<UserVO>> list(String login, String loginPattern, Integer role, Integer status, String sortField, String sortOrder, Integer take, Integer skip) { ListUserRequest request = new ListUserRequest(); request.setLogin(login); request.setLoginPattern(loginPattern); request.setRole(role); request.setStatus(status); request.setSortField(sortField); request.setSortOrder(sortOrder); request.setTake(take); request.setSkip(skip); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request .newBuilder() .withBody(request) .build(), new ResponseConsumer(future)); return future.thenApply(r -> ((ListUserResponse) r.getBody()).getUsers()); }
@SuppressWarnings("unchecked") public CompletableFuture<List<DeviceNotification>> find(Set<String> deviceIds, Set<String> names, Date timestampSt, Date timestampEnd, String sortField, String sortOrder, Integer take, Integer skip) { NotificationSearchRequest searchRequest = new NotificationSearchRequest(); searchRequest.setDeviceIds(deviceIds); searchRequest.setNames(names); searchRequest.setTimestampStart(timestampSt); searchRequest.setTimestampEnd(timestampEnd); searchRequest.setSortField(sortField); searchRequest.setSortOrder(sortOrder); searchRequest.setTake(take); searchRequest.setSkip(skip); CompletableFuture<Response> future = new CompletableFuture<>(); rpcClient.call(Request.newBuilder() .withBody(searchRequest) .withPartitionKey(searchRequest.getDeviceId()) .build(), new ResponseConsumer(future)); // CompletableFuture<Response> => CompletableFuture<List<DeviceNotification>> return future.thenApply(v -> v.getBody().cast(NotificationSearchResponse.class).getNotifications()); }