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

Florian Müller commented on CMIS-844:
-------------------------------------

I have a hunch that there are not many correctly behaving filters. In fact, 
OpenCMIS does only half of what it should do. It should also take the charset 
in the content type and the parameter "_charset_" into account. (I'm working on 
that.) I guess no filter is doing that today.
If a filter does its own parsing anyway, it can save the original stream and 
provided it with a ServletRequestWrapper to OpenCMIS. That would allow OpenCMIS 
to do the decoding independently of the filter.

> 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