@Override public final void get(final String tenantId, final String type, final String authId, final JsonObject clientContext, final Handler<AsyncResult<CredentialsResult<JsonObject>>> resultHandler) { get(tenantId, type, authId, clientContext, NoopSpan.INSTANCE, resultHandler); }
/** * {@inheritDoc} * * This default implementation simply returns an empty result with status code 501 (Not Implemented). * Subclasses should override this method in order to provide a reasonable implementation. */ @Override public void get(final String tenantId, final String type, final String authId, final JsonObject clientContext, final Handler<AsyncResult<CredentialsResult<JsonObject>>> resultHandler) { handleUnimplementedOperation(resultHandler); }
final JsonObject payload = request.getJsonPayload(); final Span span = newChildSpan(SPAN_NAME_GET_CREDENTIALS, request.getSpanContext(), tenantId); final Future<EventBusMessage> resultFuture; if (tenantId == null || payload == null) { resultFuture = Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else { final String type = removeTypesafeValueForField(String.class, payload, CredentialsConstants.FIELD_TYPE); final String authId = removeTypesafeValueForField(String.class, payload, CredentialsConstants.FIELD_AUTH_ID); final String deviceId = removeTypesafeValueForField(String.class, payload, CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID); resultFuture = Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else if (authId != null && deviceId == null) { resultFuture = processGetByAuthIdRequest(request, tenantId, payload, type, authId, span); } else if (deviceId != null && authId == null) { resultFuture = processGetByDeviceIdRequest(request, tenantId, type, deviceId, span); } else { TracingHelper.logError(span, String.format( return finishSpanOnFutureCompletion(span, resultFuture);
return Future.failedFuture(new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST)); } else { final String type = removeTypesafeValueForField(String.class, payload, CredentialsConstants.FIELD_TYPE); final String authId = removeTypesafeValueForField(String.class, payload, CredentialsConstants.FIELD_AUTH_ID); final String deviceId = removeTypesafeValueForField(String.class, payload, CredentialsConstants.FIELD_PAYLOAD_DEVICE_ID); log.debug("getting credentials [tenant: {}, type: {}, auth-id: {}]", tenantId, type, authId); final Future<CredentialsResult<JsonObject>> result = Future.future(); get(tenantId, type, authId, payload, result.completer()); return result.map(res -> { final String deviceIdFromPayload = Optional.ofNullable(res.getPayload()) .map(p -> getTypesafeValueForField(String.class, p, TenantConstants.FIELD_PAYLOAD_DEVICE_ID)) .orElse(null); log.debug("getting credentials for device [tenant: {}, device-id: {}]", tenantId, deviceId); final Future<CredentialsResult<JsonObject>> result = Future.future(); getAll(tenantId, deviceId, result.completer()); return result.map(res -> { return request.getResponse(res.getStatus())
/** * Processes a Credentials API request received via the vert.x event bus. * <p> * This method validates the request parameters against the Credentials API * specification before invoking the corresponding {@code CredentialsService} methods. * * @param request The request message. * @return A future indicating the outcome of the service invocation. * @throws NullPointerException If the request message is {@code null}. */ @Override public Future<EventBusMessage> processRequest(final EventBusMessage request) { Objects.requireNonNull(request); final String operation = request.getOperation(); switch (CredentialsConstants.CredentialsAction.from(operation)) { case get: return processGetRequest(request); default: return processCustomCredentialsMessage(request); } }
private Future<EventBusMessage> processGetByAuthIdRequest(final EventBusMessage request, final String tenantId, final JsonObject payload, final String type, final String authId, final Span span) { log.debug("getting credentials [tenant: {}, type: {}, auth-id: {}]", tenantId, type, authId); span.setTag(TAG_CREDENTIALS_TYPE, type); span.setTag(TAG_AUTH_ID, authId); final Future<CredentialsResult<JsonObject>> result = Future.future(); get(tenantId, type, authId, payload, span, result.completer()); return result.map(res -> { final String deviceIdFromPayload = Optional.ofNullable(res.getPayload()) .map(p -> getTypesafeValueForField(String.class, p, TenantConstants.FIELD_PAYLOAD_DEVICE_ID)) .orElse(null); if (deviceIdFromPayload != null) { span.setTag(MessageHelper.APP_PROPERTY_DEVICE_ID, deviceIdFromPayload); } return request.getResponse(res.getStatus()) .setDeviceId(deviceIdFromPayload) .setJsonPayload(res.getPayload()) .setCacheDirective(res.getCacheDirective()); }); }
private Future<EventBusMessage> processGetByDeviceIdRequest(final EventBusMessage request, final String tenantId, final String type, final String deviceId, final Span span) { log.debug("getting credentials for device [tenant: {}, device-id: {}]", tenantId, deviceId); span.setTag(TAG_CREDENTIALS_TYPE, type); span.setTag(MessageHelper.APP_PROPERTY_DEVICE_ID, deviceId); final Future<CredentialsResult<JsonObject>> result = Future.future(); getAll(tenantId, deviceId, span, result.completer()); return result.map(res -> { return request.getResponse(res.getStatus()) .setDeviceId(deviceId) .setJsonPayload(res.getPayload()) .setCacheDirective(res.getCacheDirective()); }); }
/** * Processes a Credentials API request received via the vert.x event bus. * <p> * This method validates the request parameters against the Credentials API * specification before invoking the corresponding {@code CredentialsService} methods. * * @param request The request message. * @return A future indicating the outcome of the service invocation. * @throws NullPointerException If the request message is {@code null}. */ @Override public Future<EventBusMessage> processRequest(final EventBusMessage request) { Objects.requireNonNull(request); final String operation = request.getOperation(); switch (CredentialsConstants.CredentialsAction.from(operation)) { case get: return processGetRequest(request); default: return processCustomCredentialsMessage(request); } }
/** * {@inheritDoc} * * This default implementation simply returns an empty result with status code 501 (Not Implemented). * Subclasses should override this method in order to provide a reasonable implementation. */ @Override public void get(final String tenantId, final String type, final String authId, final Span span, final Handler<AsyncResult<CredentialsResult<JsonObject>>> resultHandler) { handleUnimplementedOperation(resultHandler); }
@Override public final void get(final String tenantId, final String type, final String authId, final Handler<AsyncResult<CredentialsResult<JsonObject>>> resultHandler) { get(tenantId, type, authId, NoopSpan.INSTANCE, resultHandler); }
/** * {@inheritDoc} * * This default implementation simply returns an empty result with status code 501 (Not Implemented). * Subclasses should override this method in order to provide a reasonable implementation. */ @Override public void get(final String tenantId, final String type, final String authId, final JsonObject clientContext, final Span span, final Handler<AsyncResult<CredentialsResult<JsonObject>>> resultHandler) { handleUnimplementedOperation(resultHandler); }
/** * {@inheritDoc} * * This default implementation simply returns an empty result with status code 501 (Not Implemented). * Subclasses should override this method in order to provide a reasonable implementation. */ @Override public void get(final String tenantId, final String type, final String authId, final Handler<AsyncResult<CredentialsResult<JsonObject>>> resultHandler) { handleUnimplementedOperation(resultHandler); }