Skip to content

Commit 508ffeb

Browse files
committed
Merge branch '4.1.x'
2 parents 9d9fac2 + c3ea4bb commit 508ffeb

File tree

5 files changed

+22
-7
lines changed

5 files changed

+22
-7
lines changed

spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/config/NormalizedOperationMethod.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.springframework.cloud.gateway.server.mvc.invoke.OperationParameters;
2929
import org.springframework.cloud.gateway.server.mvc.invoke.reflect.DefaultOperationMethod;
3030
import org.springframework.cloud.gateway.server.mvc.invoke.reflect.OperationMethod;
31+
import org.springframework.core.annotation.MergedAnnotation;
32+
import org.springframework.core.annotation.MergedAnnotations;
3133
import org.springframework.util.Assert;
3234
import org.springframework.util.StringUtils;
3335

@@ -52,8 +54,9 @@ public Method getMethod() {
5254
}
5355

5456
public boolean isConfigurable() {
55-
Configurable annotation = delegate.getMethod().getAnnotation(Configurable.class);
56-
return annotation != null && delegate.getParameters().getParameterCount() == 1;
57+
MergedAnnotation<Configurable> configurable = MergedAnnotations.from(delegate.getMethod())
58+
.get(Configurable.class);
59+
return configurable.isPresent() && delegate.getParameters().getParameterCount() == 1;
5760
}
5861

5962
@Override
@@ -72,8 +75,10 @@ public String toString() {
7275

7376
private Map<String, Object> normalizeArgs(Map<String, Object> operationArgs) {
7477
if (hasGeneratedKey(operationArgs)) {
75-
Shortcut shortcut = getMethod().getAnnotation(Shortcut.class);
76-
if (shortcut != null) {
78+
MergedAnnotation<Shortcut> shortcutMergedAnnotation = MergedAnnotations.from(delegate.getMethod())
79+
.get(Shortcut.class);
80+
if (shortcutMergedAnnotation.isPresent()) {
81+
Shortcut shortcut = shortcutMergedAnnotation.synthesize();
7782
String[] fieldOrder = getFieldOrder(shortcut);
7883
return switch (shortcut.type()) {
7984
case DEFAULT -> {

spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/config/RouterFunctionHolderFactory.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616

1717
package org.springframework.cloud.gateway.server.mvc.config;
1818

19+
import java.util.Arrays;
1920
import java.util.Collections;
21+
import java.util.Comparator;
2022
import java.util.HashMap;
2123
import java.util.LinkedHashMap;
2224
import java.util.List;
@@ -233,6 +235,11 @@ private <T> void translate(MultiValueMap<String, OperationMethod> operations, St
233235
if (handlerFilterFunction != null) {
234236
operationHandler.accept(handlerFilterFunction);
235237
}
238+
if (log.isDebugEnabled()) {
239+
log.debug(LogMessage.format("Yaml Properties matched Operations name: %s, args: %s, params: %s",
240+
normalizedName, opMethod.getNormalizedArgs().toString(),
241+
Arrays.toString(opMethod.getParameters().stream().toArray())));
242+
}
236243
}
237244
else {
238245
throw new IllegalArgumentException(String.format("Unable to find operation %s for %s with args %s",
@@ -244,6 +251,7 @@ private Optional<NormalizedOperationMethod> findOperation(MultiValueMap<String,
244251
String operationName, Map<String, Object> operationArgs) {
245252
return operations.getOrDefault(operationName, Collections.emptyList())
246253
.stream()
254+
.sorted(Comparator.comparing(OperationMethod::isConfigurable))
247255
.map(operationMethod -> new NormalizedOperationMethod(operationMethod, operationArgs))
248256
.filter(opeMethod -> matchOperation(opeMethod, operationArgs))
249257
.findFirst();
@@ -272,7 +280,7 @@ private <T> T invokeOperation(OperationMethod operationMethod, Map<String, Objec
272280
Map<String, Object> args = new HashMap<>();
273281
if (operationMethod.isConfigurable()) {
274282
OperationParameter operationParameter = operationMethod.getParameters().get(0);
275-
Object config = bindConfigurable(operationMethod, args, operationParameter);
283+
Object config = bindConfigurable(operationMethod, operationArgs, operationParameter);
276284
args.put(operationParameter.getName(), config);
277285
}
278286
else {

spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/CircuitBreakerFilterFunctions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public static HandlerFilterFunction<ServerResponse, ServerResponse> circuitBreak
6868
return circuitBreaker(config);
6969
}
7070

71-
@Shortcut
71+
@Shortcut("id")
7272
@Configurable
7373
public static HandlerFilterFunction<ServerResponse, ServerResponse> circuitBreaker(CircuitBreakerConfig config) {
7474
Set<HttpStatusCode> failureStatuses = config.getStatusCodes()

spring-cloud-gateway-server-mvc/src/main/java/org/springframework/cloud/gateway/server/mvc/filter/RetryFilterFunctions.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public abstract class RetryFilterFunctions {
4848
private RetryFilterFunctions() {
4949
}
5050

51+
@Shortcut
5152
public static HandlerFilterFunction<ServerResponse, ServerResponse> retry(int retries) {
5253
return retry(config -> config.setRetries(retries));
5354
}
@@ -58,7 +59,7 @@ public static HandlerFilterFunction<ServerResponse, ServerResponse> retry(Consum
5859
return retry(config);
5960
}
6061

61-
@Shortcut
62+
@Shortcut({ "retries", "series", "methods" })
6263
@Configurable
6364
public static HandlerFilterFunction<ServerResponse, ServerResponse> retry(RetryConfig config) {
6465
RetryTemplateBuilder retryTemplateBuilder = RetryTemplate.builder();

spring-cloud-gateway-server-mvc/src/test/resources/application-propertiesbeandefinitionregistrartests.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ spring.cloud.gateway.mvc:
3434
- HttpbinUriResolver=
3535
- TokenRelay
3636
- AddRequestHeader=X-Test,listRoute2
37+
- Retry=3,SERVER_ERROR
3738
- id: listRoute3
3839
uri: lb://httpbin
3940
predicates:

0 commit comments

Comments
 (0)