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 index b3a7c4c8..636fbb78 100644 --- 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 @@ -134,7 +134,7 @@ public class FeignLoadBalancer extends Map> headers = new LinkedHashMap<>( request.headers()); return Request.create(request.httpMethod(), getUri().toASCIIString(), headers, - request.requestBody().asBytes(), request.charset()); + request.body(), request.charset(), request.requestTemplate()); } Request toRequest() { 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 index 72293e50..ed381f44 100644 --- 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 @@ -133,7 +133,7 @@ public class RetryableFeignLoadBalancerTests { RibbonLoadBalancedRetryFactory loadBalancedRetryFactory = new RibbonLoadBalancedRetryFactory( clientFactory); Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); @@ -151,7 +151,7 @@ public class RetryableFeignLoadBalancerTests { @Test public void executeNeverRetry() throws Exception { Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); @@ -215,7 +215,7 @@ public class RetryableFeignLoadBalancerTests { } }; Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); @@ -260,7 +260,7 @@ public class RetryableFeignLoadBalancerTests { } }; Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); @@ -310,7 +310,7 @@ public class RetryableFeignLoadBalancerTests { } }; Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); @@ -339,7 +339,7 @@ public class RetryableFeignLoadBalancerTests { RibbonLoadBalancedRetryFactory loadBalancedRetryFactory = new RibbonLoadBalancedRetryFactory( clientFactory); Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); @@ -365,7 +365,7 @@ public class RetryableFeignLoadBalancerTests { RibbonLoadBalancedRetryFactory loadBalancedRetryFactory = new RibbonLoadBalancedRetryFactory( clientFactory); Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); @@ -446,7 +446,7 @@ public class RetryableFeignLoadBalancerTests { } }; Request feignRequest = Request.create(GET, "https://listener", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://listener")); @@ -498,7 +498,7 @@ public class RetryableFeignLoadBalancerTests { } }; Request feignRequest = Request.create(GET, "https://listener", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://listener")); @@ -535,7 +535,7 @@ public class RetryableFeignLoadBalancerTests { } }; Request feignRequest = Request.create(GET, "https://listener", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://listener")); @@ -580,7 +580,7 @@ public class RetryableFeignLoadBalancerTests { } }; Request feignRequest = Request.create(GET, "https://foo", new HashMap<>(), - new byte[] {}, UTF_8); + new byte[] {}, UTF_8, null); Client client = mock(Client.class); FeignLoadBalancer.RibbonRequest request = new FeignLoadBalancer.RibbonRequest( client, feignRequest, new URI("https://foo")); 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 index 686d1294..ebe49436 100644 --- 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 @@ -49,7 +49,7 @@ public class RibbonResponseStatusCodeExceptionTest { fooValues.add("bar"); headers.put("foo", fooValues); Request request = Request.create(GET, "https://service.com", new HashMap<>(), - new byte[] {}, Charset.defaultCharset()); + new byte[] {}, Charset.defaultCharset(), null); byte[] body = "foo".getBytes(); ByteArrayInputStream is = new ByteArrayInputStream(body); Response response = Response.builder().status(200).reason("Success") 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 83bdcb1a..90be4c83 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