LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Эквивалентный код:

        return Optional.ofNullable(jws.getKeyIdHeaderValue())
                .map(keyId ->
                        Optional.ofNullable(store.get(keyId))
                                .orElseThrow(() -> new TokenUnsignedException("unknown or expired kid: " + keyId))
                ).orElseThrow(() -> new TokenCorruptedException("no kid header"));

Если не кидать разные эксепшны, можно записать проще:

        return Optional.ofNullable(jws.getKeyIdHeaderValue())
                .flatMap(keyId -> Optional.ofNullable(store.get(keyId)))
                .orElseThrow(() -> new TokenCorruptedException("no kid header"));

На мой взгляд это всё - усложнение кода на ровном месте. Пиши простой и понятный код, сравнивая с null-ами (или делай другой дизайн API возвращая Optional из своих методов).

Исходная версия Legioner, :

Эквивалентный код:

        return Optional.ofNullable(jws.getKeyIdHeaderValue())
                .map(keyId ->
                        Optional.ofNullable(store.get(keyId))
                                .orElseThrow(() -> new TokenUnsignedException("unknown or expired kid: " + keyId))
                ).orElseThrow(() -> new TokenCorruptedException("no kid header"));

Если не кидать разные эксепшны, можно записать проще:

        return Optional.ofNullable(jws.getKeyIdHeaderValue())
                .flatMap(keyId -> Optional.ofNullable(store.get(keyId)))
                .orElseThrow(() -> new TokenCorruptedException("no kid header"));