Browse Source

Prevent NoClassDefFoundError when Jetty Reactive HttpClient not on classpath

Closes gh-35608

Signed-off-by: Edgar Asatryan <nstdio@gmail.com>
pull/35672/head
Edgar Asatryan 2 months ago committed by rstoyanchev
parent
commit
141df5291d
  1. 4
      spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java
  2. 4
      spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java

4
spring-test/src/main/java/org/springframework/test/web/reactive/server/DefaultWebTestClientBuilder.java

@ -67,7 +67,9 @@ class DefaultWebTestClientBuilder implements WebTestClient.Builder {
ClassLoader loader = DefaultWebTestClientBuilder.class.getClassLoader(); ClassLoader loader = DefaultWebTestClientBuilder.class.getClassLoader();
reactorNettyClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader); reactorNettyClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader);
reactorNetty2ClientPresent = ClassUtils.isPresent("reactor.netty5.http.client.HttpClient", loader); reactorNetty2ClientPresent = ClassUtils.isPresent("reactor.netty5.http.client.HttpClient", loader);
jettyClientPresent = ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader); jettyClientPresent =
ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader) &&
ClassUtils.isPresent("org.eclipse.jetty.reactive.client.ReactiveRequest", loader);
httpComponentsClientPresent = httpComponentsClientPresent =
ClassUtils.isPresent("org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient", loader) && ClassUtils.isPresent("org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient", loader) &&
ClassUtils.isPresent("org.apache.hc.core5.reactive.ReactiveDataConsumer", loader); ClassUtils.isPresent("org.apache.hc.core5.reactive.ReactiveDataConsumer", loader);

4
spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java

@ -67,7 +67,9 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
ClassLoader loader = DefaultWebClientBuilder.class.getClassLoader(); ClassLoader loader = DefaultWebClientBuilder.class.getClassLoader();
reactorNettyClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader); reactorNettyClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader);
reactorNetty2ClientPresent = ClassUtils.isPresent("reactor.netty5.http.client.HttpClient", loader); reactorNetty2ClientPresent = ClassUtils.isPresent("reactor.netty5.http.client.HttpClient", loader);
jettyClientPresent = ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader); jettyClientPresent =
ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader) &&
ClassUtils.isPresent("org.eclipse.jetty.reactive.client.ReactiveRequest", loader);
httpComponentsClientPresent = httpComponentsClientPresent =
ClassUtils.isPresent("org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient", loader) && ClassUtils.isPresent("org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient", loader) &&
ClassUtils.isPresent("org.apache.hc.core5.reactive.ReactiveDataConsumer", loader); ClassUtils.isPresent("org.apache.hc.core5.reactive.ReactiveDataConsumer", loader);

Loading…
Cancel
Save