private void parseParameters() {
        if (null != this.queryParameters) {
            return;
        }
        // access the underlying pre-parsed query string values
        Map<String, String[]> params = parseQueryString(this.request.getQuery());
        if ("POST".equalsIgnoreCase(this.request.getMethod())) {
            String type = this.request.getHeader("Content-Type");
            if (null != type && type.startsWith("application/x-www-form-urlencoded")) {
                // parse the form data in the POST body
                if (!this.streamActive && null == this.inReader) {
                    try {
                        parseQueryFormData();
                        // now merge the URL params into the map
                        mergeQueryParams(params);
                    } catch (IOException ioe) {
                        FFDCFilter.processException(ioe,
                                                    getClass().getName(), "parseForm",
                                                    new Object[] { this, this.request });
                        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                            Tr.debug(tc, "Error reading POST form body: " + ioe);
                        }
                    }
                } else {
                    if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                        Tr.debug(tc, "POST form body already being read");
                    }
                }
            }
        }
        if (null == this.queryParameters) {
            // default to the URL params
            this.queryParameters = params;
        }
    }
private void parseParameters ( ) { if ( null != this . queryParameters ) { return ; } Map < String , String [ ] > params = parseQueryString ( this . request . getQuery ( ) ) ; if ( "POST" . equalsIgnoreCase ( this . request . getMethod ( ) ) ) { String type = this . request . getHeader ( "Content-Type" ) ; if ( null != type && type . startsWith ( "application/x-www-form-urlencoded" ) ) { if ( ! this . streamActive && null == this . inReader ) { try { parseQueryFormData ( ) ; mergeQueryParams ( params ) ; } catch ( IOException ioe ) { FFDCFilter . processException ( ioe , getClass ( ) . getName ( ) , "parseForm" , new Object [ ] { this , this . request } ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "Error reading POST form body: " + ioe ) ; } } } else { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) { Tr . debug ( tc , "POST form body already being read" ) ; } } } } if ( null == this . queryParameters ) { this . queryParameters = params ; } }
Handle parsing the request query parameters. These may exist in the
URL based querystring and/or in certain types of POST body streams.

This will always result in a query parameter map being created, even
if it's empty with no query data found in the request.