From 6f548558bd87a7a90c703c7992e5765675acff5a Mon Sep 17 00:00:00 2001 From: sgibb Date: Tue, 28 Nov 2023 15:28:51 -0500 Subject: [PATCH] Adds CircuitBreakerFilterFunctions.CircuitBreakerConfig.setFallbackUri() --- .../filter/CircuitBreakerFilterFunctions.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/CircuitBreakerFilterFunctions.java b/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/CircuitBreakerFilterFunctions.java index 1dff0450..b111f30a 100644 --- a/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/CircuitBreakerFilterFunctions.java +++ b/spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/CircuitBreakerFilterFunctions.java @@ -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 circuitBreaker(String id, URI fallbackUri) { + return circuitBreaker(config -> config.setId(id).setFallbackUri(fallbackUri)); + } + public static HandlerFilterFunction 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;