chemistry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Florian Müller (JIRA) <j...@apache.org>
Subject [jira] [Commented] (CMIS-844) POSTHttpServletRequestWrapper should accommodate prior consumption of request body by a filter
Date Tue, 23 Sep 2014 20:00:34 GMT

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

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

I'm not concerned about the developers who know what they are doing. But I already see the
bug reports that creating folders and updating properties doesn't work as expected.

I'm in the process of reworking this code and will add this patch. But I'm pretty sure it
will fire back at some point.

Btw. I looked at org.apache.catalina.connector.Request#parseParameters and it's not sufficient
for the Browser Binding use case because it ignores the "_charset_" parameter.

> 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