Skip to content

Commit ccfc1ae

Browse files
committed
Merge pull request #44500 from thecooldrop
* pr/44500: Polish "Remove support for URLConnectionSender" Remove support for URLConnectionSender Closes gh-44500
2 parents af8defd + ea87b91 commit ccfc1ae

File tree

5 files changed

+24
-56
lines changed

5 files changed

+24
-56
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ dependencies {
5858
optional("io.micrometer:micrometer-registry-statsd")
5959
optional("io.micrometer:micrometer-registry-wavefront")
6060
optional("io.zipkin.reporter2:zipkin-reporter-brave")
61-
optional("io.zipkin.reporter2:zipkin-sender-urlconnection")
6261
optional("io.opentelemetry:opentelemetry-exporter-zipkin")
6362
optional("io.opentelemetry:opentelemetry-exporter-otlp")
6463
optional("io.projectreactor.netty:reactor-netty-http")

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurations.java

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import zipkin2.reporter.SpanBytesEncoder;
3333
import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
3434
import zipkin2.reporter.brave.MutableSpanBytesEncoder;
35-
import zipkin2.reporter.urlconnection.URLConnectionSender;
3635

3736
import org.springframework.beans.factory.ObjectProvider;
3837
import org.springframework.boot.actuate.autoconfigure.tracing.ConditionalOnEnabledTracing;
@@ -54,7 +53,7 @@
5453
class ZipkinConfigurations {
5554

5655
@Configuration(proxyBeanMethods = false)
57-
@Import({ HttpClientSenderConfiguration.class, UrlConnectionSenderConfiguration.class })
56+
@Import({ HttpClientSenderConfiguration.class })
5857
static class SenderConfiguration {
5958

6059
}
@@ -82,31 +81,6 @@ ZipkinHttpClientSender httpClientSender(ZipkinProperties properties, Encoding en
8281

8382
}
8483

85-
@Configuration(proxyBeanMethods = false)
86-
@ConditionalOnClass(URLConnectionSender.class)
87-
@EnableConfigurationProperties(ZipkinProperties.class)
88-
static class UrlConnectionSenderConfiguration {
89-
90-
@Bean
91-
@ConditionalOnMissingBean(BytesMessageSender.class)
92-
URLConnectionSender urlConnectionSender(ZipkinProperties properties, Encoding encoding,
93-
ObjectProvider<ZipkinConnectionDetails> connectionDetailsProvider,
94-
ObjectProvider<HttpEndpointSupplier.Factory> endpointSupplierFactoryProvider) {
95-
ZipkinConnectionDetails connectionDetails = connectionDetailsProvider
96-
.getIfAvailable(() -> new PropertiesZipkinConnectionDetails(properties));
97-
HttpEndpointSupplier.Factory endpointSupplierFactory = endpointSupplierFactoryProvider
98-
.getIfAvailable(HttpEndpointSuppliers::constantFactory);
99-
URLConnectionSender.Builder builder = URLConnectionSender.newBuilder();
100-
builder.connectTimeout((int) properties.getConnectTimeout().toMillis());
101-
builder.readTimeout((int) properties.getReadTimeout().toMillis());
102-
builder.endpointSupplierFactory(endpointSupplierFactory);
103-
builder.endpoint(connectionDetails.getSpanEndpoint());
104-
builder.encoding(encoding);
105-
return builder.build();
106-
}
107-
108-
}
109-
11084
@Configuration(proxyBeanMethods = false)
11185
@ConditionalOnClass(AsyncZipkinSpanHandler.class)
11286
static class BraveConfiguration {

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationIntegrationTests.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
1818

1919
import org.junit.jupiter.api.Test;
20-
import zipkin2.reporter.urlconnection.URLConnectionSender;
2120

2221
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2322
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
@@ -28,7 +27,6 @@
2827
import org.springframework.boot.autoconfigure.AutoConfigurations;
2928
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
3029
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
31-
import org.springframework.boot.test.context.FilteredClassLoader;
3230
import org.springframework.boot.test.context.assertj.ApplicationContextAssertProvider;
3331
import org.springframework.boot.test.context.runner.AbstractApplicationContextRunner;
3432
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
@@ -61,12 +59,10 @@ void zipkinsUseOfWebClientDoesNotCauseACycle() {
6159

6260
<SELF extends AbstractApplicationContextRunner<SELF, C, A>, C extends ConfigurableApplicationContext, A extends ApplicationContextAssertProvider<C>> AbstractApplicationContextRunner<SELF, C, A> configure(
6361
AbstractApplicationContextRunner<SELF, ?, ?> runner) {
64-
return runner
65-
.withConfiguration(AutoConfigurations.of(MicrometerTracingAutoConfiguration.class,
66-
ObservationAutoConfiguration.class, BraveAutoConfiguration.class, ZipkinAutoConfiguration.class,
67-
HttpClientObservationsAutoConfiguration.class, MetricsAutoConfiguration.class,
68-
SimpleMetricsExportAutoConfiguration.class))
69-
.withClassLoader(new FilteredClassLoader(URLConnectionSender.class));
62+
return runner.withConfiguration(AutoConfigurations.of(MicrometerTracingAutoConfiguration.class,
63+
ObservationAutoConfiguration.class, BraveAutoConfiguration.class, ZipkinAutoConfiguration.class,
64+
HttpClientObservationsAutoConfiguration.class, MetricsAutoConfiguration.class,
65+
SimpleMetricsExportAutoConfiguration.class));
7066
}
7167

7268
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfigurationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2024 the original author or authors.
2+
* Copyright 2012-2025 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -73,7 +73,7 @@ void shouldUseCustomConnectionDetailsWhenDefined() {
7373
@Test
7474
void shouldWorkWithoutSenders() {
7575
this.contextRunner
76-
.withClassLoader(new FilteredClassLoader("zipkin2.reporter.urlconnection", "org.springframework.web.client",
76+
.withClassLoader(new FilteredClassLoader("org.springframework.web.client",
7777
"org.springframework.web.reactive.function.client"))
7878
.run((context) -> assertThat(context).hasNotFailed());
7979
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinConfigurationsSenderConfigurationTests.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@
2121
import org.junit.jupiter.api.Test;
2222
import zipkin2.reporter.BytesMessageSender;
2323
import zipkin2.reporter.HttpEndpointSupplier;
24-
import zipkin2.reporter.urlconnection.URLConnectionSender;
2524

25+
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.HttpClientSenderConfiguration;
2626
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.SenderConfiguration;
27-
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.UrlConnectionSenderConfiguration;
2827
import org.springframework.boot.autoconfigure.AutoConfigurations;
2928
import org.springframework.boot.test.context.FilteredClassLoader;
3029
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
@@ -40,7 +39,6 @@
4039
* @author Moritz Halbritter
4140
* @author Wick Dynex
4241
*/
43-
@SuppressWarnings({ "deprecation", "removal" })
4442
class ZipkinConfigurationsSenderConfigurationTests {
4543

4644
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
@@ -51,19 +49,14 @@ void shouldSupplyDefaultHttpClientSenderBean() {
5149
this.contextRunner.run((context) -> {
5250
assertThat(context).hasSingleBean(BytesMessageSender.class);
5351
assertThat(context).hasSingleBean(ZipkinHttpClientSender.class);
54-
assertThat(context).doesNotHaveBean(URLConnectionSender.class);
5552
});
5653
}
5754

5855
@Test
59-
void shouldUseUrlConnectionSenderIfHttpClientIsNotAvailable() {
60-
this.contextRunner.withUserConfiguration(UrlConnectionSenderConfiguration.class)
56+
void shouldNotProvideHttpClientSenderIfHttpClientIsNotAvailable() {
57+
this.contextRunner.withUserConfiguration(HttpClientSenderConfiguration.class)
6158
.withClassLoader(new FilteredClassLoader(HttpClient.class))
62-
.run((context) -> {
63-
assertThat(context).doesNotHaveBean(ZipkinHttpClientSender.class);
64-
assertThat(context).hasSingleBean(BytesMessageSender.class);
65-
assertThat(context).hasSingleBean(URLConnectionSender.class);
66-
});
59+
.run((context) -> assertThat(context).doesNotHaveBean(ZipkinHttpClientSender.class));
6760
}
6861

6962
@Test
@@ -77,16 +70,15 @@ void shouldBackOffOnCustomBeans() {
7770
@Test
7871
void shouldUseCustomHttpEndpointSupplierFactory() {
7972
this.contextRunner.withUserConfiguration(CustomHttpEndpointSupplierFactoryConfiguration.class)
80-
.withClassLoader(new FilteredClassLoader(HttpClient.class))
8173
.run((context) -> {
82-
URLConnectionSender urlConnectionSender = context.getBean(URLConnectionSender.class);
83-
assertThat(urlConnectionSender).extracting("delegate.endpointSupplier")
74+
ZipkinHttpClientSender httpClientSender = context.getBean(ZipkinHttpClientSender.class);
75+
assertThat(httpClientSender).extracting("endpointSupplier")
8476
.isInstanceOf(CustomHttpEndpointSupplier.class);
8577
});
8678
}
8779

8880
@Configuration(proxyBeanMethods = false)
89-
private static final class CustomConfiguration {
81+
static class CustomConfiguration {
9082

9183
@Bean
9284
BytesMessageSender customSender() {
@@ -96,7 +88,7 @@ BytesMessageSender customSender() {
9688
}
9789

9890
@Configuration(proxyBeanMethods = false)
99-
private static final class CustomHttpEndpointSupplierFactoryConfiguration {
91+
static class CustomHttpEndpointSupplierFactoryConfiguration {
10092

10193
@Bean
10294
HttpEndpointSupplier.Factory httpEndpointSupplier() {
@@ -105,7 +97,7 @@ HttpEndpointSupplier.Factory httpEndpointSupplier() {
10597

10698
}
10799

108-
private static final class CustomHttpEndpointSupplierFactory implements HttpEndpointSupplier.Factory {
100+
static class CustomHttpEndpointSupplierFactory implements HttpEndpointSupplier.Factory {
109101

110102
@Override
111103
public HttpEndpointSupplier create(String endpoint) {
@@ -114,7 +106,13 @@ public HttpEndpointSupplier create(String endpoint) {
114106

115107
}
116108

117-
private record CustomHttpEndpointSupplier(String endpoint) implements HttpEndpointSupplier {
109+
static class CustomHttpEndpointSupplier implements HttpEndpointSupplier {
110+
111+
private final String endpoint;
112+
113+
CustomHttpEndpointSupplier(String endpoint) {
114+
this.endpoint = endpoint;
115+
}
118116

119117
@Override
120118
public String get() {
@@ -124,6 +122,7 @@ public String get() {
124122
@Override
125123
public void close() {
126124
}
125+
127126
}
128127

129128
}

0 commit comments

Comments
 (0)