private Optional<Serializable> getUserSetting( UserSettingKey key, Optional<User> user ) { if ( key == null ) { return Optional.empty(); } String username = user.isPresent() ? user.get().getUsername() : currentUserService.getCurrentUsername(); String cacheKey = getCacheKey( key.getName(), username ); Optional<Serializable> result = userSettingCache .get( cacheKey, c -> getUserSettingOptional( key, username ).orElse( null ) ); if ( !result.isPresent() && NAME_SETTING_KEY_MAP.containsKey( key.getName() ) ) { return Optional.ofNullable( systemSettingManager.getSystemSetting( NAME_SETTING_KEY_MAP.get( key.getName() ) ) ); } else { return result; } }