Merge branch '2.1.x'
This commit is contained in:
commit
a3737cd76d
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2018 the original author or authors.
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -41,6 +41,8 @@ public final class WebFluxTags {
|
|||
|
||||
private static final Tag URI_ROOT = Tag.of("uri", "root");
|
||||
|
||||
private static final Tag URI_UNKNOWN = Tag.of("uri", "UNKNOWN");
|
||||
|
||||
private static final Tag EXCEPTION_NONE = Tag.of("exception", "None");
|
||||
|
||||
private static final Tag OUTCOME_UNKNOWN = Tag.of("outcome", "UNKNOWN");
|
||||
|
@ -86,7 +88,10 @@ public final class WebFluxTags {
|
|||
|
||||
/**
|
||||
* Creates a {@code uri} tag based on the URI of the given {@code exchange}. Uses the
|
||||
* {@link HandlerMapping#BEST_MATCHING_PATTERN_ATTRIBUTE} best matching pattern.
|
||||
* {@link HandlerMapping#BEST_MATCHING_PATTERN_ATTRIBUTE} best matching pattern if
|
||||
* available. Falling back to {@code REDIRECTION} for 3xx responses, {@code NOT_FOUND}
|
||||
* for 404 responses, {@code root} for requests with no path info, and {@code UNKNOWN}
|
||||
* for all other requests.
|
||||
* @param exchange the exchange
|
||||
* @return the uri tag derived from the exchange
|
||||
*/
|
||||
|
@ -105,11 +110,17 @@ public final class WebFluxTags {
|
|||
return URI_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
String path = exchange.getRequest().getPath().value();
|
||||
String path = getPathInfo(exchange);
|
||||
if (path.isEmpty()) {
|
||||
return URI_ROOT;
|
||||
}
|
||||
return Tag.of("uri", path);
|
||||
return URI_UNKNOWN;
|
||||
}
|
||||
|
||||
private static String getPathInfo(ServerWebExchange exchange) {
|
||||
String path = exchange.getRequest().getPath().value();
|
||||
String uri = StringUtils.hasText(path) ? path : "/";
|
||||
return uri.replaceAll("//+", "/").replaceAll("/$", "");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2018 the original author or authors.
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -79,6 +79,28 @@ public class WebFluxTagsTests {
|
|||
assertThat(tag.getValue()).isEqualTo("root");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void uriTagValueIsRootWhenRequestHasNoPatternOrPathInfo() {
|
||||
Tag tag = WebFluxTags.uri(this.exchange);
|
||||
assertThat(tag.getValue()).isEqualTo("root");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void uriTagValueIsRootWhenRequestHasNoPatternAndSlashPathInfo() {
|
||||
MockServerHttpRequest request = MockServerHttpRequest.get("/").build();
|
||||
ServerWebExchange exchange = MockServerWebExchange.from(request);
|
||||
Tag tag = WebFluxTags.uri(exchange);
|
||||
assertThat(tag.getValue()).isEqualTo("root");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void uriTagValueIsUnknownWhenRequestHasNoPatternAndNonRootPathInfo() {
|
||||
MockServerHttpRequest request = MockServerHttpRequest.get("/example").build();
|
||||
ServerWebExchange exchange = MockServerWebExchange.from(request);
|
||||
Tag tag = WebFluxTags.uri(exchange);
|
||||
assertThat(tag.getValue()).isEqualTo("UNKNOWN");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void methodTagToleratesNonStandardHttpMethods() {
|
||||
ServerWebExchange exchange = mock(ServerWebExchange.class);
|
||||
|
|
Loading…
Reference in New Issue