https://issues.apache.org/jira/browse/WICKET-3759

changing the error pages to stateless should work with this patch.
I'll try it tomorrow

On Wed, Jun 1, 2011 at 11:30 PM, Igor Vaynberg <[email protected]> wrote:
> shouldnt this change be wider made to stateless pages? i think the
> proper solution is making the error page stateless.
>
> -igor
>
> On Wed, Jun 1, 2011 at 1:27 PM, Martin Grigorov <[email protected]> wrote:
>> not storing the error page causes troubles with redirect_to_render
>> (RenderStrategy) or redirect_always (RedirectPolicy) because the page
>> cannot be found after the redirect
>>
>> I have a local patch that changes the default RedirectPolicy from
>> NEVER to AUTO in DefaultExceptionMapper and solves the problem,
>> because this way redirect_to_buffer is used. The change looks sensible
>> to me. I'll attach it to a ticket for review.
>>
>> On Wed, Jun 1, 2011 at 7:51 PM, Igor Vaynberg <[email protected]> 
>> wrote:
>>> when a page is set to versioned=false it means that hierarchy
>>> modifications, etc, do not dirty the page. it should not imply
>>> anything else other then the dirty flag not being modified.
>>>
>>> stateless pages should not be stored. perhaps the error page (if it
>>> has no callbacks - in which case it should be auto-marked as stateless
>>> already) can override the stateless flag.
>>>
>>> makes sense?
>>>
>>> -igor
>>>
>>> On Wed, Jun 1, 2011 at 5:16 AM, Martin Grigorov <[email protected]> 
>>> wrote:
>>>> A proof : https://issues.apache.org/jira/browse/WICKET-3758
>>>>
>>>> What is the actual meaning of "versioned" ? Should not be stored or
>>>> should not stored more than one version of this page ?
>>>>
>>>> On Wed, Jun 1, 2011 at 10:24 AM, Martin Grigorov <[email protected]> 
>>>> wrote:
>>>>> Hi,
>>>>>
>>>>> Yesterday while playing with the app from
>>>>> http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp I found
>>>>> that org.apache.wicket.page.PageAccessSynchronizer.lockPage(int) is
>>>>> called as many times as PageProvider#getPage() is used.
>>>>> So I did the following optimization:
>>>>>
>>>>> Index: 
>>>>> wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
>>>>> ===================================================================
>>>>> --- 
>>>>> wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
>>>>>        (revision
>>>>> 1130015)
>>>>> +++ 
>>>>> wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
>>>>>        (working
>>>>> copy)
>>>>> @@ -158,12 +158,13 @@
>>>>>                if (pageInstance == null)
>>>>>                {
>>>>>                        pageInstance = getPageInstance(pageId, pageClass, 
>>>>> pageParameters,
>>>>> renderCount);
>>>>> +                       if (pageInstance == null)
>>>>> +                       {
>>>>> +                               throw new PageExpiredException("Page 
>>>>> expired.");
>>>>> +                       }
>>>>> +                       touchPageInstance(pageInstance);
>>>>>                }
>>>>> -               if (pageInstance == null)
>>>>> -               {
>>>>> -                       throw new PageExpiredException("Page expired.");
>>>>> -               }
>>>>> -               touchPageInstance(pageInstance);
>>>>> +
>>>>>                return pageInstance;
>>>>>        }
>>>>>
>>>>> I.e. check whether to throw PageExpiredException or touch the page
>>>>> only when it was just attempted to read from the page store, all
>>>>> following calls to #getPage() work with the cached page (already
>>>>> touched).
>>>>> Everything is OK but just one test fails :
>>>>> org.apache.wicket.ajax.InternalErrorCallsAjaxOnFailureTest.showsInternalErrorPage()
>>>>> The problem is that
>>>>> org.apache.wicket.markup.html.pages.ExceptionErrorPage.isVersioned()
>>>>> returns false and this error page should not be stored.
>>>>> org.apache.wicket.Page.dirty(boolean) takes into account isVersioned()
>>>>> but 
>>>>> org.apache.wicket.request.handler.PageProvider.touchPageInstance(IRequestablePage)
>>>>> doesn't and always marks the page as candidate for storing.
>>>>>
>>>>> If above is a bug I suggest to add IManageblePage#dirty(boolean) and
>>>>> use it instead session.getPageManager().touchPage(IRequestablePage).
>>>>>
>>>>>
>>>>> --
>>>>> Martin Grigorov
>>>>> jWeekend
>>>>> Training, Consulting, Development
>>>>> http://jWeekend.com
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Martin Grigorov
>>>> jWeekend
>>>> Training, Consulting, Development
>>>> http://jWeekend.com
>>>>
>>>
>>
>>
>>
>> --
>> Martin Grigorov
>> jWeekend
>> Training, Consulting, Development
>> http://jWeekend.com
>>
>



-- 
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com

Reply via email to