diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java index af55f1c3..85ab8281 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java @@ -73,8 +73,8 @@ public class FeignBlockingLoadBalancerClient implements Client { String reconstructedUrl = loadBalancerClient.reconstructURI(instance, originalUri) .toString(); Request newRequest = Request.create(request.httpMethod(), reconstructedUrl, - request.headers(), request.requestBody().asBytes(), request.charset()); - + request.headers(), request.body(), request.charset(), + request.requestTemplate()); return delegate.execute(newRequest, options); } diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/ribbon/FeignLoadBalancer.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/ribbon/FeignLoadBalancer.java new file mode 100644 index 00000000..e69de29b diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientUsingPropertiesTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientUsingPropertiesTests.java index f2a5345b..9526a4ea 100644 --- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientUsingPropertiesTests.java +++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/FeignClientUsingPropertiesTests.java @@ -24,7 +24,6 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; -import feign.Request; import feign.RequestInterceptor; import feign.RequestTemplate; import feign.RetryableException; @@ -52,7 +51,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.fail; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; @@ -260,7 +258,7 @@ public class FeignClientUsingPropertiesTests { requestTemplate.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE); - requestTemplate.body(Request.Body.bodyTemplate(builder.toString(), UTF_8)); + requestTemplate.body(builder.toString()); } } diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClientTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClientTests.java index d64dcbe6..806b7584 100644 --- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClientTests.java +++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClientTests.java @@ -121,7 +121,7 @@ class FeignBlockingLoadBalancerClientTests { assertThat(actualRequest.headers()).hasSize(1); assertThat(actualRequest.headers()).containsEntry(HttpHeaders.CONTENT_TYPE, Collections.singletonList(MediaType.APPLICATION_JSON_VALUE)); - assertThat(actualRequest.requestBody().asString()).isEqualTo("hello"); + assertThat(new String(actualRequest.body())).isEqualTo("hello"); } private Request testRequest() { @@ -130,7 +130,7 @@ class FeignBlockingLoadBalancerClientTests { private Request testRequest(String host) { return Request.create(Request.HttpMethod.GET, "http://" + host + "/path", - testHeaders(), "hello".getBytes(), StandardCharsets.UTF_8); + testHeaders(), "hello".getBytes(), StandardCharsets.UTF_8, null); } private Map> testHeaders() { diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/ribbon/RetryableFeignLoadBalancerTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/ribbon/RetryableFeignLoadBalancerTests.java new file mode 100644 index 00000000..e69de29b diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/ribbon/RibbonResponseStatusCodeExceptionTest.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/ribbon/RibbonResponseStatusCodeExceptionTest.java new file mode 100644 index 00000000..e69de29b diff --git a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/support/SpringMvcContractTests.java b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/support/SpringMvcContractTests.java index 66f050b0..997a3e8f 100644 --- a/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/support/SpringMvcContractTests.java +++ b/spring-cloud-openfeign-core/src/test/java/org/springframework/cloud/openfeign/support/SpringMvcContractTests.java @@ -59,10 +59,8 @@ import org.springframework.web.multipart.MultipartFile; import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.ANY; import static com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility.NONE; -import static java.nio.charset.StandardCharsets.UTF_8; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assume.assumeTrue; -import static org.springframework.web.util.UriUtils.encode; /** * @author chadjaros @@ -249,7 +247,7 @@ public class SpringMvcContractTests { .parseAndValidateMetadata(method.getDeclaringClass(), method); assertThat(data.template().url()) - .isEqualTo("/advanced/test/{id}?amount=" + encode("{amount}", UTF_8)); + .isEqualTo("/advanced/test/{id}?amount=" + "{amount}"); assertThat(data.template().method()).isEqualTo("PUT"); assertThat(data.template().headers().get("Accept").iterator().next()) .isEqualTo(MediaType.APPLICATION_JSON_VALUE); @@ -273,7 +271,7 @@ public class SpringMvcContractTests { .parseAndValidateMetadata(method.getDeclaringClass(), method); assertThat(data.template().url()) - .isEqualTo("/advanced/test/{id}?amount=" + encode("{amount}", UTF_8)); + .isEqualTo("/advanced/test/{id}?amount=" + "{amount}"); assertThat(data.template().method()).isEqualTo("PUT"); assertThat(data.template().headers().get("Accept").iterator().next()) .isEqualTo(MediaType.APPLICATION_JSON_VALUE); @@ -298,7 +296,7 @@ public class SpringMvcContractTests { .parseAndValidateMetadata(method.getDeclaringClass(), method); assertThat(data.template().url()) - .isEqualTo("/advanced/test2?amount=" + encode("{amount}", UTF_8)); + .isEqualTo("/advanced/test2?amount=" + "{amount}"); assertThat(data.template().method()).isEqualTo("PUT"); assertThat(data.template().headers().get("Accept").iterator().next()) .isEqualTo(MediaType.APPLICATION_JSON_VALUE); @@ -385,7 +383,7 @@ public class SpringMvcContractTests { MethodMetadata data = this.contract .parseAndValidateMetadata(method.getDeclaringClass(), method); - assertThat(data.template().url()).isEqualTo("/test?id=" + encode("{id}", UTF_8)); + assertThat(data.template().url()).isEqualTo("/test?id=" + "{id}"); assertThat(data.template().method()).isEqualTo("GET"); assertThat(data.template().queries().get("id").toString()).isEqualTo("[{id}]"); assertThat(data.indexToExpander().get(0)).isNotNull(); @@ -398,7 +396,7 @@ public class SpringMvcContractTests { MethodMetadata data = this.contract .parseAndValidateMetadata(method.getDeclaringClass(), method); - assertThat(data.template().url()).isEqualTo("/test?id=" + encode("{id}", UTF_8)); + assertThat(data.template().url()).isEqualTo("/test?id=" + "{id}"); assertThat(data.template().method()).isEqualTo("GET"); assertThat(data.template().queries().get("id").toString()).isEqualTo("[{id}]"); assertThat(data.indexToExpander().get(0)).isNotNull(); @@ -453,8 +451,8 @@ public class SpringMvcContractTests { MethodMetadata data = this.contract .parseAndValidateMetadata(method.getDeclaringClass(), method); - assertThat(data.template().url()).isEqualTo( - "/advanced/testfallback/{id}?amount=" + encode("{amount}", UTF_8)); + assertThat(data.template().url()) + .isEqualTo("/advanced/testfallback/{id}?amount=" + "{amount}"); assertThat(data.template().method()).isEqualTo("PUT"); assertThat(data.template().headers().get("Accept").iterator().next()) .isEqualTo(MediaType.APPLICATION_JSON_VALUE); @@ -498,8 +496,7 @@ public class SpringMvcContractTests { MethodMetadata data = this.contract .parseAndValidateMetadata(method.getDeclaringClass(), method); - assertThat(data.template().url()) - .isEqualTo("/queryMap?aParam=" + encode("{aParam}", UTF_8)); + assertThat(data.template().url()).isEqualTo("/queryMap?aParam=" + "{aParam}"); assertThat(data.template().method()).isEqualTo("GET"); assertThat(data.queryMapIndex().intValue()).isEqualTo(0); Map> params = data.template().queries(); @@ -514,7 +511,7 @@ public class SpringMvcContractTests { .parseAndValidateMetadata(method.getDeclaringClass(), method); assertThat(data.template().url()) - .isEqualTo("/queryMapObject?aParam=" + encode("{aParam}", UTF_8)); + .isEqualTo("/queryMapObject?aParam=" + "{aParam}"); assertThat(data.template().method()).isEqualTo("GET"); assertThat(data.queryMapIndex().intValue()).isEqualTo(0); Map> params = data.template().queries(); diff --git a/spring-cloud-openfeign-dependencies/pom.xml b/spring-cloud-openfeign-dependencies/pom.xml index 672096d1..7932ad9d 100644 --- a/spring-cloud-openfeign-dependencies/pom.xml +++ b/spring-cloud-openfeign-dependencies/pom.xml @@ -15,7 +15,7 @@ spring-cloud-openfeign-dependencies Spring Cloud OpenFeign Dependencies - 10.7.0 + 10.7.4 3.8.0