WingtipsSpringUtil { public static FailureCallback failureCallbackWithTracing(FailureCallback failureCallback) { return new FailureCallbackWithTracing(failureCallback); } protected  WingtipsSpringUtil(); static RestTemplate createTracingEnabledRestTemplate(); static RestTemplate createTracingEnabledRestTemplate(boolean surroundCallsWithSubspan); static RestTemplate createTracingEnabledRestTemplate(
        boolean surroundCallsWithSubspan,
        HttpTagAndSpanNamingStrategy<HttpRequest, ClientHttpResponse> tagAndNamingStrategy,
        HttpTagAndSpanNamingAdapter<HttpRequest, ClientHttpResponse> tagAndNamingAdapter
    ); static AsyncRestTemplate createTracingEnabledAsyncRestTemplate(); static AsyncRestTemplate createTracingEnabledAsyncRestTemplate(boolean surroundCallsWithSubspan); static AsyncRestTemplate createTracingEnabledAsyncRestTemplate(
        boolean surroundCallsWithSubspan,
        HttpTagAndSpanNamingStrategy<HttpRequest, ClientHttpResponse> tagAndNamingStrategy,
        HttpTagAndSpanNamingAdapter<HttpRequest, ClientHttpResponse> tagAndNamingAdapter
    ); static void propagateTracingHeaders(HttpMessage httpMessage, Span span); static String getRequestMethodAsString(HttpMethod method); static SuccessCallback<T> successCallbackWithTracing(SuccessCallback<T> successCallback); static SuccessCallback<T> successCallbackWithTracing(
        SuccessCallback<T> successCallback,
        Pair<Deque<Span>, Map<String, String>> threadInfoToLink
    ); static SuccessCallback<T> successCallbackWithTracing(
        SuccessCallback<T> successCallback,
        Deque<Span> spanStackToLink,
        Map<String, String> mdcContextMapToLink
    ); static FailureCallback failureCallbackWithTracing(FailureCallback failureCallback); static FailureCallback failureCallbackWithTracing(FailureCallback failureCallback,
                                                             Pair<Deque<Span>, Map<String, String>> threadInfoToLink); static FailureCallback failureCallbackWithTracing(FailureCallback failureCallback,
                                                             Deque<Span> spanStackToLink,
                                                             Map<String, String> mdcContextMapToLink); static ListenableFutureCallback<T> listenableFutureCallbackWithTracing(
        ListenableFutureCallback<T> listenableFutureCallback
    ); static ListenableFutureCallback<T> listenableFutureCallbackWithTracing(
        ListenableFutureCallback<T> listenableFutureCallback,
        Pair<Deque<Span>, Map<String, String>> threadInfoToLink
    ); static ListenableFutureCallback<T> listenableFutureCallbackWithTracing(
        ListenableFutureCallback<T> listenableFutureCallback,
        Deque<Span> spanStackToLink,
        Map<String, String> mdcContextMapToLink
    );  }
@Test public void failureCallbackWithTracing_using_current_thread_info_works_as_expected() { Pair<Deque<Span>, Map<String, String>> setupInfo = setupCurrentThreadWithTracingInfo(); FailureCallback result = failureCallbackWithTracing(failureCallbackMock); verifyFailureCallbackWithTracing(result, failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void failureCallbackWithTracing_pair_works_as_expected() { Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); FailureCallback result = failureCallbackWithTracing(failureCallbackMock, setupInfo); verifyFailureCallbackWithTracing(result, failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void failureCallbackWithTracing_separate_args_works_as_expected() { Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); FailureCallback result = failureCallbackWithTracing( failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight() ); verifyFailureCallbackWithTracing(result, failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }