From f29577330a088ce3d941b6744c56bb87c2f5f958 Mon Sep 17 00:00:00 2001 From: finnetrolle Date: Tue, 20 Aug 2019 00:08:39 +0300 Subject: [PATCH] #1028 Remove query template empty argument filtering to allow empty values --- .../main/java/feign/template/QueryTemplate.java | 1 - core/src/test/java/feign/FeignTest.java | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/feign/template/QueryTemplate.java b/core/src/main/java/feign/template/QueryTemplate.java index c67735272..7abf34cf8 100644 --- a/core/src/main/java/feign/template/QueryTemplate.java +++ b/core/src/main/java/feign/template/QueryTemplate.java @@ -72,7 +72,6 @@ public static QueryTemplate create(String name, /* remove all empty values from the array */ Collection remaining = StreamSupport.stream(values.spliterator(), false) - .filter(Util::isNotBlank) .collect(Collectors.toList()); StringBuilder template = new StringBuilder(); diff --git a/core/src/test/java/feign/FeignTest.java b/core/src/test/java/feign/FeignTest.java index 0a8b1ab02..ca988b2c9 100644 --- a/core/src/test/java/feign/FeignTest.java +++ b/core/src/test/java/feign/FeignTest.java @@ -53,6 +53,18 @@ public class FeignTest { @Rule public final MockWebServer server = new MockWebServer(); + @Test + public void emptyQueryArrayParameter() throws Exception { + server.enqueue(new MockResponse().setBody("foo")); + + TestInterface api = new TestInterfaceBuilder().target("http://localhost:" + server.getPort()); + + api.emptyArrayElement(Arrays.asList("first", "", "third")); + + assertThat(server.takeRequest()) + .hasPath("/test?people=first&people=&people=third"); + } + @Test public void iterableQueryParams() throws Exception { server.enqueue(new MockResponse().setBody("foo")); @@ -938,6 +950,9 @@ void form( @Param("user_name") String user, @Param("password") String password); + @RequestLine("GET /test?people={people}") + Response emptyArrayElement(@Param(value = "people", encoded = true) Collection people); + @RequestLine("GET /{1}/{2}") Response uriParam(@Param("1") String one, URI endpoint, @Param("2") String two);