Skip to content

Commit 78d4663

Browse files
authored
Merge pull request #8 from vkuptcov/feature-fix-query-parameters-npe
Fix NPE for null in the query parameters
2 parents 616a597 + fc79040 commit 78d4663

File tree

2 files changed

+58
-8
lines changed

2 files changed

+58
-8
lines changed

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

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,9 @@ public String getParameter(String s) {
529529
@Override
530530
public Enumeration<String> getParameterNames() {
531531
List<String> paramNames = new ArrayList<>();
532-
paramNames.addAll(request.getQueryStringParameters().keySet());
532+
if (request.getQueryStringParameters() != null) {
533+
paramNames.addAll(request.getQueryStringParameters().keySet());
534+
}
533535
paramNames.addAll(urlEncodedFormParameters.keySet());
534536
return Collections.enumeration(paramNames);
535537
}
@@ -567,13 +569,15 @@ public Map<String, String[]> getParameterMap() {
567569
params = new HashMap<>();
568570
}
569571

570-
for (Map.Entry<String, String> entry : request.getQueryStringParameters().entrySet()) {
571-
if (params.containsKey(entry.getKey())) {
572-
params.get(entry.getKey()).add(entry.getValue());
573-
} else {
574-
List<String> valueList = new ArrayList<>();
575-
valueList.add(entry.getValue());
576-
params.put(entry.getKey(), valueList);
572+
if (request.getQueryStringParameters() != null) {
573+
for (Map.Entry<String, String> entry : request.getQueryStringParameters().entrySet()) {
574+
if (params.containsKey(entry.getKey())) {
575+
params.get(entry.getKey()).add(entry.getValue());
576+
} else {
577+
List<String> valueList = new ArrayList<>();
578+
valueList.add(entry.getValue());
579+
params.put(entry.getKey(), valueList);
580+
}
577581
}
578582
}
579583

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

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
import javax.ws.rs.core.HttpHeaders;
99
import javax.ws.rs.core.MediaType;
1010

11+
import java.util.Collections;
12+
import java.util.Enumeration;
13+
import java.util.List;
14+
1115
import static org.junit.Assert.*;
1216

1317
public class AwsProxyHttpServletRequestTest {
@@ -39,6 +43,16 @@ public class AwsProxyHttpServletRequestTest {
3943
private static final AwsProxyRequest REQUEST_MALFORMED_COOKIE = new AwsProxyRequestBuilder("/hello", "GET")
4044
.header(HttpHeaders.COOKIE, QUERY_STRING_NAME_VALUE).build();
4145

46+
private static final AwsProxyRequest REQUEST_NULL_QUERY_STRING;
47+
static {
48+
AwsProxyRequest awsProxyRequest = new AwsProxyRequestBuilder("/hello", "GET").build();
49+
awsProxyRequest.setQueryStringParameters(null);
50+
REQUEST_NULL_QUERY_STRING = awsProxyRequest;
51+
}
52+
53+
private static final AwsProxyRequest REQUEST_QUERY = new AwsProxyRequestBuilder("/hello", "POST")
54+
.queryString(FORM_PARAM_NAME, QUERY_STRING_NAME_VALUE).build();
55+
4256

4357
@Test
4458
public void headers_getHeader_validRequest() {
@@ -131,4 +145,36 @@ public void cookie_getCookies_emptyCookies() {
131145
assertNotNull(request.getCookies());
132146
assertEquals(0, request.getCookies().length);
133147
}
148+
149+
@Test
150+
public void queryParameters_getParameterMap_null() {
151+
HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_NULL_QUERY_STRING, null, null);
152+
assertNotNull(request);
153+
assertEquals(0, request.getParameterMap().size());
154+
}
155+
156+
@Test
157+
public void queryParameters_getParameterMap_nonNull() {
158+
HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_QUERY, null, null);
159+
assertNotNull(request);
160+
assertEquals(1, request.getParameterMap().size());
161+
assertEquals(QUERY_STRING_NAME_VALUE, request.getParameterMap().get(FORM_PARAM_NAME)[0]);
162+
}
163+
164+
@Test
165+
public void queryParameters_getParameterNames_null() {
166+
HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_NULL_QUERY_STRING, null, null);
167+
List<String> parameterNames = Collections.list(request.getParameterNames());
168+
assertNotNull(request);
169+
assertEquals(0, parameterNames.size());
170+
}
171+
172+
@Test
173+
public void queryParameters_getParameterNames_nonNull() {
174+
HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_QUERY, null, null);
175+
List<String> parameterNames = Collections.list(request.getParameterNames());
176+
assertNotNull(request);
177+
assertEquals(1, parameterNames.size());
178+
assertTrue(parameterNames.contains(FORM_PARAM_NAME));
179+
}
134180
}

0 commit comments

Comments
 (0)