private Future validateKeyspaceAndTable()

in src/main/java/org/apache/cassandra/sidecar/routes/sstableuploads/SSTableUploadHandler.java [162:196]


    private Future<SSTableUploadRequest> validateKeyspaceAndTable(String host,
                                                                  SSTableUploadRequest request)
    {
        ExecutorPools.TaskExecutorPool pool = executorPools.service();
        return pool.<Metadata>executeBlocking(promise -> {
                       CassandraAdapterDelegate delegate = metadataFetcher.delegate(host);
                       Metadata metadata = delegate.metadata();
                       if (metadata == null)
                       {
                           promise.fail(cassandraServiceUnavailable());
                       }
                       else
                       {
                           promise.complete(metadata);
                       }
                   })
                   .compose(metadata -> {
                       KeyspaceMetadata keyspaceMetadata = metadata.getKeyspace(request.keyspace());
                       if (keyspaceMetadata == null)
                       {
                           String message = String.format("Invalid keyspace '%s' supplied", request.keyspace());
                           logger.error(message);
                           return Future.failedFuture(wrapHttpException(HttpResponseStatus.BAD_REQUEST, message));
                       }

                       if (keyspaceMetadata.getTable(request.tableName()) == null)
                       {
                           String message = String.format("Invalid table name '%s' supplied for keyspace '%s'",
                                                          request.tableName(), request.keyspace());
                           logger.error(message);
                           return Future.failedFuture(wrapHttpException(HttpResponseStatus.BAD_REQUEST, message));
                       }
                       return Future.succeededFuture(request);
                   });
    }