1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/silentbalanceyh-vertx-zero

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
d10060-utility-x-thenerror.md 2.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 04:28 85b9559

Утилита X, thenError

Zero system предоставляет нормализованный способ создания WebException Future. Вы можете использовать API из текущего руководства для обработки ответа. Определение API должно быть следующим:

static <T, R> Future<R> thenError(
    final Future<Boolean> условие, 
    final Supplier<Future<T>> trueFuture, 
    final Function<T, R> trueFun, 
    final Class<? extends WebException> clazz, 
    final Object... args)
static Future<JsonObject> thenError(
    final Future<Boolean> condition, 
    final Supplier<Future<JsonObject>> trueFuture, 
    final Class<? extends WebException> clazz, 
    final Object... args)
static <T> Future<T> thenError(
    final Class<? extends WebException> clazz, 
    final Object... args)

1. Исходный код

Исходный код взят из видеоприложения.

public Function<SecUser, Future<JsonObject>> response(
        final String username,
        final String password,
        final Function<SecUser, Future<JsonObject>> future) {
    return pojo -> {
        if (null == pojo) {
            // Пользователь не существует
            this.logger.info("[ Auth ] username/id = {0} does not exist.", username);
            return Ux.thenError(UserNotFoundException.class, this.clazz, username);
        } else if (!password.equals(pojo.getSPassword())) {
            // Пароль неправильный
            this.logger.info("[ Auth ] username/id = {0}, password is wrong {1}.", username, password);
            return Ux.thenError(PasswordWrongException.class, this.clazz, username);
        } else {
            // Продолжаем, потому что успешно
            this.logger.info("[ Auth ] User ( username/id = {0} ) login successfully.", username);
            return future.apply(pojo);
        }
    };
}

Вышеупомянутая функция выполняет следующие задачи:

  • Если возвращённый SecUser pojo равен нулю, клиент получает ответ UserNotFoundException Future.
  • Если пароль не совпадает, клиент получает ответ PasswordWrongException Future.

2. Резюме

Помимо прямого создания стандартного WebException Future, как показано в примере, есть ещё два других API для создания условного ошибочного Future на основе аргументов. Вам следует знать следующий рабочий процесс:

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/silentbalanceyh-vertx-zero.git
git@api.gitlife.ru:oschina-mirror/silentbalanceyh-vertx-zero.git
oschina-mirror
silentbalanceyh-vertx-zero
silentbalanceyh-vertx-zero
master