You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Tim Koopman (JIRA)" <ji...@apache.org> on 2015/03/03 15:10:05 UTC

[jira] [Created] (WICKET-5844) CryptoMapper doesn't work with context relative UrlResourceReferences

Tim Koopman created WICKET-5844:
-----------------------------------

             Summary: CryptoMapper doesn't work with context relative UrlResourceReferences
                 Key: WICKET-5844
                 URL: https://issues.apache.org/jira/browse/WICKET-5844
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 6.19.0
            Reporter: Tim Koopman


Adding a CryptoMapper to the application causes context relative URL's to be rendered twice, causing them to stop working.

For example a webjar resource is rendered as:

||page||rendered url||
|/|./webjars/jquery/1.11.2/jquery.js|
|/admin|./webjars/jquery/1.11.2/jquery.js|
|/admin/configuration|../../webjars/jquery/1.11.2/jquery.js|
|/admin/configuration/|../../../../webjars/jquery/1.11.2/jquery.js|

The last two urls won't work as they point to urls outside the context root.

The reason this happens is because UrlResourceReference#getUrl returns a UrlResourceReference$CalculatedUrl, which is normally skipped by UrlRenderer#renderRelativeUrl.
But in the case of CryptoMapper, this CalculatedUrl is converted to a normal Url (in CryptoMapper#encryptRequestListenerParameter) which isn't skipped.

So, when you have a CryptoMapper all context relative urls are converted twice: once by UrlRenderer#renderContextRelativeUrl and again by UrlRenderer#renderRelativeUrl.

A quick fix would be to ignore all url's of type IUrlRenderer in CrytoMapper's mapHandler, but I don't know it this the wanted solution. It seems pretty weird to me that conversion is done twice at all.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)