Adds CircuitBreakerFilterFunctions.CircuitBreakerConfig.setFallbackUri()

This commit is contained in:
sgibb
2023-11-28 15:28:51 -05:00
parent 57dd2b026e
commit 6f548558bd

View File

@@ -18,6 +18,7 @@ package org.springframework.cloud.gateway.server.mvc.filter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.net.URI;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
@@ -36,6 +37,7 @@ import org.springframework.cloud.gateway.server.mvc.common.Shortcut;
import org.springframework.cloud.gateway.server.mvc.handler.GatewayServerResponse;
import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.server.ResponseStatusException;
import org.springframework.web.servlet.function.HandlerFilterFunction;
@@ -51,6 +53,10 @@ public abstract class CircuitBreakerFilterFunctions {
return circuitBreaker(config -> config.setId(id));
}
public static HandlerFilterFunction<ServerResponse, ServerResponse> circuitBreaker(String id, URI fallbackUri) {
return circuitBreaker(config -> config.setId(id).setFallbackUri(fallbackUri));
}
public static HandlerFilterFunction<ServerResponse, ServerResponse> circuitBreaker(String id, String fallbackPath) {
return circuitBreaker(config -> config.setId(id).setFallbackPath(fallbackPath));
}
@@ -138,6 +144,22 @@ public abstract class CircuitBreakerFilterFunctions {
return fallbackPath;
}
public CircuitBreakerConfig setFallbackUri(String fallbackUri) {
Assert.notNull(fallbackUri, "fallbackUri String may not be null");
setFallbackUri(URI.create(fallbackUri));
return this;
}
public CircuitBreakerConfig setFallbackUri(URI fallbackUri) {
if (fallbackUri != null) {
Assert.isTrue(fallbackUri.getScheme().equalsIgnoreCase("forward"), () -> "Scheme must be forward, but is " + fallbackUri.getScheme());
fallbackPath = fallbackUri.getPath();
}
else {
fallbackPath = null;
}
return this;
}
public CircuitBreakerConfig setFallbackPath(String fallbackPath) {
this.fallbackPath = fallbackPath;
return this;