diff options
Diffstat (limited to 'lib/src/main/java/org/onap/portalng/bff/config/WebClientConfig.java')
-rw-r--r-- | lib/src/main/java/org/onap/portalng/bff/config/WebClientConfig.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/src/main/java/org/onap/portalng/bff/config/WebClientConfig.java b/lib/src/main/java/org/onap/portalng/bff/config/WebClientConfig.java new file mode 100644 index 0000000..7aa31bf --- /dev/null +++ b/lib/src/main/java/org/onap/portalng/bff/config/WebClientConfig.java @@ -0,0 +1,56 @@ +package org.onap.portalng.bff.config; + +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; +import org.springframework.web.reactive.function.client.ExchangeFilterFunction; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; + +@Configuration +public class WebClientConfig { + + @Component + public static class WebClientBeanPostProcessor implements BeanPostProcessor { + + private final ExchangeStrategies exchangeStrategies; + private final ExchangeFilterFunction idTokenExchangeFilterFunction; + private final ExchangeFilterFunction errorHandlingExchangeFilterFunction; + private final ExchangeFilterFunction logResponseExchangeFilterFunction; + + public WebClientBeanPostProcessor( + ExchangeStrategies exchangeStrategies, + @Qualifier(BeansConfig.ID_TOKEN_EXCHANGE_FILTER_FUNCTION) + ExchangeFilterFunction idTokenExchangeFilterFunction, + @Qualifier(BeansConfig.ERROR_HANDLING_EXCHANGE_FILTER_FUNCTION) + ExchangeFilterFunction errorHandlingExchangeFilterFunction, + @Qualifier(BeansConfig.LOG_RESPONSE_EXCHANGE_FILTER_FUNCTION) + ExchangeFilterFunction logResponseExchangeFilterFunction) { + this.exchangeStrategies = exchangeStrategies; + this.idTokenExchangeFilterFunction = idTokenExchangeFilterFunction; + this.errorHandlingExchangeFilterFunction = errorHandlingExchangeFilterFunction; + this.logResponseExchangeFilterFunction = logResponseExchangeFilterFunction; + } + + @Override + public Object postProcessBeforeInitialization(Object bean, String beanName) + throws BeansException { + return bean; + } + + @Override + public Object postProcessAfterInitialization(Object bean, String beanName) + throws BeansException { + if (bean instanceof WebClient.Builder builder) { + return builder + .exchangeStrategies(exchangeStrategies) + .filter(idTokenExchangeFilterFunction) + .filter(errorHandlingExchangeFilterFunction) + .filter(logResponseExchangeFilterFunction); + } + return bean; + } + } +} |