package eu.eudat.logic.handlers; import eu.eudat.logic.utilities.circuitbreaker.CircuitBreaker; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; import org.springframework.http.client.ClientHttpRequestExecution; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.ClientHttpResponse; /** * Created by ikalyvas on 2/25/2019. */ public class CircuitBreakerHttpClientInterceptor implements ClientHttpRequestInterceptor { private CircuitBreaker circuitBreaker; @Autowired public CircuitBreakerHttpClientInterceptor(CircuitBreaker circuitBreaker) { this.circuitBreaker = circuitBreaker; } @Override public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) { System.out.println(request); return this.circuitBreaker.handle(request, () -> execution.execute(request, body)); } }