Here is my version: http://pastie.org/9680245
Please create a ticket in JIRA if you like it.

Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Tue, Oct 28, 2014 at 9:52 AM, Martin Grigorov <mgrigo...@apache.org>
wrote:

> Hi,
>
> I share Sebastien's concern.
> I'll see how to workaround this.
>
> Martin Grigorov
> Wicket Training and Consulting
> https://twitter.com/mtgrigorov
>
> On Sat, Oct 25, 2014 at 2:57 PM, Sebastien <seb...@gmail.com> wrote:
>
>> Hi Guillaume,
>>
>> Generally speaking, you cannot call a non final method from a
>> constructor...
>>
>> Best regards,
>> Sebastien
>> On Oct 25, 2014 1:32 PM, "Guillaume Smet" <guillaume.s...@gmail.com>
>> wrote:
>>
>> > Hi Martin,
>> >
>> > I got something working with the following changes in Wicket:
>> >
>> >
>> https://github.com/openwide-java/wicket/commit/6374a4a7c6fb66841143a88933523f97305cf1a4
>> >
>> > Do you consider this commitable? If so, I can create a JIRA issue and
>> push
>> > a PR.
>> >
>> > Having the pageId in the getTimeout call is quite nice as I don't have
>> > to get it again from the PageRequestHandlerTracker.
>> >
>> > Thanks for your feedback.
>> >
>> > On Fri, Oct 24, 2014 at 9:16 AM, Martin Grigorov <mgrigo...@apache.org>
>> > wrote:
>> > > If you have a base page then BasePage#onInitialize() should be a good
>> > place.
>> > > Or you could add the pageIds of the special/slow pages only in the
>> map.
>> > >
>> > > Otherwise you may use PageRequestHandlerTracker#getLastHandler in a
>> > custom
>> > > IRequestCycleListener#onDetach().
>> > >
>> > > Martin Grigorov
>> > > Wicket Training and Consulting
>> > > https://twitter.com/mtgrigorov
>> > >
>> > > On Fri, Oct 24, 2014 at 10:11 AM, Guillaume Smet <
>> > guillaume.s...@gmail.com>
>> > > wrote:
>> > >
>> > >> Hi Martin,
>> > >>
>> > >> Yeah, I thought about that too but I'm not sure of the best place to
>> > >> build the pageId -> pageClassName map. Any advice about this?
>> > >>
>> > >> Once I'll get this working, I'll build a PR for the few changes I
>> made
>> > >> in Wicket (based on what you proposed earlier). Would be nice to have
>> > >> them in 6.18.
>> > >>
>> > >> On Fri, Oct 24, 2014 at 8:59 AM, Martin Grigorov <
>> mgrigo...@apache.org>
>> > >> wrote:
>> > >> > Hi Guillaume,
>> > >> >
>> > >> > Sorry for not thinking more carefully about this the first time!
>> > >> > I'm afraid it is not possible to do it the way I suggested.
>> > >> > PageAccessSynchronizer is the entry point to start using a page
>> and it
>> > >> > works only with pageId!
>> > >> >
>> > >> > Here is a new hackish approach:
>> > >> > Store pageId -> pageClassName map in the Session. Then when
>> > >> > PageAccessSynchronizer is requested to lock a page by id use that
>> id
>> > to
>> > >> > resolve the class name and to decide what timeout to use.
>> > >> >
>> > >> > Martin Grigorov
>> > >> > Wicket Training and Consulting
>> > >> > https://twitter.com/mtgrigorov
>> > >> >
>> > >> > On Thu, Oct 23, 2014 at 5:44 PM, Guillaume Smet <
>> > >> guillaume.s...@gmail.com>
>> > >> > wrote:
>> > >> >
>> > >> >> Hi Martin,
>> > >> >>
>> > >> >> On Wed, Oct 22, 2014 at 9:51 AM, Martin Grigorov <
>> > mgrigo...@apache.org>
>> > >> >> wrote:
>> > >> >> > I'd like to avoid moving the logic that gets the timeout from
>> > >> >> > Session.PageAccessSynchronizerProvider to PageAccessSynchronizer
>> > >> because
>> > >> >> > this way it will use Application.get() everytime and most apps
>> > don't
>> > >> need
>> > >> >> > to pay for this.
>> > >> >> >
>> > >> >> > A way to make it possible for you is to remove the 'final'
>> > >> >> > from org.apache.wicket.Session#getPageManager and introduce
>> > >> overridable
>> > >> >> > PageAccessSynchronizer#getTimeout(). This way you can use your
>> own
>> > >> >> > PageAccessSynchronizer.
>> > >> >> > http://pastie.org/9667070
>> > >> >>
>> > >> >> After a few experiments, here I am!
>> > >> >>
>> > >> >> So, it mostly works: I thought it would be better to add something
>> > like:
>> > >> >> protected IProvider<PageAccessSynchronizer>
>> > >> >> newPageAccessSynchronizerProvider()
>> > >> >>     {
>> > >> >>         return new PageAccessSynchronizerProvider();
>> > >> >>     }
>> > >> >> in Session and call it from the constructor instead of removing
>> the
>> > >> >> final so I did that in my code.
>> > >> >>
>> > >> >> It works pretty well BUT I haven't found a way to get the page
>> class
>> > >> >> in getTimeout without having the risk to trigger a
>> > resolvePageInstance
>> > >> >> which will try to lock and then call getTimeout leading to a
>> > wonderful
>> > >> >> stack overflow exception when dealing with
>> > >> >> ListenerInterfaceRequestHandler.
>> > >> >>
>> > >> >> Obviously (...) what interests me the most is the getTimeout in
>> > >> >> ListenerInterfaceRequestHandler as it's often actions on buttons
>> > which
>> > >> >> are long to run.
>> > >> >>
>> > >> >> Here is what I have in mind for my Session class:
>> > >> >> https://gist.github.com/gsmet/3b9e2775d25fadcef5ef
>> > >> >>
>> > >> >> I must admit that an advice would be welcome as I wouldn't like to
>> > >> >> have stack overflow errors popping out in weird edge cases.
>> > >> >>
>> > >> >> Thanks!
>> > >> >>
>> > >> >> --
>> > >> >> Guillaume
>> > >> >>
>> > >> >>
>> ---------------------------------------------------------------------
>> > >> >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> > >> >> For additional commands, e-mail: users-h...@wicket.apache.org
>> > >> >>
>> > >> >>
>> > >>
>> > >> ---------------------------------------------------------------------
>> > >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> > >> For additional commands, e-mail: users-h...@wicket.apache.org
>> > >>
>> > >>
>> >
>> > ---------------------------------------------------------------------
>> > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> > For additional commands, e-mail: users-h...@wicket.apache.org
>> >
>> >
>>
>
>

Reply via email to