From 2144a159f24d92b6afaac3e53ee4324a1a9d525a Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Fri, 6 Sep 2024 08:21:38 +0200 Subject: [PATCH] Remove spring-web dependency from ZipkinHttpClientSender Closes gh-42160 --- .../tracing/zipkin/HttpSender.java | 17 +++++++++-------- .../tracing/zipkin/ZipkinHttpClientSender.java | 4 ++-- .../zipkin/ZipkinRestTemplateSender.java | 4 ++-- .../tracing/zipkin/ZipkinWebClientSender.java | 4 ++-- .../zipkin/ZipkinHttpClientSenderTests.java | 3 +++ 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/HttpSender.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/HttpSender.java index ab0f677dbf..2d0b6db80c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/HttpSender.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/HttpSender.java @@ -27,7 +27,8 @@ import zipkin2.reporter.BytesMessageSender; import zipkin2.reporter.Encoding; import zipkin2.reporter.HttpEndpointSupplier.Factory; -import org.springframework.http.HttpHeaders; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.util.unit.DataSize; /** @@ -60,20 +61,20 @@ abstract class HttpSender extends BaseHttpSender { @Override protected void postSpans(URI endpoint, byte[] body) throws IOException { - HttpHeaders headers = getDefaultHeaders(); + MultiValueMap headers = getDefaultHeaders(); if (needsCompression(body)) { body = compress(body); - headers.set("Content-Encoding", "gzip"); + headers.add("Content-Encoding", "gzip"); } postSpans(endpoint, headers, body); } - abstract void postSpans(URI endpoint, HttpHeaders headers, byte[] body) throws IOException; + abstract void postSpans(URI endpoint, MultiValueMap headers, byte[] body) throws IOException; - HttpHeaders getDefaultHeaders() { - HttpHeaders headers = new HttpHeaders(); - headers.set("b3", "0"); - headers.set("Content-Type", this.encoding.mediaType()); + MultiValueMap getDefaultHeaders() { + MultiValueMap headers = new LinkedMultiValueMap<>(); + headers.add("b3", "0"); + headers.add("Content-Type", this.encoding.mediaType()); return headers; } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSender.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSender.java index 2f982a54da..8fa737f78c 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSender.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSender.java @@ -29,7 +29,7 @@ import java.time.Duration; import zipkin2.reporter.Encoding; import zipkin2.reporter.HttpEndpointSupplier.Factory; -import org.springframework.http.HttpHeaders; +import org.springframework.util.MultiValueMap; /** * A {@link HttpSender} which uses the JDK {@link HttpClient} for HTTP communication. @@ -50,7 +50,7 @@ class ZipkinHttpClientSender extends HttpSender { } @Override - void postSpans(URI endpoint, HttpHeaders headers, byte[] body) throws IOException { + void postSpans(URI endpoint, MultiValueMap headers, byte[] body) throws IOException { Builder request = HttpRequest.newBuilder() .POST(BodyPublishers.ofByteArray(body)) .uri(endpoint) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinRestTemplateSender.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinRestTemplateSender.java index de66c6a8fc..88bf8d5aec 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinRestTemplateSender.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinRestTemplateSender.java @@ -22,8 +22,8 @@ import zipkin2.reporter.Encoding; import zipkin2.reporter.HttpEndpointSupplier.Factory; import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; +import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; /** @@ -45,7 +45,7 @@ class ZipkinRestTemplateSender extends HttpSender { } @Override - void postSpans(URI endpoint, HttpHeaders headers, byte[] body) { + void postSpans(URI endpoint, MultiValueMap headers, byte[] body) { HttpEntity request = new HttpEntity<>(body, headers); this.restTemplate.exchange(endpoint, HttpMethod.POST, request, Void.class); } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinWebClientSender.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinWebClientSender.java index 3f555defa1..8ded275a6d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinWebClientSender.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinWebClientSender.java @@ -22,7 +22,7 @@ import java.time.Duration; import zipkin2.reporter.Encoding; import zipkin2.reporter.HttpEndpointSupplier.Factory; -import org.springframework.http.HttpHeaders; +import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.client.WebClient; /** @@ -47,7 +47,7 @@ class ZipkinWebClientSender extends HttpSender { } @Override - void postSpans(URI endpoint, HttpHeaders headers, byte[] body) { + void postSpans(URI endpoint, MultiValueMap headers, byte[] body) { this.webClient.post() .uri(endpoint) .headers((h) -> h.addAll(headers)) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSenderTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSenderTests.java index 56e11284d7..4dbc690792 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSenderTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinHttpClientSenderTests.java @@ -35,6 +35,8 @@ import zipkin2.reporter.Encoding; import zipkin2.reporter.HttpEndpointSupplier; import zipkin2.reporter.HttpEndpointSuppliers; +import org.springframework.boot.testsupport.classpath.ClassPathExclusions; + import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatException; import static org.assertj.core.api.Assertions.assertThatIOException; @@ -44,6 +46,7 @@ import static org.assertj.core.api.Assertions.assertThatIOException; * * @author Moritz Halbritter */ +@ClassPathExclusions("spring-web-*.jar") class ZipkinHttpClientSenderTests extends ZipkinHttpSenderTests { private MockWebServer mockBackEnd;