in aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpApiV2ProxyHttpServletRequest.java [481:504]
private MultiValuedTreeMap<String, String> parseRawQueryString(String qs) {
if (qs == null || "".equals(qs.trim())) {
return new MultiValuedTreeMap<>();
}
MultiValuedTreeMap<String, String> qsMap = new MultiValuedTreeMap<>();
for (String value : qs.split(QUERY_STRING_SEPARATOR)) {
try {
if (!value.contains(QUERY_STRING_KEY_VALUE_SEPARATOR)) {
qsMap.add(URLDecoder.decode(value, LambdaContainerHandler.getContainerConfig().getUriEncoding()), null);
log.warn("Query string parameter with empty value and no =: " + SecurityUtils.crlf(value));
continue;
}
String[] kv = value.split(QUERY_STRING_KEY_VALUE_SEPARATOR);
String key = URLDecoder.decode(kv[0], LambdaContainerHandler.getContainerConfig().getUriEncoding());
String val = kv.length == 2 ? AwsHttpServletRequest.decodeValueIfEncoded(kv[1]) : "";
qsMap.add(key, val);
} catch (UnsupportedEncodingException e) {
log.error("Unsupported encoding in query string key-value pair: " + SecurityUtils.crlf(value), e);
}
}
return qsMap;
}