[ 
http://jira.magnolia-cms.com/browse/MAGNOLIA-3264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Fabrizio Giustina updated MAGNOLIA-3264:
----------------------------------------

    Description: 
When utf8 is enabled, forwards with added parameters may not work correctly due 
to unicode normalization which doesn't "see" added parameters.

For example, if you have a regexp virtual uri with:
{noformat}
^/my/path/(.*)\.html
forward://my/path/page.html?product=$1
{noformat}

the "product" parameter is seen in the destination page only if uft8 is 
disabled.
This is due to the getParameterMap() method in UnicodeNormalizerRequestWrapper 
which caches the map with normalized parameters after the forward:

{noformat}
        public Map getParameterMap()
        {            
            if (parameters == null)
            {
                parameters = new HashMap<String, String[]>();
                for (Object key : original.getParameterMap().keySet())
                {
                    String[] value = transform((String[]) 
original.getParameterMap().get(key));
                    parameters.put(key, value);
                }
            }
            return parameters;
        }
{noformat}

removing the " if (parameters == null)" check and making normalization all the 
times is enough to fix it, but this will add an unwanted overhead. We should 
find a way to re-normalize the parameter map only when the request gets 
overridden




> UnicodeNormalizerRequestWrapper.getParameterMap() may return a stale result 
> in case of forwards
> -----------------------------------------------------------------------------------------------
>
>                 Key: MAGNOLIA-3264
>                 URL: http://jira.magnolia-cms.com/browse/MAGNOLIA-3264
>             Project: Magnolia
>          Issue Type: Bug
>    Affects Versions: 4.3.5
>            Reporter: Fabrizio Giustina
>            Assignee: Fabrizio Giustina
>             Fix For: 4.3.x, 4.4.x
>
>
> When utf8 is enabled, forwards with added parameters may not work correctly 
> due to unicode normalization which doesn't "see" added parameters.
> For example, if you have a regexp virtual uri with:
> {noformat}
> ^/my/path/(.*)\.html
> forward://my/path/page.html?product=$1
> {noformat}
> the "product" parameter is seen in the destination page only if uft8 is 
> disabled.
> This is due to the getParameterMap() method in 
> UnicodeNormalizerRequestWrapper which caches the map with normalized 
> parameters after the forward:
> {noformat}
>         public Map getParameterMap()
>         {            
>             if (parameters == null)
>             {
>                 parameters = new HashMap<String, String[]>();
>                 for (Object key : original.getParameterMap().keySet())
>                 {
>                     String[] value = transform((String[]) 
> original.getParameterMap().get(key));
>                     parameters.put(key, value);
>                 }
>             }
>             return parameters;
>         }
> {noformat}
> removing the " if (parameters == null)" check and making normalization all 
> the times is enough to fix it, but this will add an unwanted overhead. We 
> should find a way to re-normalize the parameter map only when the request 
> gets overridden

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

Reply via email to