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

Reply via email to