Skip to content

Commit a2dd500

Browse files
committed
fix: AwsHttpApiV2ProxyHttpServletRequest.getParameterMap returns arrays containing null for empty query params (#427)
1 parent 304ce92 commit a2dd500

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpApiV2ProxyHttpServletRequest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ private MultiValuedTreeMap<String, String> parseRawQueryString(String qs) {
514514

515515
String[] kv = value.split(QUERY_STRING_KEY_VALUE_SEPARATOR);
516516
String key = URLDecoder.decode(kv[0], LambdaContainerHandler.getContainerConfig().getUriEncoding());
517-
String val = kv.length == 2 ? kv[1] : null;
517+
String val = kv.length == 2 ? kv[1] : "";
518518
qsMap.add(key, val);
519519
} catch (UnsupportedEncodingException e) {
520520
log.error("Unsupported encoding in query string key: " + SecurityUtils.crlf(value), e);

aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java

+10
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ public class AwsProxyHttpServletRequestTest {
7474

7575
private static final AwsProxyRequestBuilder REQUEST_QUERY = new AwsProxyRequestBuilder("/hello", "POST")
7676
.queryString(FORM_PARAM_NAME, QUERY_STRING_NAME_VALUE);
77+
private static final AwsProxyRequestBuilder REQUEST_QUERY_EMPTY_VALUE = new AwsProxyRequestBuilder("/hello", "POST")
78+
.queryString(FORM_PARAM_NAME, "");
7779

7880

7981
public AwsProxyHttpServletRequestTest(String type) {
@@ -239,6 +241,14 @@ public void queryParameters_getParameterMap_nonNull() {
239241
assertEquals(QUERY_STRING_NAME_VALUE, request.getParameterMap().get(FORM_PARAM_NAME)[0]);
240242
}
241243

244+
@Test
245+
public void queryParameters_getParameterMap_nonNull_EmptyParamValue() {
246+
HttpServletRequest request = getRequest(REQUEST_QUERY_EMPTY_VALUE, null, null);
247+
assertNotNull(request);
248+
assertEquals(1, request.getParameterMap().size());
249+
assertEquals("", request.getParameterMap().get(FORM_PARAM_NAME)[0]);
250+
}
251+
242252
@Test
243253
public void queryParameters_getParameterNames_null() {
244254
HttpServletRequest request = getRequest(REQUEST_NULL_QUERY_STRING, null, null);

0 commit comments

Comments
 (0)