private void processEntityEnclosingMethod() {

    try {
      Header contentType = request.getFirstHeader(HTTP.CONTENT_TYPE);
      String contentTypeStr = contentType != null ? contentType.getValue() : inferContentType();

      String charSetEncoding = BuilderUtil.getCharSetEncoding(contentTypeStr);
      msgContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEncoding);

      if (HTTPTransportUtils.isRESTRequest(contentTypeStr) || isRest(contentTypeStr)) {
        RESTUtil.processPOSTRequest(
            msgContext, is, os, request.getRequestLine().getUri(), contentType, isRestDispatching);
      } else {

        Header soapAction = request.getFirstHeader(SOAPACTION);
        HTTPTransportUtils.processHTTPPostRequest(
            msgContext,
            is,
            os,
            contentTypeStr,
            (soapAction != null ? soapAction.getValue() : null),
            request.getRequestLine().getUri());
      }

    } catch (Exception e) {
      handleException("Error processing POST request ", e);
    }
  }
  /**
   * Whether the original request received by the synapse is REST
   *
   * @param originalInMsgCtx request message
   * @return <code>true</code> if the request was a REST request
   */
  private static boolean isRequestRest(MessageContext originalInMsgCtx) {

    boolean isRestRequest =
        originalInMsgCtx.getProperty(NhttpConstants.REST_REQUEST_CONTENT_TYPE) != null;

    if (!isRestRequest) {

      String httpMethod =
          (String) originalInMsgCtx.getProperty(Constants.Configuration.HTTP_METHOD);

      isRestRequest =
          Constants.Configuration.HTTP_METHOD_GET.equals(httpMethod)
              || Constants.Configuration.HTTP_METHOD_DELETE.equals(httpMethod)
              || Constants.Configuration.HTTP_METHOD_PUT.equals(httpMethod)
              || RESTConstants.METHOD_OPTIONS.equals(httpMethod)
              || Constants.Configuration.HTTP_METHOD_HEAD.equals(httpMethod);

      if (!isRestRequest) {

        isRestRequest =
            Constants.Configuration.HTTP_METHOD_POST.equals(httpMethod)
                && HTTPTransportUtils.isRESTRequest(
                    String.valueOf(
                        originalInMsgCtx.getProperty(Constants.Configuration.MESSAGE_TYPE)));

        if (!isRestRequest) {
          isRestRequest =
              (String.valueOf(originalInMsgCtx.getProperty(Constants.Configuration.MESSAGE_TYPE))
                      .equals(HTTPConstants.MEDIA_TYPE_TEXT_XML)
                  && originalInMsgCtx.getSoapAction() == null);
        }
      }
    }
    return isRestRequest;
  }