WingtipsSpringWebfluxExchangeFilterFunction implements ExchangeFilterFunction { protected @NotNull String getSubspanSpanName( @NotNull ClientRequest request, @NotNull HttpTagAndSpanNamingStrategy<ClientRequest, ?> namingStrategy, @NotNull HttpTagAndSpanNamingAdapter<ClientRequest, ?> adapter ) { String subspanNameFromStrategy = namingStrategy.getInitialSpanName(request, adapter); if (StringUtils.isNotBlank(subspanNameFromStrategy)) { return subspanNameFromStrategy; } return HttpRequestTracingUtils.getFallbackSpanNameForHttpRequest( "webflux_downstream_call", getRequestMethodAsString(request.method()) ); } WingtipsSpringWebfluxExchangeFilterFunction();  WingtipsSpringWebfluxExchangeFilterFunction(boolean surroundCallsWithSubspan); @SuppressWarnings("ConstantConditions")  WingtipsSpringWebfluxExchangeFilterFunction(
        boolean surroundCallsWithSubspan,
        @NotNull HttpTagAndSpanNamingStrategy<ClientRequest, ClientResponse> tagAndNamingStrategy,
        @NotNull HttpTagAndSpanNamingAdapter<ClientRequest, ClientResponse> tagAndNamingAdapter
    ); @Override @NotNull Mono<ClientResponse> filter(
        @NotNull ClientRequest request, @NotNull ExchangeFunction next
    ); static final @NotNull WingtipsSpringWebfluxExchangeFilterFunction DEFAULT_IMPL; }
@DataProvider(value = { "spanNameFromStrategy | PATCH | spanNameFromStrategy", "null | PATCH | webflux_downstream_call-PATCH", " | PATCH | webflux_downstream_call-PATCH", "[whitespace] | PATCH | webflux_downstream_call-PATCH", "null | null | webflux_downstream_call-UNKNOWN_HTTP_METHOD", "null | | webflux_downstream_call-UNKNOWN_HTTP_METHOD", "null | [whitespace] | webflux_downstream_call-UNKNOWN_HTTP_METHOD", }, splitBy = "\\|") @Test public void getSubspanSpanName_works_as_expected(String strategyResult, String httpMethod, String expectedResult) { if ("[whitespace]".equals(strategyResult)) { strategyResult = " \n\r\t "; } if ("[whitespace]".equals(httpMethod)) { httpMethod = " \n\r\t "; } initialSpanNameFromStrategy.set(strategyResult); ClientRequest requestMock = mock(ClientRequest.class); doReturn(HttpMethod.resolve(httpMethod)).when(requestMock).method(); String result = filterSpy.getSubspanSpanName(requestMock, tagAndNamingStrategy, tagAndNamingAdapterMock); assertThat(result).isEqualTo(expectedResult); assertThat(strategyInitialSpanNameMethodCalled.get()).isTrue(); strategyInitialSpanNameArgs.get().verifyArgs(requestMock, tagAndNamingAdapterMock); }