Add ReactiveResponseConsumer classpath check to http5 auto-configuration
Closes gh-34964
This commit is contained in:
parent
947ac8df73
commit
ec4d52e381
|
@ -73,6 +73,7 @@ dependencies {
|
|||
exclude group: "commons-logging", module: "commons-logging"
|
||||
}
|
||||
optional("org.apache.httpcomponents.client5:httpclient5")
|
||||
optional("org.apache.httpcomponents.core5:httpcore5-reactive")
|
||||
optional("org.apache.kafka:kafka-streams")
|
||||
optional("org.apache.solr:solr-solrj") {
|
||||
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
||||
|
@ -275,4 +276,4 @@ tasks.named("checkSpringConfigurationMetadata").configure {
|
|||
"spring.datasource.tomcat.*",
|
||||
"spring.groovy.template.configuration.*"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.springframework.boot.autoconfigure.web.reactive.function.client;
|
|||
|
||||
import org.apache.hc.client5.http.impl.async.HttpAsyncClients;
|
||||
import org.apache.hc.core5.http.nio.AsyncRequestProducer;
|
||||
import org.apache.hc.core5.reactive.ReactiveResponseConsumer;
|
||||
import org.eclipse.jetty.client.HttpClient;
|
||||
import org.eclipse.jetty.util.ssl.SslContextFactory;
|
||||
|
||||
|
@ -87,7 +88,7 @@ class ClientHttpConnectorConfiguration {
|
|||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ConditionalOnClass({ HttpAsyncClients.class, AsyncRequestProducer.class })
|
||||
@ConditionalOnClass({ HttpAsyncClients.class, AsyncRequestProducer.class, ReactiveResponseConsumer.class })
|
||||
@ConditionalOnMissingBean(ClientHttpConnector.class)
|
||||
static class HttpClient5 {
|
||||
|
||||
|
|
|
@ -24,8 +24,10 @@ import org.eclipse.jetty.util.thread.Scheduler;
|
|||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.FilteredClassLoader;
|
||||
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.http.client.reactive.HttpComponentsClientHttpConnector;
|
||||
import org.springframework.http.client.reactive.JettyClientHttpConnector;
|
||||
import org.springframework.http.client.reactive.JettyResourceFactory;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
@ -38,6 +40,7 @@ import static org.mockito.Mockito.mock;
|
|||
*
|
||||
* @author Phillip Webb
|
||||
* @author Brian Clozel
|
||||
* @author Moritz Halbritter
|
||||
*/
|
||||
class ClientHttpConnectorConfigurationTests {
|
||||
|
||||
|
@ -83,6 +86,14 @@ class ClientHttpConnectorConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldNotConfigureReactiveHttpClient5WhenHttpCore5ReactiveJarIsMissing() {
|
||||
new ReactiveWebApplicationContextRunner()
|
||||
.withClassLoader(new FilteredClassLoader("org.apache.hc.core5.reactive"))
|
||||
.withConfiguration(AutoConfigurations.of(ClientHttpConnectorConfiguration.HttpClient5.class))
|
||||
.run((context) -> assertThat(context).doesNotHaveBean(HttpComponentsClientHttpConnector.class));
|
||||
}
|
||||
|
||||
static class CustomHttpClientMapper {
|
||||
|
||||
static boolean called = false;
|
||||
|
|
Loading…
Reference in New Issue