chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ron Gavlin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CMIS-844) POSTHttpServletRequestWrapper should accommodate prior consumption of request body by a filter
Date Sun, 21 Sep 2014 20:39:33 GMT

    [ https://issues.apache.org/jira/browse/CMIS-844?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14142683#comment-14142683
] 

Ron Gavlin commented on CMIS-844:
---------------------------------

My patch only addresses the case where the POST request inputStream has already been consumed
by a prior filter. In this case, its the prior filter's responsibility to decode the inputStream
values correctly using UTF-8 and populate the parameterMap accordingly. This is outside the
scope of the POSTHttpServletRequestWrapper.

My patch proposes that the POSTHttpServletRequestWrapper accommodate correctly behaving filters.
I think my patch does no harm when the inputStream has not already been consumed and delivers
useful functionality when the inputStream has been consumed. Specifically, it provides useful
backwards compatibility with the prior 0.7.0 release. Thoughts?

> 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)

Mime
View raw message