private MultiValuedTreeMap parseRawQueryString()

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;
    }