You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (JIRA)" <ji...@apache.org> on 2014/09/22 10:33:33 UTC

[jira] [Assigned] (WICKET-5698) WebApplication#unmount() unmounts the whole compound mapper if some of its inner ones matches

     [ https://issues.apache.org/jira/browse/WICKET-5698?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Grigorov reassigned WICKET-5698:
---------------------------------------

    Assignee: Martin Grigorov

> WebApplication#unmount() unmounts the whole compound mapper if some of its inner ones matches
> ---------------------------------------------------------------------------------------------
>
>                 Key: WICKET-5698
>                 URL: https://issues.apache.org/jira/browse/WICKET-5698
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 7.0.0-M3, 6.17.0
>            Reporter: Martin Grigorov
>            Assignee: Martin Grigorov
>
> From dev@ mailing lists: http://markmail.org/message/wmdgbrhvrvaeygvr
> WebApplication.unmount() calls getRootRequestMapperAsCompound(), and 
> calls unmount() on that.
> getRootRequestMapperAsCompound() checks if the root request mapper is a 
> compound, if not, wraps it in a compound, sets the compound as root and 
> returns the compound.
> CompoundRequestMapper.unmount() identifies which of the mappers added 
> directly to the compound handle the url, and removes them.
> The problem:
> If the original root mapper was a single wrapper, or layer of wrappers, 
> with the actual mounted mapper wrapped some levels down, then the whole 
> wrapper is removed, not just the specific MountedMapper that is wrapped. 
> This has the effect of removing every single mapper, leaving root mapper 
> as an empty compound.
> I would like to attempt to provide a patch to fix this, but would like 
> guidance on the approach. I have come up with three approaches:
> 1. Introduce interface IWrappedRequestMapper. This will be an interface 
> which has one method: IRequestMapper getWrappedRequestMapper(). We can 
> then have all wrapper mappers implement this and work down the tree to 
> find the correct MountedMapper (wicket 6) to remove.
> 2. Have WebApplication hold a reference to a specific 
> CompoundRequestMapper, and have all mount()/unmount() operations add and 
> remove from this mapper. This compound would need to be added to the 
> default list during init. This makes it complicated to work out how to 
> do things like have CryptoMapper not apply to mounted pages.
> 3. Add method unmount() to IRequestMapper, so that wrappers can 
> delegate. This obviously can only be done in wicket 7, but we're making 
> mounting a problem of every single request mapper, when not even 
> Application cares about mounting.



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