public Map parse()

in commons-fileupload2-core/src/main/java/org/apache/commons/fileupload2/core/ParameterParser.java [158:197]


    public Map<String, String> parse(final char[] charArray, final int offset, final int length, final char separator) {

        if (charArray == null) {
            return new HashMap<>();
        }
        final var params = new HashMap<String, String>();
        this.chars = charArray.clone();
        this.pos = offset;
        this.len = length;

        String paramName;
        String paramValue;
        while (hasChar()) {
            paramName = parseToken(new char[] { '=', separator });
            paramValue = null;
            if (hasChar() && charArray[pos] == '=') {
                pos++; // skip '='
                paramValue = parseQuotedToken(new char[] { separator });

                if (paramValue != null) {
                    try {
                        paramValue = RFC2231Utils.hasEncodedValue(paramName) ? RFC2231Utils.decodeText(paramValue) : MimeUtils.decodeText(paramValue);
                    } catch (final UnsupportedEncodingException ignored) {
                        // let's keep the original value in this case
                    }
                }
            }
            if (hasChar() && charArray[pos] == separator) {
                pos++; // skip separator
            }
            if (paramName != null && !paramName.isEmpty()) {
                paramName = RFC2231Utils.stripDelimiter(paramName);
                if (this.lowerCaseNames) {
                    paramName = paramName.toLowerCase(Locale.ENGLISH);
                }
                params.put(paramName, paramValue);
            }
        }
        return params;
    }