diff --git a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java index cc3ef769b..fb69d5d62 100644 --- a/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java +++ b/aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java @@ -529,7 +529,9 @@ public String getParameter(String s) { @Override public Enumeration getParameterNames() { List paramNames = new ArrayList<>(); - paramNames.addAll(request.getQueryStringParameters().keySet()); + if (request.getQueryStringParameters() != null) { + paramNames.addAll(request.getQueryStringParameters().keySet()); + } paramNames.addAll(urlEncodedFormParameters.keySet()); return Collections.enumeration(paramNames); } @@ -567,13 +569,15 @@ public Map getParameterMap() { params = new HashMap<>(); } - for (Map.Entry entry : request.getQueryStringParameters().entrySet()) { - if (params.containsKey(entry.getKey())) { - params.get(entry.getKey()).add(entry.getValue()); - } else { - List valueList = new ArrayList<>(); - valueList.add(entry.getValue()); - params.put(entry.getKey(), valueList); + if (request.getQueryStringParameters() != null) { + for (Map.Entry entry : request.getQueryStringParameters().entrySet()) { + if (params.containsKey(entry.getKey())) { + params.get(entry.getKey()).add(entry.getValue()); + } else { + List valueList = new ArrayList<>(); + valueList.add(entry.getValue()); + params.put(entry.getKey(), valueList); + } } } diff --git a/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java b/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java index 9295cb91a..d9ddc313b 100644 --- a/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java +++ b/aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java @@ -8,6 +8,10 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; +import java.util.Collections; +import java.util.Enumeration; +import java.util.List; + import static org.junit.Assert.*; public class AwsProxyHttpServletRequestTest { @@ -39,6 +43,16 @@ public class AwsProxyHttpServletRequestTest { private static final AwsProxyRequest REQUEST_MALFORMED_COOKIE = new AwsProxyRequestBuilder("/hello", "GET") .header(HttpHeaders.COOKIE, QUERY_STRING_NAME_VALUE).build(); + private static final AwsProxyRequest REQUEST_NULL_QUERY_STRING; + static { + AwsProxyRequest awsProxyRequest = new AwsProxyRequestBuilder("/hello", "GET").build(); + awsProxyRequest.setQueryStringParameters(null); + REQUEST_NULL_QUERY_STRING = awsProxyRequest; + } + + private static final AwsProxyRequest REQUEST_QUERY = new AwsProxyRequestBuilder("/hello", "POST") + .queryString(FORM_PARAM_NAME, QUERY_STRING_NAME_VALUE).build(); + @Test public void headers_getHeader_validRequest() { @@ -131,4 +145,36 @@ public void cookie_getCookies_emptyCookies() { assertNotNull(request.getCookies()); assertEquals(0, request.getCookies().length); } + + @Test + public void queryParameters_getParameterMap_null() { + HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_NULL_QUERY_STRING, null, null); + assertNotNull(request); + assertEquals(0, request.getParameterMap().size()); + } + + @Test + public void queryParameters_getParameterMap_nonNull() { + HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_QUERY, null, null); + assertNotNull(request); + assertEquals(1, request.getParameterMap().size()); + assertEquals(QUERY_STRING_NAME_VALUE, request.getParameterMap().get(FORM_PARAM_NAME)[0]); + } + + @Test + public void queryParameters_getParameterNames_null() { + HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_NULL_QUERY_STRING, null, null); + List parameterNames = Collections.list(request.getParameterNames()); + assertNotNull(request); + assertEquals(0, parameterNames.size()); + } + + @Test + public void queryParameters_getParameterNames_nonNull() { + HttpServletRequest request = new AwsProxyHttpServletRequest(REQUEST_QUERY, null, null); + List parameterNames = Collections.list(request.getParameterNames()); + assertNotNull(request); + assertEquals(1, parameterNames.size()); + assertTrue(parameterNames.contains(FORM_PARAM_NAME)); + } }