@Test public void constructor_with_HttpMessage_arg_sets_fields_as_expected() { // given HttpHeaders headersMock = mock(HttpHeaders.class); HttpMessage messageMock = mock(HttpMessage.class); doReturn(headersMock).when(messageMock).getHeaders(); // when HttpHeadersForPropagation impl = new HttpHeadersForPropagation(messageMock); // then assertThat(impl.httpHeaders).isSameAs(headersMock); }
@Test public void constructor_with_HttpMessage_arg_throws_IllegalArgumentException_when_passed_null() { // when Throwable ex = catchThrowable(() -> new HttpHeadersForPropagation((HttpMessage)null)); // then assertThat(ex) .isInstanceOf(IllegalArgumentException.class) .hasMessage("httpMessage cannot be null"); }
@Before public void beforeMethod() { resetTracing(); httpMessageMock = mock(HttpMessage.class); headersMock = mock(HttpHeaders.class); doReturn(headersMock).when(httpMessageMock).getHeaders(); successCallbackMock = mock(SuccessCallback.class); failureCallbackMock = mock(FailureCallback.class); listenableFutureCallbackMock = mock(ListenableFutureCallback.class); }
private static Charset getCharset(HttpMessage message) { return Optional.ofNullable(message.getHeaders().getContentType()) .map(MediaType::getCharset) .orElse(DEFAULT_CHARSET); }
protected void setContentLength(final HttpMessage message, final byte[] messageBody) { message.getHeaders().setContentLength(messageBody.length); }
public HttpHeadersForPropagation(HttpMessage httpMessage) { this(extractHttpHeaders(httpMessage)); }
protected static HttpHeaders extractHttpHeaders(HttpMessage httpMessage) { if (httpMessage == null) { throw new IllegalArgumentException("httpMessage cannot be null"); } return httpMessage.getHeaders(); }
@Deprecated//(since = "2.5.1", forRemoval = true) static ThrowingFunction<ClientHttpResponse, HttpHeaders, IOException> headers() { return HttpMessage::getHeaders; }
/** * Sets the tracing headers on the given {@link HttpMessage#getHeaders()} with values from the given {@link Span}. * Does nothing if any of the given arguments are null (i.e. it is safe to pass null, but nothing will happen). * Usually you'd want to use one of the interceptors to handle tracing propagation for you * ({@link WingtipsClientHttpRequestInterceptor} or {@link WingtipsAsyncClientHttpRequestInterceptor}), however * you can call this method to do manual propagation if needed. * * <p>This method conforms to the <a href="https://github.com/openzipkin/b3-propagation">B3 propagation spec</a>. * * @param httpMessage The {@link HttpMessage} to set tracing headers on. Can be null - if this is null then this * method will do nothing. * @param span The {@link Span} to get the tracing info from to set on the headers. Can be null - if this is null * then this method will do nothing. */ public static void propagateTracingHeaders(HttpMessage httpMessage, Span span) { HttpHeadersForPropagation headersForPropagation = (httpMessage == null) ? null : new HttpHeadersForPropagation(httpMessage); HttpRequestTracingUtils.propagateTracingHeaders(headersForPropagation, span); }