[ 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: <dev-list-unsubscr...@magnolia-cms.com> ----------------------------------------------------------------