static <T> CompletionStage<Boolean> authorize(Authorizer<T> authorizer, ServiceRequestContext ctx, T data) {
        try {
            final CompletionStage<Boolean> f = authorizer.authorize(ctx, data);
            if (f == null) {
                throw new NullPointerException("An " + Authorizer.class.getSimpleName() +
                                               " returned null: " + authorizer);
            }
            return f;
        } catch (Throwable cause) {
            return CompletableFutures.exceptionallyCompletedFuture(cause);
        }
    }
static < T > CompletionStage < Boolean > authorize ( Authorizer < T > authorizer , ServiceRequestContext ctx , T data ) { try { final CompletionStage < Boolean > f = authorizer . authorize ( ctx , data ) ; if ( f == null ) { throw new NullPointerException ( "An " + Authorizer . class . getSimpleName ( ) + " returned null: " + authorizer ) ; } return f ; } catch ( Throwable cause ) { return CompletableFutures . exceptionallyCompletedFuture ( cause ) ; } }
Determines if the specified {@code data} is authorized for this service. If the result resolves
to {@code true}, the request is authorized, or {@code false} otherwise. If the future resolves
exceptionally, the request will not be authorized.