[ 
https://issues.apache.org/jira/browse/WICKET-5698?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14152332#comment-14152332
 ] 

ASF subversion and git services commented on WICKET-5698:
---------------------------------------------------------

Commit ed07f6b38ff29d3ff46357db8252656ca2cc2b97 in wicket's branch 
refs/heads/wicket-6.x from [~jesselong]
[ https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=ed07f6b ]

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


> 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: Jesse Long
>             Fix For: 6.18.0, 7.0.0-M4
>
>         Attachments: WICKET-5698-2.patch, WICKET-5698-3.patch, 
> WICKET-5698.patch
>
>
> 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)

Reply via email to