diff --git a/docs/modules/ROOT/pages/spring-cloud-openfeign.adoc b/docs/modules/ROOT/pages/spring-cloud-openfeign.adoc
index e590b6165..a6cec5346 100644
--- a/docs/modules/ROOT/pages/spring-cloud-openfeign.adoc
+++ b/docs/modules/ROOT/pages/spring-cloud-openfeign.adoc
@@ -140,12 +140,10 @@ If none of them is on the classpath, the default Feign client is used.
NOTE: `spring-cloud-starter-openfeign` supports `spring-cloud-starter-loadbalancer`. However, as is an optional dependency, you need to make sure it has been added to your project if you want to use it.
-To use OkHttpClient-backed Feign clients and Http2Client Feign clients, make sure that the client you want to use is on the classpath and set `spring.cloud.openfeign.okhttp.enabled` or `spring.cloud.openfeign.http2client.enabled` to `true` respectively.
-
When it comes to the Apache HttpClient 5-backed Feign clients, it's enough to ensure HttpClient 5 is on the classpath, but you can still disable its use for Feign Clients by setting `spring.cloud.openfeign.httpclient.hc5.enabled` to `false`.
You can customize the HTTP client used by providing a bean of either `org.apache.hc.client5.http.impl.classic.CloseableHttpClient` when using Apache HC5.
-You can further customise http clients by setting values in the `spring.cloud.openfeign.httpclient.xxx` properties. The ones prefixed just with `httpclient` will work for all the clients, the ones prefixed with `httpclient.hc5` to Apache HttpClient 5, the ones prefixed with `httpclient.okhttp` to OkHttpClient and the ones prefixed with `httpclient.http2` to Http2Client. You can find a full list of properties you can customise in the appendix.
+You can further customise http clients by setting values in the `spring.cloud.openfeign.httpclient.xxx` properties. The ones prefixed just with `httpclient` will work for all the clients, the ones prefixed with `httpclient.hc5` to Apache HttpClient 5, and the ones prefixed with `httpclient.http2` to Http2Client. You can find a full list of properties you can customise in the appendix.
If you can not configure Apache HttpClient 5 by using properties, there is an `HttpClient5FeignConfiguration.HttpClientBuilderCustomizer` interface for programmatic configuration.
TIP: Apache HTTP Components `5.4` have changed defaults in the HttpClient relating to HTTP/1.1 TLS upgrades. Most proxy servers handle upgrades without issue, however, you may encounter issues with Envoy or Istio. If you need to restore previous behaviour, you can use `HttpClient5FeignConfiguration.HttpClientBuilderCustomizer` to do it, as shown in the example below.
@@ -613,8 +611,6 @@ These properties allow you to be selective about the compressed media types and
When the request matches the mime type set in `spring.cloud.openfeign.compression.request.mime-types` and the size set in `spring.cloud.openfeign.compression.request.min-request-size`, `spring.cloud.openfeign.compression.request.enabled=true` results in compression headers being added to the request.
The functionality of the headers is to signal to the server that a compressed body is expected by the client. It is the responsibility of the server-side app to provide the compressed body based on the headers provided by the client.
-TIP: Since the OkHttpClient uses "transparent" compression, that is disabled if the `content-encoding` or `accept-encoding` header is present, we do not enable compression when `feign.okhttp.OkHttpClient` is present on the classpath and `spring.cloud.openfeign.okhttp.enabled` is set to `true`.
-
[[feign-logging]]
=== Feign logging
diff --git a/docs/modules/ROOT/partials/_configprops.adoc b/docs/modules/ROOT/partials/_configprops.adoc
index 4db584c45..73a2c705e 100644
--- a/docs/modules/ROOT/partials/_configprops.adoc
+++ b/docs/modules/ROOT/partials/_configprops.adoc
@@ -96,14 +96,12 @@
|spring.cloud.openfeign.httpclient.max-connections | `+++200+++` |
|spring.cloud.openfeign.httpclient.max-connections-per-route | `+++50+++` |
|spring.cloud.openfeign.httpclient.ok-http.protocols | | Configure the protocols used by this client to communicate with remote servers. Uses {@link String} values of {@link Protocol}.
-|spring.cloud.openfeign.httpclient.ok-http.read-timeout | `+++60s+++` | {@link OkHttpClient} read timeout; defaults to 60 seconds.
-|spring.cloud.openfeign.httpclient.time-to-live | `+++900+++` |
+|spring.cloud.openfeign.httpclient.time-to-live | `+++900+++` |
|spring.cloud.openfeign.httpclient.time-to-live-unit | `+++seconds+++` |
|spring.cloud.openfeign.lazy-attributes-resolution | `+++false+++` | Switches @FeignClient attributes resolution mode to lazy.
|spring.cloud.openfeign.micrometer.enabled | `+++true+++` | Enables Micrometer capabilities for Feign.
|spring.cloud.openfeign.oauth2.clientRegistrationId | | Provides a clientId to be used with OAuth2.
|spring.cloud.openfeign.oauth2.enabled | `+++false+++` | Enables feign interceptor for managing oauth2 access token.
-|spring.cloud.openfeign.okhttp.enabled | `+++false+++` | Enables the use of the OK HTTP Client by Feign.
|spring.cloud.refresh.additional-property-sources-to-retain | | Additional property sources to retain during a refresh. Typically only system property sources are retained. This property allows property sources, such as property sources created by EnvironmentPostProcessors to be retained as well.
|spring.cloud.refresh.enabled | `+++true+++` | Enables autoconfiguration for the refresh scope and associated features.
|spring.cloud.refresh.extra-refreshable | `+++true+++` | Additional bean names or class names for beans to post process into refresh scope.
@@ -114,4 +112,4 @@
|spring.cloud.service-registry.auto-registration.register-management | `+++true+++` | Whether to register the management as a service. Defaults to true.
|spring.cloud.util.enabled | `+++true+++` | Enables creation of Spring Cloud utility beans.
-|===
\ No newline at end of file
+|===
diff --git a/spring-cloud-openfeign-core/pom.xml b/spring-cloud-openfeign-core/pom.xml
index 267fef29d..54cc01571 100644
--- a/spring-cloud-openfeign-core/pom.xml
+++ b/spring-cloud-openfeign-core/pom.xml
@@ -134,21 +134,11 @@
feign-hc5
true
-
- io.github.openfeign
- feign-okhttp
- true
-
io.github.openfeign
feign-java11
true
-
- com.squareup.okhttp3
- okhttp
- true
-
org.springframework.boot
spring-boot-autoconfigure-processor
diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java
index 0472938a9..ecfbef1de 100644
--- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java
+++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/FeignAutoConfiguration.java
@@ -18,22 +18,9 @@
import java.lang.reflect.Method;
import java.net.http.HttpClient;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
import feign.Capability;
import feign.Client;
@@ -42,10 +29,6 @@
import feign.Target;
import feign.hc5.ApacheHttp5Client;
import feign.http2client.Http2Client;
-import feign.okhttp.OkHttpClient;
-import jakarta.annotation.PreDestroy;
-import okhttp3.ConnectionPool;
-import okhttp3.Protocol;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -231,121 +214,6 @@ public String resolveCircuitBreakerName(String feignClientName, Target> target
}
- // the following configuration is for alternate feign clients if
- // SC loadbalancer is not on the class path.
- // see corresponding configurations in FeignLoadBalancerAutoConfiguration
- // for load-balanced clients.
- @Configuration(proxyBeanMethods = false)
- @ConditionalOnClass(OkHttpClient.class)
- @ConditionalOnMissingBean(okhttp3.OkHttpClient.class)
- @ConditionalOnProperty("spring.cloud.openfeign.okhttp.enabled")
- protected static class OkHttpFeignConfiguration {
-
- private okhttp3.OkHttpClient okHttpClient;
-
- @Bean
- @ConditionalOnMissingBean
- public okhttp3.OkHttpClient.Builder okHttpClientBuilder() {
- return new okhttp3.OkHttpClient.Builder();
- }
-
- @Bean
- @ConditionalOnMissingBean(ConnectionPool.class)
- public ConnectionPool httpClientConnectionPool(FeignHttpClientProperties httpClientProperties) {
- int maxTotalConnections = httpClientProperties.getMaxConnections();
- long timeToLive = httpClientProperties.getTimeToLive();
- TimeUnit ttlUnit = httpClientProperties.getTimeToLiveUnit();
- return new ConnectionPool(maxTotalConnections, timeToLive, ttlUnit);
- }
-
- @Bean
- public okhttp3.OkHttpClient okHttpClient(okhttp3.OkHttpClient.Builder builder, ConnectionPool connectionPool,
- FeignHttpClientProperties httpClientProperties) {
- boolean followRedirects = httpClientProperties.isFollowRedirects();
- int connectTimeout = httpClientProperties.getConnectionTimeout();
- boolean disableSslValidation = httpClientProperties.isDisableSslValidation();
- Duration readTimeout = httpClientProperties.getOkHttp().getReadTimeout();
- List protocols = httpClientProperties.getOkHttp()
- .getProtocols()
- .stream()
- .map(Protocol::valueOf)
- .collect(Collectors.toList());
- if (disableSslValidation) {
- disableSsl(builder);
- }
- this.okHttpClient = builder.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
- .followRedirects(followRedirects)
- .readTimeout(readTimeout)
- .connectionPool(connectionPool)
- .protocols(protocols)
- .build();
- return this.okHttpClient;
- }
-
- private void disableSsl(okhttp3.OkHttpClient.Builder builder) {
- try {
- X509TrustManager disabledTrustManager = new DisableValidationTrustManager();
- TrustManager[] trustManagers = new TrustManager[1];
- trustManagers[0] = disabledTrustManager;
- SSLContext sslContext = SSLContext.getInstance("SSL");
- sslContext.init(null, trustManagers, new java.security.SecureRandom());
- SSLSocketFactory disabledSSLSocketFactory = sslContext.getSocketFactory();
- builder.sslSocketFactory(disabledSSLSocketFactory, disabledTrustManager);
- builder.hostnameVerifier(new TrustAllHostnames());
- }
- catch (NoSuchAlgorithmException | KeyManagementException e) {
- LOG.warn("Error setting SSLSocketFactory in OKHttpClient", e);
- }
- }
-
- @PreDestroy
- public void destroy() {
- if (this.okHttpClient != null) {
- this.okHttpClient.dispatcher().executorService().shutdown();
- this.okHttpClient.connectionPool().evictAll();
- }
- }
-
- @Bean
- @ConditionalOnMissingBean(Client.class)
- public Client feignClient(okhttp3.OkHttpClient client) {
- return new OkHttpClient(client);
- }
-
- /**
- * A {@link X509TrustManager} that does not validate SSL certificates.
- */
- class DisableValidationTrustManager implements X509TrustManager {
-
- @Override
- public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {
- }
-
- @Override
- public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {
- }
-
- @Override
- public X509Certificate[] getAcceptedIssuers() {
- return new X509Certificate[0];
- }
-
- }
-
- /**
- * A {@link HostnameVerifier} that does not validate any hostnames.
- */
- class TrustAllHostnames implements HostnameVerifier {
-
- @Override
- public boolean verify(String s, SSLSession sslSession) {
- return true;
- }
-
- }
-
- }
-
// the following configuration is for alternate feign clients if
// SC loadbalancer is not on the class path.
// see corresponding configurations in FeignLoadBalancerAutoConfiguration
diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java
index 6dd2d9862..d42b4902d 100644
--- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java
+++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignAcceptGzipEncodingAutoConfiguration.java
@@ -26,7 +26,6 @@
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
/**
@@ -41,9 +40,6 @@
@ConditionalOnClass(Feign.class)
@ConditionalOnBean(Client.class)
@ConditionalOnProperty("spring.cloud.openfeign.compression.response.enabled")
-// The OK HTTP client uses "transparent" compression.
-// If the accept-encoding header is present, it disables transparent compression.
-@Conditional(OkHttpFeignClientBeanMissingCondition.class)
@AutoConfigureAfter(FeignAutoConfiguration.class)
public class FeignAcceptGzipEncodingAutoConfiguration {
diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignContentGzipEncodingAutoConfiguration.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignContentGzipEncodingAutoConfiguration.java
index 060cfc005..9b7f16f8a 100644
--- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignContentGzipEncodingAutoConfiguration.java
+++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/FeignContentGzipEncodingAutoConfiguration.java
@@ -24,7 +24,6 @@
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
/**
@@ -37,9 +36,6 @@
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(FeignClientEncodingProperties.class)
@ConditionalOnClass(Feign.class)
-// The OK HTTP client uses "transparent" compression.
-// If the content-encoding header is present, it disables transparent compression.
-@Conditional(OkHttpFeignClientBeanMissingCondition.class)
@ConditionalOnProperty("spring.cloud.openfeign.compression.request.enabled")
@AutoConfigureAfter(FeignAutoConfiguration.class)
public class FeignContentGzipEncodingAutoConfiguration {
diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/OkHttpFeignClientBeanMissingCondition.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/OkHttpFeignClientBeanMissingCondition.java
deleted file mode 100644
index e510b4689..000000000
--- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/encoding/OkHttpFeignClientBeanMissingCondition.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2013-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.openfeign.encoding;
-
-import feign.Client;
-import feign.okhttp.OkHttpClient;
-
-import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Condition;
-
-/**
- * A {@link Condition} that verifies whether the conditions for creating Feign
- * {@link Client} beans that either are of type {@link OkHttpClient} or have a delegate of
- * type {@link OkHttpClient} are not met.
- *
- * @author Olga Maciaszek-Sharma
- * @since 4.0.2
- */
-public class OkHttpFeignClientBeanMissingCondition extends AnyNestedCondition {
-
- public OkHttpFeignClientBeanMissingCondition() {
- super(ConfigurationPhase.REGISTER_BEAN);
- }
-
- @ConditionalOnMissingClass("feign.okhttp.OkHttpClient")
- static class FeignOkHttpClientPresent {
-
- }
-
- @ConditionalOnProperty(value = "spring.cloud.openfeign.okhttp.enabled", havingValue = "false")
- static class FeignOkHttpClientEnabled {
-
- }
-
-}
diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfiguration.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfiguration.java
index 7e0c52357..e91d8686e 100644
--- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfiguration.java
+++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfiguration.java
@@ -53,8 +53,8 @@
// Order is important here, last should be the default, first should be optional
// see
// https://github.com/spring-cloud/spring-cloud-netflix/issues/2086#issuecomment-316281653
-@Import({ OkHttpFeignLoadBalancerConfiguration.class, HttpClient5FeignLoadBalancerConfiguration.class,
- Http2ClientFeignLoadBalancerConfiguration.class, DefaultFeignLoadBalancerConfiguration.class })
+@Import({ HttpClient5FeignLoadBalancerConfiguration.class, Http2ClientFeignLoadBalancerConfiguration.class,
+ DefaultFeignLoadBalancerConfiguration.class })
public class FeignLoadBalancerAutoConfiguration {
@Bean
diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/OkHttpFeignLoadBalancerConfiguration.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/OkHttpFeignLoadBalancerConfiguration.java
deleted file mode 100644
index 87615a10b..000000000
--- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/OkHttpFeignLoadBalancerConfiguration.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2013-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.openfeign.loadbalancer;
-
-import java.util.List;
-
-import feign.Client;
-import feign.okhttp.OkHttpClient;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.cloud.client.loadbalancer.LoadBalancedRetryFactory;
-import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
-import org.springframework.cloud.client.loadbalancer.LoadBalancerClientsProperties;
-import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Conditional;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Configuration instantiating a {@link LoadBalancerClient}-based {@link Client} object
- * that uses {@link OkHttpClient} under the hood.
- *
- * @author Olga Maciaszek-Sharma
- * @author changjin wei(魏昌进)
- * @since 2.2.0
- */
-@Configuration(proxyBeanMethods = false)
-@ConditionalOnClass(OkHttpClient.class)
-@ConditionalOnProperty("spring.cloud.openfeign.okhttp.enabled")
-@ConditionalOnBean({ LoadBalancerClient.class, LoadBalancerClientFactory.class })
-@EnableConfigurationProperties(LoadBalancerClientsProperties.class)
-class OkHttpFeignLoadBalancerConfiguration {
-
- @Bean
- @ConditionalOnMissingBean
- @Conditional(OnRetryNotEnabledCondition.class)
- public Client feignClient(okhttp3.OkHttpClient okHttpClient, LoadBalancerClient loadBalancerClient,
- LoadBalancerClientFactory loadBalancerClientFactory,
- List transformers) {
- OkHttpClient delegate = new OkHttpClient(okHttpClient);
- return new FeignBlockingLoadBalancerClient(delegate, loadBalancerClient, loadBalancerClientFactory,
- transformers);
- }
-
- @Bean
- @ConditionalOnMissingBean
- @ConditionalOnClass(name = "org.springframework.retry.support.RetryTemplate")
- @ConditionalOnBean(LoadBalancedRetryFactory.class)
- @ConditionalOnProperty(value = "spring.cloud.loadbalancer.retry.enabled", havingValue = "true",
- matchIfMissing = true)
- public Client feignRetryClient(LoadBalancerClient loadBalancerClient, okhttp3.OkHttpClient okHttpClient,
- LoadBalancedRetryFactory loadBalancedRetryFactory, LoadBalancerClientFactory loadBalancerClientFactory,
- List transformers) {
- OkHttpClient delegate = new OkHttpClient(okHttpClient);
- return new RetryableFeignBlockingLoadBalancerClient(delegate, loadBalancerClient, loadBalancedRetryFactory,
- loadBalancerClientFactory, transformers);
- }
-
-}
diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/FeignHttpClientProperties.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/FeignHttpClientProperties.java
index bcdeefda1..049a8cae8 100644
--- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/FeignHttpClientProperties.java
+++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/support/FeignHttpClientProperties.java
@@ -17,13 +17,9 @@
package org.springframework.cloud.openfeign.support;
import java.net.http.HttpClient;
-import java.time.Duration;
-import java.util.List;
import java.util.concurrent.TimeUnit;
import feign.http2client.Http2Client;
-import feign.okhttp.OkHttpClient;
-import okhttp3.Protocol;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -97,11 +93,6 @@ public class FeignHttpClientProperties {
*/
private Hc5Properties hc5 = new Hc5Properties();
- /**
- * Additional {@link OkHttpClient}-specific properties.
- */
- private OkHttp okHttp = new OkHttp();
-
/**
* Additional {@link Http2Client}-specific properties.
*/
@@ -179,14 +170,6 @@ public void setHc5(Hc5Properties hc5) {
this.hc5 = hc5;
}
- public OkHttp getOkHttp() {
- return okHttp;
- }
-
- public void setOkHttp(OkHttp okHttp) {
- this.okHttp = okHttp;
- }
-
public Http2Properties getHttp2() {
return http2;
}
@@ -343,40 +326,6 @@ public enum PoolReusePolicy {
}
- /**
- * {@link OkHttpClient}-specific properties.
- */
- public static class OkHttp {
-
- /**
- * {@link OkHttpClient} read timeout; defaults to 60 seconds.
- */
- private Duration readTimeout = Duration.ofSeconds(60);
-
- /**
- * Configure the protocols used by this client to communicate with remote servers.
- * Uses {@link String} values of {@link Protocol}.
- */
- private List protocols = List.of("HTTP_2", "HTTP_1_1");
-
- public Duration getReadTimeout() {
- return readTimeout;
- }
-
- public void setReadTimeout(Duration readTimeout) {
- this.readTimeout = readTimeout;
- }
-
- public List getProtocols() {
- return protocols;
- }
-
- public void setProtocols(List protocols) {
- this.protocols = protocols;
- }
-
- }
-
/**
* {@link Http2Client}-specific properties.
*/
diff --git a/spring-cloud-openfeign-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-openfeign-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index fc7ddc437..5a91110db 100644
--- a/spring-cloud-openfeign-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/spring-cloud-openfeign-core/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -32,12 +32,6 @@
"description": "Enables the use of the Apache HTTP Client 5 by Feign.",
"defaultValue": "true"
},
- {
- "name": "spring.cloud.openfeign.okhttp.enabled",
- "type": "java.lang.Boolean",
- "description": "Enables the use of the OK HTTP Client by Feign.",
- "defaultValue": "false"
- },
{
"name": "spring.cloud.openfeign.http2client.enabled",
"type": "java.lang.Boolean",
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlTests.java
index a5a0ed086..9da357245 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlTests.java
@@ -49,7 +49,7 @@
*/
@SpringBootTest(classes = FeignHttpClientUrlTests.TestConfig.class, webEnvironment = DEFINED_PORT,
value = { "spring.application.name=feignclienturltest", "spring.cloud.openfeign.circuitbreaker.enabled=false",
- "spring.cloud.openfeign.okhttp.enabled=false", "spring.cloud.loadbalancer.retry.enabled=false" })
+ "spring.cloud.loadbalancer.retry.enabled=false" })
@DirtiesContext
class FeignHttpClientUrlTests {
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlWithRetryableLoadBalancerTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlWithRetryableLoadBalancerTests.java
index e98cf0bd9..17a9ca8df 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlWithRetryableLoadBalancerTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignHttpClientUrlWithRetryableLoadBalancerTests.java
@@ -49,8 +49,7 @@
*/
@SpringBootTest(classes = FeignHttpClientUrlWithRetryableLoadBalancerTests.TestConfig.class,
webEnvironment = DEFINED_PORT,
- value = { "spring.application.name=feignclienturlwithretryableloadbalancertest",
- "spring.cloud.openfeign.hystrix.enabled=false", "spring.cloud.openfeign.okhttp.enabled=false" })
+ value = { "spring.application.name=feignclienturlwithretryableloadbalancertest" })
@DirtiesContext
class FeignHttpClientUrlWithRetryableLoadBalancerTests {
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignOkHttpConfigurationTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignOkHttpConfigurationTests.java
deleted file mode 100644
index 970f8ef87..000000000
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignOkHttpConfigurationTests.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright 2013-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.openfeign;
-
-import java.lang.reflect.Field;
-
-import javax.net.ssl.HostnameVerifier;
-
-import okhttp3.OkHttpClient;
-import okhttp3.Protocol;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import org.springframework.boot.WebApplicationType;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.util.ReflectionUtils;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author Ryan Baxter
- * @author changjin wei(魏昌进)
- */
-class FeignOkHttpConfigurationTests {
-
- private ConfigurableApplicationContext context;
-
- @BeforeEach
- void setUp() {
- this.context = new SpringApplicationBuilder()
- .properties("debug=true", "spring.cloud.openfeign.httpclient.disableSslValidation=true",
- "spring.cloud.openfeign.okhttp.enabled=true", "spring.cloud.openfeign.httpclient.hc5.enabled=false",
- "spring.cloud.openfeign.httpclient.okhttp.read-timeout=9s",
- "spring.cloud.openfeign.httpclient.okhttp.protocols=H2_PRIOR_KNOWLEDGE")
- .web(WebApplicationType.NONE)
- .sources(FeignAutoConfiguration.class)
- .run();
- }
-
- @AfterEach
- void tearDown() {
- if (context != null) {
- context.close();
- }
- }
-
- @Test
- void disableSslTest() {
- OkHttpClient httpClient = context.getBean(OkHttpClient.class);
- HostnameVerifier hostnameVerifier = (HostnameVerifier) this.getField(httpClient, "hostnameVerifier");
- assertThat(hostnameVerifier instanceof FeignAutoConfiguration.OkHttpFeignConfiguration.TrustAllHostnames)
- .isTrue();
- }
-
- @Test
- void shouldConfigureReadTimeout() {
- OkHttpClient httpClient = context.getBean(OkHttpClient.class);
-
- assertThat(httpClient.readTimeoutMillis()).isEqualTo(9000);
- }
-
- @Test
- void shouldResolveProtocolFromProperties() {
- OkHttpClient httpClient = context.getBean(OkHttpClient.class);
-
- assertThat(httpClient.protocols()).containsExactly(Protocol.H2_PRIOR_KNOWLEDGE);
- }
-
- protected Object getField(Object target, String name) {
- Field field = ReflectionUtils.findField(target.getClass(), name);
- ReflectionUtils.makeAccessible(field);
- return ReflectionUtils.getField(field, target);
- }
-
-}
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/BeansFeignClientTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/BeansFeignClientTests.java
index 569bd9041..84c00de12 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/BeansFeignClientTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/beans/BeansFeignClientTests.java
@@ -51,8 +51,7 @@
* @author Aaron Whiteside
*/
@SpringBootTest(classes = BeansFeignClientTests.Application.class, webEnvironment = WebEnvironment.RANDOM_PORT,
- value = { "spring.application.name=feignclienttest", "spring.cloud.openfeign.httpclient.hc5.enabled=false",
- "spring.cloud.openfeign.okhttp.enabled=false" })
+ value = { "spring.application.name=feignclienttest", "spring.cloud.openfeign.httpclient.hc5.enabled=false" })
@DirtiesContext
public class BeansFeignClientTests {
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/encoding/FeignCompressionTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/encoding/FeignCompressionTests.java
index 3956dd5a4..7cafe37fd 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/encoding/FeignCompressionTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/encoding/FeignCompressionTests.java
@@ -19,15 +19,12 @@
import java.util.Map;
import feign.RequestInterceptor;
-import okhttp3.OkHttpClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.FeignClientFactory;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
import static org.assertj.core.api.Assertions.assertThat;
@@ -42,8 +39,7 @@ class FeignCompressionTests {
void shouldAddCompressionInterceptors() {
new ApplicationContextRunner()
.withPropertyValues("spring.cloud.openfeign.compression.response.enabled=true",
- "spring.cloud.openfeign.compression.request.enabled=true",
- "spring.cloud.openfeign.okhttp.enabled=false")
+ "spring.cloud.openfeign.compression.request.enabled=true")
.withConfiguration(AutoConfigurations.of(FeignAutoConfiguration.class,
FeignContentGzipEncodingAutoConfiguration.class, FeignAcceptGzipEncodingAutoConfiguration.class))
.run(context -> {
@@ -58,30 +54,4 @@ void shouldAddCompressionInterceptors() {
});
}
- @Test
- void shouldNotAddInterceptorsIfFeignOkHttpClientPresent() {
- new ApplicationContextRunner()
- .withPropertyValues("spring.cloud.openfeign.compression.response.enabled=true",
- "spring.cloud.openfeign.compression.request.enabled=true",
- "spring.cloud.openfeign.okhttp.enabled=true", "spring.cloud.openfeign.httpclient.hc5.enabled")
- .withConfiguration(AutoConfigurations.of(FeignAutoConfiguration.class,
- FeignContentGzipEncodingAutoConfiguration.class, FeignAcceptGzipEncodingAutoConfiguration.class))
- .run(context -> {
- FeignClientFactory feignClientFactory = context.getBean(FeignClientFactory.class);
- Map interceptors = feignClientFactory.getInstances("foo",
- RequestInterceptor.class);
- assertThat(interceptors).isEmpty();
- });
- }
-
- @Configuration
- static class OkHttpClientConfiguration {
-
- @Bean
- OkHttpClient okHttpClient() {
- return new OkHttpClient();
- }
-
- }
-
}
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfigurationTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfigurationTests.java
index 16922f04f..ba643019c 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfigurationTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignLoadBalancerAutoConfigurationTests.java
@@ -22,7 +22,6 @@
import feign.Client;
import feign.hc5.ApacheHttp5Client;
import feign.http2client.Http2Client;
-import feign.okhttp.OkHttpClient;
import org.junit.jupiter.api.Test;
import org.springframework.boot.WebApplicationType;
@@ -51,23 +50,6 @@ void shouldInstantiateDefaultFeignBlockingLoadBalancerClientWhenHttpClientDisabl
assertLoadBalanced(context, Client.Default.class);
}
- @Test
- void shouldInstantiateOkHttpFeignClientWhenEnabled() {
- ConfigurableApplicationContext context = initContext("spring.cloud.openfeign.httpclient.hc5.enabled=false",
- "spring.cloud.openfeign.okhttp.enabled=true", "spring.cloud.loadbalancer.retry.enabled=false",
- "spring.cloud.openfeign.httpclient.okhttp.read-timeout=9s");
- assertThatOneBeanPresent(context, BlockingLoadBalancerClient.class);
- Map beans = context
- .getBeansOfType(FeignBlockingLoadBalancerClient.class);
- assertThat(beans).as("Missing bean of type %s", OkHttpClient.class).hasSize(1);
- Client client = beans.get("feignClient").getDelegate();
- assertThat(client).isInstanceOf(OkHttpClient.class);
- OkHttpClient okHttpClient = (OkHttpClient) client;
- okhttp3.OkHttpClient httpClient = (okhttp3.OkHttpClient) getField(okHttpClient, "delegate");
- assertThat(httpClient.readTimeoutMillis()).isEqualTo(9000);
-
- }
-
@Test
void shouldInstantiateHttp2ClientFeignClientWhenEnabled() {
ConfigurableApplicationContext context = initContext("spring.cloud.openfeign.httpclient.hc5.enabled=false",
@@ -85,8 +67,7 @@ void shouldInstantiateHttp2ClientFeignClientWhenEnabled() {
@Test
void shouldInstantiateHttpFeignClient5WhenAvailableAndOkHttpDisabled() {
- ConfigurableApplicationContext context = initContext("spring.cloud.openfeign.okhttp.enabled=false",
- "spring.cloud.loadbalancer.retry.enabled=false");
+ ConfigurableApplicationContext context = initContext("spring.cloud.loadbalancer.retry.enabled=false");
assertThatOneBeanPresent(context, BlockingLoadBalancerClient.class);
assertLoadBalanced(context, ApacheHttp5Client.class);
}
@@ -106,14 +87,6 @@ void shouldInstantiateRetryableDefaultFeignBlockingLoadBalancerClientWhenHttpCli
assertLoadBalancedWithRetries(context, Client.Default.class);
}
- @Test
- void shouldInstantiateRetryableOkHttpFeignClientWhenEnabled() {
- ConfigurableApplicationContext context = initContext("spring.cloud.openfeign.httpclient.hc5.enabled=false",
- "spring.cloud.openfeign.okhttp.enabled=true");
- assertThatOneBeanPresent(context, BlockingLoadBalancerClient.class);
- assertLoadBalancedWithRetries(context, OkHttpClient.class);
- }
-
@Test
void shouldInstantiateRetryableHttp2ClientFeignClientWhenEnabled() {
ConfigurableApplicationContext context = initContext("spring.cloud.openfeign.httpclient.hc5.enabled=false",
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/protocol/FeignOkHttpProtocolsTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/protocol/FeignOkHttpProtocolsTests.java
deleted file mode 100644
index 748ecee55..000000000
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/protocol/FeignOkHttpProtocolsTests.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2013-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.openfeign.protocol;
-
-import java.lang.reflect.Field;
-
-import feign.Client;
-import okhttp3.Protocol;
-import org.junit.jupiter.api.Test;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;
-import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
-import org.springframework.cloud.openfeign.test.NoSecurityConfiguration;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.web.bind.annotation.RestController;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author changjin wei(魏昌进)
- */
-@SpringBootTest(classes = FeignOkHttpProtocolsTests.Application.class, webEnvironment = WebEnvironment.RANDOM_PORT,
- value = { "spring.application.name=feignclienttest", "spring.cloud.openfeign.circuitbreaker.enabled=false",
- "spring.cloud.openfeign.httpclient.hc5.enabled=false", "spring.cloud.openfeign.okhttp.enabled=true",
- "spring.cloud.httpclientfactories.ok.enabled=true", "spring.cloud.loadbalancer.retry.enabled=false",
- "server.http2.enabled=true", "spring.cloud.openfeign.httpclient.okhttp.protocols=H2_PRIOR_KNOWLEDGE" })
-@DirtiesContext
-class FeignOkHttpProtocolsTests {
-
- @Autowired
- private Client feignClient;
-
- @Test
- void shouldCreateCorrectFeignClientBeanWithProtocolFromProperties() {
- assertThat(feignClient).isInstanceOf(FeignBlockingLoadBalancerClient.class);
- FeignBlockingLoadBalancerClient client = (FeignBlockingLoadBalancerClient) feignClient;
- Client delegate = client.getDelegate();
- assertThat(delegate).isInstanceOf(feign.okhttp.OkHttpClient.class);
- okhttp3.OkHttpClient OkHttpClient = (okhttp3.OkHttpClient) getField(delegate, "delegate");
- assertThat(OkHttpClient.protocols()).containsExactly(Protocol.H2_PRIOR_KNOWLEDGE);
- }
-
- protected Object getField(Object target, String name) {
- Field field = ReflectionUtils.findField(target.getClass(), name);
- ReflectionUtils.makeAccessible(field);
- return ReflectionUtils.getField(field, target);
- }
-
- @Configuration(proxyBeanMethods = false)
- @EnableAutoConfiguration
- @RestController
- @LoadBalancerClients
- @Import(NoSecurityConfiguration.class)
- protected static class Application {
-
- }
-
-}
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/test/OkHttpClientConfigurationTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/test/OkHttpClientConfigurationTests.java
deleted file mode 100644
index 51cad347c..000000000
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/test/OkHttpClientConfigurationTests.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright 2013-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.openfeign.test;
-
-import feign.Client;
-import okhttp3.OkHttpClient;
-import org.junit.jupiter.api.Test;
-import org.mockito.MockingDetails;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.SpringBootConfiguration;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.util.ReflectionTestUtils;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockingDetails;
-
-/**
- * @author Ryan Baxter
- * @author Olga Maciaszek-Sharma
- */
-@SpringBootTest(properties = { "spring.cloud.openfeign.okhttp.enabled: true",
- "spring.cloud.httpclientfactories.ok.enabled: true", "spring.cloud.openfeign.okhttp.enabled: true",
- "spring.cloud.openfeign.httpclient.hc5.enabled: false", "spring.cloud.loadbalancer.retry.enabled=false" })
-@DirtiesContext
-class OkHttpClientConfigurationTests {
-
- @Autowired
- FeignBlockingLoadBalancerClient feignClient;
-
- @Test
- void testHttpClientWithFeign() {
- Client delegate = feignClient.getDelegate();
- assertThat(delegate instanceof feign.okhttp.OkHttpClient).isTrue();
- feign.okhttp.OkHttpClient okHttpClient = (feign.okhttp.OkHttpClient) delegate;
- OkHttpClient httpClient = getField(okHttpClient, "delegate");
- MockingDetails httpClientDetails = mockingDetails(httpClient);
- assertThat(httpClientDetails.isMock()).isTrue();
- }
-
- @SuppressWarnings("unchecked")
- protected T getField(Object target, String name) {
- Object value = ReflectionTestUtils.getField(target, target.getClass(), name);
- return (T) value;
- }
-
- @FeignClient(name = "foo")
- interface FooClient {
-
- }
-
- @SpringBootConfiguration
- @EnableAutoConfiguration
- static class TestConfig {
-
- @Bean
- public OkHttpClient client() {
- return mock(OkHttpClient.class);
- }
-
- }
-
-}
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignClientNotPrimaryTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignClientNotPrimaryTests.java
index 2f3c6b417..905252efc 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignClientNotPrimaryTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignClientNotPrimaryTests.java
@@ -47,7 +47,7 @@
*/
@SpringBootTest(classes = FeignClientNotPrimaryTests.Application.class, webEnvironment = RANDOM_PORT,
value = { "spring.application.name=feignclientnotprimarytest",
- "spring.cloud.openfeign.httpclient.hc5.enabled=false", "spring.cloud.openfeign.okhttp.enabled=false" })
+ "spring.cloud.openfeign.httpclient.hc5.enabled=false" })
@DirtiesContext
class FeignClientNotPrimaryTests {
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignHttpClientTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignHttpClientTests.java
index 812fe7bc6..42eacc3aa 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignHttpClientTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignHttpClientTests.java
@@ -57,7 +57,7 @@
*/
@SpringBootTest(classes = FeignHttpClientTests.Application.class, webEnvironment = WebEnvironment.RANDOM_PORT,
value = { "spring.application.name=feignclienttest", "spring.cloud.openfeign.circuitbreaker.enabled=false",
- "spring.cloud.openfeign.okhttp.enabled=false", "spring.cloud.loadbalancer.retry.enabled=false" })
+ "spring.cloud.loadbalancer.retry.enabled=false" })
@DirtiesContext
class FeignHttpClientTests {
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignOkHttpTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignOkHttpTests.java
deleted file mode 100644
index 83ace096f..000000000
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/FeignOkHttpTests.java
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Copyright 2013-present the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.openfeign.valid;
-
-import java.util.Objects;
-
-import feign.Client;
-import org.junit.jupiter.api.Test;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
-import org.springframework.boot.web.server.test.LocalServerPort;
-import org.springframework.cloud.client.DefaultServiceInstance;
-import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
-import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients;
-import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
-import org.springframework.cloud.loadbalancer.support.ServiceInstanceListSuppliers;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient;
-import org.springframework.cloud.openfeign.test.NoSecurityConfiguration;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.http.ResponseEntity;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PatchMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RestController;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * @author Spencer Gibb
- * @author Olga Maciaszek-Sharma
- */
-@SpringBootTest(classes = FeignOkHttpTests.Application.class, webEnvironment = WebEnvironment.RANDOM_PORT,
- value = { "spring.application.name=feignclienttest", "spring.cloud.openfeign.circuitbreaker.enabled=false",
- "spring.cloud.openfeign.httpclient.hc5.enabled=false", "spring.cloud.openfeign.okhttp.enabled=true",
- "spring.cloud.httpclientfactories.ok.enabled=true", "spring.cloud.loadbalancer.retry.enabled=false" })
-@DirtiesContext
-class FeignOkHttpTests {
-
- @Autowired
- private TestClient testClient;
-
- @Autowired
- private Client feignClient;
-
- @Autowired
- private UserClient userClient;
-
- @Test
- void testSimpleType() {
- Hello hello = testClient.getHello();
- assertThat(hello).as("hello was null").isNotNull();
- assertThat(hello).as("first hello didn't match").isEqualTo(new Hello("hello world 1"));
- }
-
- @Test
- void testPatch() {
- ResponseEntity response = testClient.patchHello(new Hello("foo"));
- assertThat(response).isNotNull();
- String header = response.getHeaders().getFirst("x-hello");
- assertThat(header).isEqualTo("hello world patch");
- }
-
- @Test
- void testFeignClientType() {
- assertThat(feignClient).isInstanceOf(FeignBlockingLoadBalancerClient.class);
- FeignBlockingLoadBalancerClient client = (FeignBlockingLoadBalancerClient) feignClient;
- Client delegate = client.getDelegate();
- assertThat(delegate).isInstanceOf(feign.okhttp.OkHttpClient.class);
- }
-
- @Test
- void testFeignInheritanceSupport() {
- assertThat(userClient).as("UserClient was null").isNotNull();
- final User user = userClient.getUser(1);
- assertThat(user).as("Returned user was null").isNotNull();
- assertThat(new User("John Smith")).as("Users were different").isEqualTo(user);
- }
-
- @FeignClient("localapp")
- protected interface TestClient extends BaseTestClient {
-
- }
-
- protected interface BaseTestClient {
-
- @GetMapping("/hello")
- Hello getHello();
-
- @PatchMapping(value = "/hellop", consumes = "application/json")
- ResponseEntity patchHello(Hello hello);
-
- }
-
- protected interface UserService {
-
- @GetMapping("/users/{id}")
- User getUser(@PathVariable("id") long id);
-
- }
-
- @FeignClient("localapp1")
- protected interface UserClient extends UserService {
-
- }
-
- @Configuration(proxyBeanMethods = false)
- @EnableAutoConfiguration
- @RestController
- @EnableFeignClients(clients = { TestClient.class, UserClient.class })
- @LoadBalancerClients({
- @LoadBalancerClient(name = "localapp", configuration = FeignHttpClientTests.LocalClientConfiguration.class),
- @LoadBalancerClient(name = "localapp1",
- configuration = FeignHttpClientTests.LocalClientConfiguration.class) })
- @Import(NoSecurityConfiguration.class)
- protected static class Application implements UserService {
-
- @GetMapping("/hello")
- public Hello getHello() {
- return new Hello("hello world 1");
- }
-
- @PatchMapping("/hellop")
- public ResponseEntity patchHello(@RequestBody Hello hello,
- @RequestHeader("Content-Length") int contentLength) {
- if (contentLength <= 0) {
- throw new IllegalArgumentException("Invalid Content-Length " + contentLength);
- }
- if (!hello.getMessage().equals("foo")) {
- throw new IllegalArgumentException("Invalid Hello: " + hello.getMessage());
- }
- return ResponseEntity.ok().header("X-Hello", "hello world patch").build();
- }
-
- @Override
- public User getUser(@PathVariable("id") long id) {
- return new User("John Smith");
- }
-
- }
-
- public static class Hello {
-
- private String message;
-
- Hello() {
- }
-
- Hello(String message) {
- this.message = message;
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- this.message = message;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- Hello that = (Hello) o;
- return Objects.equals(message, that.message);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(message);
- }
-
- }
-
- public static class User {
-
- private String name;
-
- User() {
- }
-
- User(String name) {
- this.name = name;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (o == null || getClass() != o.getClass()) {
- return false;
- }
- User that = (User) o;
- return Objects.equals(name, that.name);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(name);
- }
-
- }
-
- // Load balancer with fixed server list for "local" pointing to localhost
- @Configuration(proxyBeanMethods = false)
- static class LocalClientConfiguration {
-
- @LocalServerPort
- private int port = 0;
-
- @Bean
- public ServiceInstanceListSupplier staticServiceInstanceListSupplier() {
- return ServiceInstanceListSuppliers.from("local",
- new DefaultServiceInstance("local-1", "local", "localhost", port, false));
- }
-
- }
-
-}
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/IterableParameterTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/IterableParameterTests.java
index 33b81bb83..b84f5e5d0 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/IterableParameterTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/IterableParameterTests.java
@@ -47,7 +47,7 @@
*/
@SpringBootTest(classes = IterableParameterTests.Application.class, webEnvironment = WebEnvironment.RANDOM_PORT,
value = { "spring.application.name=iterableparametertest",
- "spring.cloud.openfeign.httpclient.hc5.enabled=false", "spring.cloud.openfeign.okhttp.enabled=false",
+ "spring.cloud.openfeign.httpclient.hc5.enabled=false",
"spring.cloud.openfeign.circuitbreaker.enabled=false" })
@DirtiesContext
class IterableParameterTests {
diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/ValidFeignClientTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/ValidFeignClientTests.java
index eb05dc38a..b3b21b8fb 100644
--- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/ValidFeignClientTests.java
+++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/valid/ValidFeignClientTests.java
@@ -97,8 +97,7 @@
*/
@SpringBootTest(classes = ValidFeignClientTests.Application.class, webEnvironment = WebEnvironment.RANDOM_PORT,
value = { "spring.application.name=feignclienttest", "spring.cloud.openfeign.httpclient.hc5.enabled=false",
- "spring.cloud.openfeign.okhttp.enabled=false", "spring.cloud.openfeign.circuitbreaker.enabled=true",
- "spring.cloud.loadbalancer.retry.enabled=false" })
+ "spring.cloud.openfeign.circuitbreaker.enabled=true", "spring.cloud.loadbalancer.retry.enabled=false" })
@DirtiesContext
class ValidFeignClientTests {