[ 
https://issues.apache.org/jira/browse/CMIS-844?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ron Gavlin updated CMIS-844:
----------------------------
    Description: 
POSTHttpServletRequestWrapper should accommodate prior consumption of the 
request body by a filter.

The 0.7.0 release provided this accommodation. This appears to have been broken 
by the major post-0.7.0 refactoring.

The following POSTHttpServletRequestWrapper constructor modification fixes the 
problem:

{code}
...
        if (isMultipart) {
...
        } else {
            // form data processing
            StringBuilder sb = new StringBuilder();

            InputStreamReader sr = new 
InputStreamReader(request.getInputStream(), IOUtils.UTF8);
            char[] buffer = new char[4096];
            int c = 0;
            while ((c = sr.read(buffer)) > -1) {
                sb.append(buffer, 0, c);
            }

            if (sb.length() < 3) {
                @SuppressWarnings("unchecked")
                Map<String, String[]> parameterMap = request.getParameterMap();
                getParameterMap().putAll(parameterMap);
            } else {
                parseFormData(sb.toString());
            }
        }
...
{code}

  was:
POSTHttpServletRequestWrapper should accommodate prior consumption of request 
body by a filter.

The POSTHttpServletRequestWrapper constructor should be modified as follows:

{code}
...
        if (isMultipart) {
...
        } else {
            // form data processing
            StringBuilder sb = new StringBuilder();

            InputStreamReader sr = new 
InputStreamReader(request.getInputStream(), IOUtils.UTF8);
            char[] buffer = new char[4096];
            int c = 0;
            while ((c = sr.read(buffer)) > -1) {
                sb.append(buffer, 0, c);
            }

            if (sb.length() < 3) {
                getParameterMap().putAll(request.getParameterMap());
            } else {
                parseFormData(sb.toString());
            }
        }
...
{code}

     Issue Type: Bug  (was: Improvement)

> POSTHttpServletRequestWrapper should accommodate prior consumption of request 
> body by a filter
> ----------------------------------------------------------------------------------------------
>
>                 Key: CMIS-844
>                 URL: https://issues.apache.org/jira/browse/CMIS-844
>             Project: Chemistry
>          Issue Type: Bug
>          Components: opencmis-server
>    Affects Versions: OpenCMIS 0.12.0
>            Reporter: Ron Gavlin
>            Assignee: Florian Müller
>
> POSTHttpServletRequestWrapper should accommodate prior consumption of the 
> request body by a filter.
> The 0.7.0 release provided this accommodation. This appears to have been 
> broken by the major post-0.7.0 refactoring.
> The following POSTHttpServletRequestWrapper constructor modification fixes 
> the problem:
> {code}
> ...
>         if (isMultipart) {
> ...
>         } else {
>             // form data processing
>             StringBuilder sb = new StringBuilder();
>             InputStreamReader sr = new 
> InputStreamReader(request.getInputStream(), IOUtils.UTF8);
>             char[] buffer = new char[4096];
>             int c = 0;
>             while ((c = sr.read(buffer)) > -1) {
>                 sb.append(buffer, 0, c);
>             }
>             if (sb.length() < 3) {
>                 @SuppressWarnings("unchecked")
>                 Map<String, String[]> parameterMap = 
> request.getParameterMap();
>                 getParameterMap().putAll(parameterMap);
>             } else {
>                 parseFormData(sb.toString());
>             }
>         }
> ...
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to