[BAEL-7069] Pass list as a query parameter in Jersey (#15051)

* Pass list as a query parameter in Jersey

* Address review comment

* Address review comment

---------

Co-authored-by: rajatgarg <rajatgarg@adobe.com>
This commit is contained in:
Rajat Garg 2023-11-06 07:15:53 +05:30 committed by GitHub
parent 63953b74f3
commit da8167cf17
3 changed files with 81 additions and 0 deletions

View File

@ -0,0 +1,15 @@
package com.baeldung.jersey.client.listdemo;
import java.util.List;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.QueryParam;
@Path("/")
public class JerseyListDemo {
@GET
public String getItems(@QueryParam("items") List<String> items) {
return "Received items: " + items;
}
}

View File

@ -0,0 +1,9 @@
package com.baeldung.jersey.client.listdemo;
import org.glassfish.jersey.server.ResourceConfig;
public class ListDemoApp extends ResourceConfig {
public ListDemoApp() {
packages("com.baeldung.jersey.client.listdemo");
}
}

View File

@ -0,0 +1,57 @@
package com.baeldung.jersey.client.listdemo;
import static org.junit.Assert.assertEquals;
import java.net.URI;
import java.util.Arrays;
import java.util.List;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.TestProperties;
import org.junit.Test;
import jakarta.ws.rs.core.Application;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.UriBuilder;
public class JerseyListDemoUnitTest extends JerseyTest {
@Override
protected Application configure() {
enable(TestProperties.LOG_TRAFFIC);
enable(TestProperties.DUMP_ENTITY);
return new ListDemoApp();
}
@Test
public void givenList_whenUsingQueryParam_thenPassParamsAsList() {
Response response = target("/")
.queryParam("items", "item1", "item2")
.request()
.get();
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
assertEquals("Received items: [item1, item2]", response.readEntity(String.class));
}
@Test
public void givenList_whenUsingCommaSeparatedString_thenPassParamsAsList() {
Response response = target("/")
.queryParam("items", "item1,item2")
.request()
.get();
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
assertEquals("Received items: [item1,item2]", response.readEntity(String.class));
}
@Test
public void givenList_whenUsingUriBuilder_thenPassParamsAsList() {
List<String> itemsList = Arrays.asList("item1", "item2");
UriBuilder builder = UriBuilder.fromUri("/");
for (String item : itemsList) {
builder.queryParam("items", item);
}
URI uri = builder.build();
String expectedUri = "/?items=item1&items=item2";
assertEquals(expectedUri, uri.toString());
}
}