private void parseQueryPredicate() throws InvalidQueryException {
    String queryString = m_body.getQueryString();
    if (queryString == null) {
      String uri = getURI();
      int qsBegin = uri.indexOf("?");

      queryString = (qsBegin == -1) ? null : uri.substring(qsBegin + 1);
    }

    if (queryString != null) {
      try {
        Collection<String> ignoredProperties = null;
        switch (getRequestType()) {
          case PUT:
            ignoredProperties = m_resource.getResourceDefinition().getUpdateDirectives();
            break;
          case POST:
            ignoredProperties = m_resource.getResourceDefinition().getCreateDirectives();
            break;
          case GET:
            ignoredProperties = m_resource.getResourceDefinition().getReadDirectives();
            break;
          case DELETE:
            ignoredProperties = m_resource.getResourceDefinition().getDeleteDirectives();
            break;
          default:
            break;
        }


        m_predicate = (ignoredProperties == null)
            ? getPredicateCompiler().compile(URLDecoder.decode(queryString, "UTF-8"))
            : getPredicateCompiler().compile(URLDecoder.decode(queryString, "UTF-8"), ignoredProperties);
      } catch (UnsupportedEncodingException e) {
        throw new RuntimeException("Unable to decode URI: " + e, e);
      }
    }
  }
Parse the query string and compile it into a predicate.
The query string may have already been extracted from the http body.
If the query string didn't exist in the body use the query string in the URL.

@throws InvalidQueryException  if unable to parse a non-null query string into a predicate
ambari-server/src/main/java/org/apache/ambari/server/api/services/BaseRequest.java