[
http://jira.magnolia-cms.com/browse/MAGNOLIA-3310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=30464#action_30464
]
Hudson CI server commented on MAGNOLIA-3310:
--------------------------------------------
Integrated in !http://hudson.magnolia-cms.com/images/16x16/blue.gif!
[magnolia_main-4.3-branch
#105|http://hudson.magnolia-cms.com/job/magnolia_main-4.3-branch/105/]
MAGNOLIA-3310
Request unwrapped before forwarding.
> UnicodeNormalizationFilter seems to be messing up the virtualUriMappings
> ------------------------------------------------------------------------
>
> Key: MAGNOLIA-3310
> URL: http://jira.magnolia-cms.com/browse/MAGNOLIA-3310
> Project: Magnolia
> Issue Type: Bug
> Components: core
> Affects Versions: 4.3.6
> Reporter: Ernst Bunders
> Assignee: Ondřej Chytil
> Priority: Critical
> Fix For: 4.3.x
>
>
> Hello
> I discovered a problem with a virtual uri mapping (of type forward)and the
> UnicodeNormalizationFilter. What i try to do is the following:
> I have a processed css file that creates the css for a configurable theme.
> The theme also has a dialog that lets you do all kinds of theme settings.
> The theme css is called with some parameters: the uuid of the page node (to
> resolve the theme config), and a version parameter (to create uniuque urls
> for each 'version' of the theme).
> What i want is a virtalUriMapping for this css request, so i can call it
> without request parameters, making it more cachable. Here is the
> virtualUriMapping config:
> class: info.magnolia.cms.beans.config.RegexpVirtualURIMapping
> fromURI: ^/themes/([^/]+)/([0-9]+)/theme\.css$
> toURI:
> forward:/resources/vpro/themes/pip/css/theme.css?uuid=$1&lastmodified=$2
> this way i can call my css from the template like:
> http://localhost:8080/pip/themes/1fb8d8e1-d625-4c24-95a3-904e0102eddd/1286288160080/theme.css
> And the request is forwarded to:
> /resources/vpro/themes/pip/css/theme.css?uuid=1fb8d8e1-d625-4c24-95a3-904e0102eddd&lastmodified=1286288160080
> So that works but oh lala: when the css model class kicks into action: no
> more request parameters.
> I put some breakpoints here and there and this is what i see:
> - Every request object is wrapped with a
> info.magnolia.cms.filters.UnicodeNormalizationFilter.UnicodeNormalizerRequestWrapper
> by the UnicodeNormalizationFilter filter.
> - this method has a method getParameterMap(), that will look into the wrapped
> request and fetch the parameters only once.
> - so the first time the VirtualUriFilter is hit, the request wrapper is
> wrapping a request with no parameters. So the
> UnicodeNormalizerRequestWrapper.parameters map is empty.
> - The virtualUriMapping is found, the 'forward:' prefix is found, and a
> request dispatcher is created (with proper requestUri and queryString values).
> - the request is forwarded.
> - At this point i would expect a new request to be created and reinserted
> into the whole requests handling pipeline. So the next time
> UnicodeNormalizationFilter is hit, i expect the request to be unwrapped. To
> my surprise this is not the case. the request is wrapped already, and the
> wrapper still has the parameters map (with zero entries) from the first
> request.
> The wrapper now wraps two requests! In it's field 'original' there is the
> request with url:
> http://localhost:8080/pip/themes/1fb8d8e1-d625-4c24-95a3-904e0102eddd/1286288160080/theme.css
> (the first request), and in it's field 'request' (inherited from
> HttpServletRequestWrapper) a request with url:
> /resources/vpro/themes/pip/css/theme.css and queryString:
> uuid=1fb8d8e1-d625-4c24-95a3-904e0102eddd&lastmodified=1286288160080 ( the
> new request)
> All a bit surprising, and It seems to me that the wrapper is still around at
> the second request handling. Another thing that seems strange: why does the
> UnicodeNormalizerRequestWrapper has it's own field for the wrapped request
> and parameters, as it already extends HttpServletRequestWrapper. It seems to
> me that the only method that actually adds someting is getHeader(String name).
> And thus: when i switch of the UnicodeNormalization filter: it works!
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.magnolia-cms.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
----------------------------------------------------------------
For list details see
http://www.magnolia-cms.com/home/community/mailing-lists.html
To unsubscribe, E-mail to: <[email protected]>
----------------------------------------------------------------