private static OpenIdConfigurationResponse mergeResponse(
            final OpenIdConfigurationResponse response,
            final OpenIdConfiguration openIdConfiguration) {

        // TODO: 30/11/2022 Debatable if we need to allow these overrides,
        //  ought to just rely on the response from the idp
        // Overwrite configuration with any values we might have manually configured.
        final Builder builder = response.copy();

        final BiConsumer<Consumer<String>, Supplier<String>> mergeFunc = (builderSetter, configGetter) -> {
            final String val = configGetter.get();
            if (!NullSafe.isBlankString(val)) {
                builderSetter.accept(val);
            }
        };

        mergeFunc.accept(builder::issuer, openIdConfiguration::getIssuer);
        mergeFunc.accept(builder::authorizationEndpoint, openIdConfiguration::getAuthEndpoint);
        mergeFunc.accept(builder::tokenEndpoint, openIdConfiguration::getTokenEndpoint);
        mergeFunc.accept(builder::jwksUri, openIdConfiguration::getJwksUri);
        mergeFunc.accept(builder::logoutEndpoint, openIdConfiguration::getLogoutEndpoint);

        return builder.build();
    }
Combines the values from {@link AbstractOpenIdConfig} with values obtained from the external
Open ID Connect IDP server.
stroom-security/stroom-security-common-impl/src/main/java/stroom/security/common/impl/ExternalIdpConfigurationProvider.java