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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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_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 EXCEPTION_NONE = Tag.of("exception", "None");
|
||||||
|
|
||||||
private static final Tag OUTCOME_UNKNOWN = Tag.of("outcome", "UNKNOWN");
|
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
|
* 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
|
* @param exchange the exchange
|
||||||
* @return the uri tag derived from the exchange
|
* @return the uri tag derived from the exchange
|
||||||
*/
|
*/
|
||||||
|
@ -105,11 +110,17 @@ public final class WebFluxTags {
|
||||||
return URI_NOT_FOUND;
|
return URI_NOT_FOUND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
String path = exchange.getRequest().getPath().value();
|
String path = getPathInfo(exchange);
|
||||||
if (path.isEmpty()) {
|
if (path.isEmpty()) {
|
||||||
return URI_ROOT;
|
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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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");
|
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
|
@Test
|
||||||
public void methodTagToleratesNonStandardHttpMethods() {
|
public void methodTagToleratesNonStandardHttpMethods() {
|
||||||
ServerWebExchange exchange = mock(ServerWebExchange.class);
|
ServerWebExchange exchange = mock(ServerWebExchange.class);
|
||||||
|
|
Loading…
Reference in New Issue