On Tue, Mar 12, 2013 at 1:43 PM, Martin Grigorov <[email protected]>wrote:

> Everything seems to be OK with this additional patch here.
> I've tested our app (which is mostly stateful), and all stateless examples
> in wicket-examples.
> Additionally I ran 'mvn clean test" on wicketstuff-core.
>
> I think Martijn will cut 6.7.0 this Friday. Since this improvement is not
> something urgent I'll revert it now and apply it again when 6.8.0-SNAPSHOT
> is available. This way we will have almost a month to test it before 6.9.0.
>

I meant "before 6.8.0".


>
>
> On Tue, Mar 12, 2013 at 1:15 PM, Martin Grigorov <[email protected]>wrote:
>
>> Thanks, Sven !
>>
>> I'm investigating what will break if the check for stateless is removed
>> from org.apache.wicket.page.AbstractPageManager#touchPage:
>> ---
>> i/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
>> +++
>> w/wicket-core/src/main/java/org/apache/wicket/page/AbstractPageManager.java
>> @@ -127,10 +127,6 @@ public abstract class AbstractPageManager implements
>> IPageManager
>>         @Override
>>         public void touchPage(IManageablePage page)
>>         {
>> -               if (!page.isPageStateless())
>> -               {
>> -                       getContext().bind();
>> -               }
>>                 getRequestAdapter().touch(page);
>>
>>
>> The session is being bound at org.apache.wicket.Page#onAfterRender when
>> needed.
>>
>> So far with this additional patch no tests fail and wicket-examples seems
>> to work.
>> I'll test our application with this change and then I'll either commit
>> this change or revert the previous one.
>>
>>
>> On Tue, Mar 12, 2013 at 12:41 PM, Sven Meier <[email protected]> wrote:
>>
>>> Hi Martin,
>>>
>>>
>>> --- a/wicket-core/src/main/java/**org/apache/wicket/Page.java
>>> +++ b/wicket-core/src/main/java/**org/apache/wicket/Page.java
>>> @@ -450,6 +450,8 @@ public abstract class Page extends MarkupContainer
>>> implements IRedirectListener,
>>>                 if (stateless == null)
>>>                 {
>>> +                       internalInitialize();
>>> +
>>>                         if (isStateless() == false)
>>>                         {
>>>                                 stateless = Boolean.FALSE;
>>>
>>> problem is that calling internaltInitialize() here will trigger
>>> initialization of the page from the constructor:
>>>
>>> Thread [qtp400269449-16] (Suspended)
>>>     OtherPage.onInitialize() line: 23
>>>     OtherPage(Component).**fireInitialize() line: 863
>>>     OtherPage(MarkupContainer).**internalInitialize() line: 955
>>>     OtherPage(Page).**isPageStateless() line: 453
>>> PageStoreManager(**AbstractPageManager).**touchPage(IManageablePage)
>>> line: 130
>>> PageAccessSynchronizer$2(**PageManagerDecorator).**touchPage(IManageablePage)
>>> line: 59
>>>     PageAccessSynchronizer$2.**touchPage(IManageablePage) line: 273
>>>     OtherPage(Page).dirty(boolean) line: 289
>>>     OtherPage(WebPage).dirty(**boolean) line: 324
>>>     OtherPage(Page).init() line: 713
>>>     OtherPage(Page).<init>(**PageParameters, IModel<?>) line: 178
>>>     OtherPage(Page).<init>() line: 132
>>>     OtherPage(WebPage).<init>() line: 75
>>>     OtherPage.<init>() line: 13
>>>
>>> #onInitialize() is assumed to be called *after* the constructor :(.
>>>
>>> Regards
>>> Sven
>>>
>>>
>>>
>>> On 03/12/2013 11:46 AM, [email protected] wrote:
>>>
>>>> Updated Branches:
>>>>    refs/heads/master 62fe0a96e -> beee594d9
>>>>
>>>>
>>>> WICKET-5083 Page#isPageStateless() may return wrong value
>>>>
>>>>
>>>> Project: 
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/repo<http://git-wip-us.apache.org/repos/asf/wicket/repo>
>>>> Commit: http://git-wip-us.apache.org/**repos/asf/wicket/commit/**
>>>> beee594d<http://git-wip-us.apache.org/repos/asf/wicket/commit/beee594d>
>>>> Tree: 
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/tree/beee594d<http://git-wip-us.apache.org/repos/asf/wicket/tree/beee594d>
>>>> Diff: 
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/diff/beee594d<http://git-wip-us.apache.org/repos/asf/wicket/diff/beee594d>
>>>>
>>>> Branch: refs/heads/master
>>>> Commit: beee594d98f82d1bf8b59c3c69dbe3**3eb1743091
>>>> Parents: 62fe0a9
>>>> Author: Martin Tzvetanov Grigorov <[email protected]>
>>>> Authored: Tue Mar 12 11:45:55 2013 +0100
>>>> Committer: Martin Tzvetanov Grigorov <[email protected]>
>>>> Committed: Tue Mar 12 11:45:55 2013 +0100
>>>>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>>   .../src/main/java/org/apache/**wicket/Page.java      |    2 +
>>>>   .../html/ajaxLink/**AjaxLinkPageExpectedResult.**html  |    2 +-
>>>>   .../**AjaxLinkWithBorderPageExpected**Result.html      |    2 +-
>>>>   .../html/ajaxLink/AjaxPage2_**ExpectedResult.html    |    2 +-
>>>>   .../html/basic/**SimplePageExpectedResult_13.**html    |    2 +-
>>>>   .../border/HideableBorderPage_**ExpectedResult.html  |    2 +-
>>>>   .../panel/**InlinePanelPageExpectedResult_**7.html     |    2 +-
>>>>   .../panel/**InlinePanelPageExpectedResult_**8.html     |    2 +-
>>>>   .../apache/wicket/page/**PageStatelessnessTest.java  |   54
>>>> +++++++++++++++
>>>>   9 files changed, 63 insertions(+), 7 deletions(-)
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>>
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/main/**java/org/apache/wicket/Page.**java<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/main/java/org/apache/wicket/Page.java>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/main/java/**org/apache/wicket/Page.java
>>>> b/wicket-core/src/main/java/**org/apache/wicket/Page.java
>>>> index 1467798..86c0472 100644
>>>> --- a/wicket-core/src/main/java/**org/apache/wicket/Page.java
>>>> +++ b/wicket-core/src/main/java/**org/apache/wicket/Page.java
>>>> @@ -450,6 +450,8 @@ public abstract class Page extends MarkupContainer
>>>> implements IRedirectListener,
>>>>                 if (stateless == null)
>>>>                 {
>>>> +                       internalInitialize();
>>>> +
>>>>                         if (isStateless() == false)
>>>>                         {
>>>>                                 stateless = Boolean.FALSE;
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/ajax/**
>>>> markup/html/ajaxLink/**AjaxLinkPageExpectedResult.**html<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkPageExpectedResult.html>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/
>>>> **html/ajaxLink/**AjaxLinkPageExpectedResult.**html
>>>> b/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/**AjaxLinkPageExpectedResult.**html
>>>> index 147a640..5cae1da 100644
>>>> --- a/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/**AjaxLinkPageExpectedResult.**html
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/**AjaxLinkPageExpectedResult.**html
>>>> @@ -10,7 +10,7 @@ Wicket.Ajax.DebugWindow.**enabled=true;
>>>>   </script>
>>>>   <script type="text/javascript" id="wicket-ajax-base-url">
>>>>   /*<![CDATA[*/
>>>> -Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.ajax.markup.html.**ajaxLink.AjaxLinkPage";
>>>> +Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.ajax.markup.html.**ajaxLink.AjaxLinkPage?0";
>>>>   /*]]>*/
>>>>   </script>
>>>>   <script type="text/javascript" >
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/ajax/**
>>>> markup/html/ajaxLink/**AjaxLinkWithBorderPageExpected**Result.html<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxLinkWithBorderPageExpectedResult.html>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/
>>>> **html/ajaxLink/**AjaxLinkWithBorderPageExpected**Result.html
>>>> b/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/**AjaxLinkWithBorderPageExpected**Result.html
>>>> index 1316cbc..aed0fb7 100644
>>>> --- a/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/**AjaxLinkWithBorderPageExpected**Result.html
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/**AjaxLinkWithBorderPageExpected**Result.html
>>>> @@ -10,7 +10,7 @@ Wicket.Ajax.DebugWindow.**enabled=true;
>>>>   </script>
>>>>   <script type="text/javascript" id="wicket-ajax-base-url">
>>>>   /*<![CDATA[*/
>>>> -Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.ajax.markup.html.**ajaxLink.**AjaxLinkWithBorderPage";
>>>> +Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.ajax.markup.html.**ajaxLink.**AjaxLinkWithBorderPage?0";
>>>>   /*]]>*/
>>>>   </script>
>>>>   <script type="text/javascript" >
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/ajax/**
>>>> markup/html/ajaxLink/**AjaxPage2_ExpectedResult.html<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/ajax/markup/html/ajaxLink/AjaxPage2_ExpectedResult.html>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/
>>>> **html/ajaxLink/AjaxPage2_**ExpectedResult.html
>>>> b/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/AjaxPage2_**ExpectedResult.html
>>>> index 1d0a909..1a0da1e 100644
>>>> --- a/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/AjaxPage2_**ExpectedResult.html
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/ajax/markup/**
>>>> html/ajaxLink/AjaxPage2_**ExpectedResult.html
>>>> @@ -10,7 +10,7 @@ Wicket.Ajax.DebugWindow.**enabled=true;
>>>>   </script>
>>>>   <script type="text/javascript" id="wicket-ajax-base-url">
>>>>   /*<![CDATA[*/
>>>> -Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.ajax.markup.html.**ajaxLink.AjaxPage2";
>>>> +Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.ajax.markup.html.**ajaxLink.AjaxPage2?0";
>>>>   /*]]>*/
>>>>   </script>
>>>>   <script type="text/javascript" >
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/markup/**
>>>> html/basic/**SimplePageExpectedResult_13.**html<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/markup/html/basic/SimplePageExpectedResult_13.html>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/test/java/**org/apache/wicket/markup/html/
>>>> **basic/**SimplePageExpectedResult_13.**html
>>>> b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**basic/**
>>>> SimplePageExpectedResult_13.**html
>>>> index 15cea8a..0639e2e 100644
>>>> --- a/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> basic/**SimplePageExpectedResult_13.**html
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> basic/**SimplePageExpectedResult_13.**html
>>>> @@ -13,7 +13,7 @@ Wicket.Ajax.DebugWindow.**enabled=true;
>>>>   </script>
>>>>   <script type="text/javascript" id="wicket-ajax-base-url">
>>>>   /*<![CDATA[*/
>>>> -Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.basic.**SimplePage_13";
>>>> +Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.basic.**SimplePage_13?0";
>>>>   /*]]>*/
>>>>   </script>
>>>>   <link rel="stylesheet" type="text/css" href="../../BasePage.css" />
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/markup/**
>>>> html/border/**HideableBorderPage_**ExpectedResult.html<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/markup/html/border/HideableBorderPage_ExpectedResult.html>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/test/java/**org/apache/wicket/markup/html/
>>>> **border/HideableBorderPage_**ExpectedResult.html
>>>> b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> border/HideableBorderPage_**ExpectedResult.html
>>>> index b227b6e..4745897 100644
>>>> --- a/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> border/HideableBorderPage_**ExpectedResult.html
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> border/HideableBorderPage_**ExpectedResult.html
>>>> @@ -10,7 +10,7 @@ Wicket.Ajax.DebugWindow.**enabled=true;
>>>>   </script>
>>>>   <script type="text/javascript" id="wicket-ajax-base-url">
>>>>   /*<![CDATA[*/
>>>> -Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.border.**HideableBorderPage";
>>>> +Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.border.**HideableBorderPage?0";
>>>>   /*]]>*/
>>>>   </script>
>>>>   <script type="text/javascript" >
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/markup/**
>>>> html/panel/**InlinePanelPageExpectedResult_**7.html<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_7.html>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/test/java/**org/apache/wicket/markup/html/
>>>> **panel/**InlinePanelPageExpectedResult_**7.html
>>>> b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**panel/**
>>>> InlinePanelPageExpectedResult_**7.html
>>>> index 26eb4e7..76e3382 100644
>>>> --- a/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> panel/**InlinePanelPageExpectedResult_**7.html
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> panel/**InlinePanelPageExpectedResult_**7.html
>>>> @@ -10,7 +10,7 @@ Wicket.Ajax.DebugWindow.**enabled=true;
>>>>   </script>
>>>>   <script type="text/javascript" id="wicket-ajax-base-url">
>>>>   /*<![CDATA[*/
>>>> -Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.panel.**InlinePanelPage_7";
>>>> +Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.panel.**InlinePanelPage_7?0";
>>>>   /*]]>*/
>>>>   </script>
>>>>   <script type="text/javascript" >
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/markup/**
>>>> html/panel/**InlinePanelPageExpectedResult_**8.html<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/InlinePanelPageExpectedResult_8.html>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git a/wicket-core/src/test/java/**org/apache/wicket/markup/html/
>>>> **panel/**InlinePanelPageExpectedResult_**8.html
>>>> b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**panel/**
>>>> InlinePanelPageExpectedResult_**8.html
>>>> index b6d33ec..6c6238f 100644
>>>> --- a/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> panel/**InlinePanelPageExpectedResult_**8.html
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/markup/html/**
>>>> panel/**InlinePanelPageExpectedResult_**8.html
>>>> @@ -10,7 +10,7 @@ Wicket.Ajax.DebugWindow.**enabled=true;
>>>>   </script>
>>>>   <script type="text/javascript" id="wicket-ajax-base-url">
>>>>   /*<![CDATA[*/
>>>> -Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.panel.**InlinePanelPage_8";
>>>> +Wicket.Ajax.baseUrl="wicket/**bookmarkable/org.apache.**
>>>> wicket.markup.html.panel.**InlinePanelPage_8?0";
>>>>   /*]]>*/
>>>>   </script>
>>>>   <script type="text/javascript" >
>>>>
>>>> http://git-wip-us.apache.org/**repos/asf/wicket/blob/**
>>>> beee594d/wicket-core/src/test/**java/org/apache/wicket/page/**
>>>> PageStatelessnessTest.java<http://git-wip-us.apache.org/repos/asf/wicket/blob/beee594d/wicket-core/src/test/java/org/apache/wicket/page/PageStatelessnessTest.java>
>>>> ------------------------------**------------------------------**
>>>> ----------
>>>> diff --git 
>>>> a/wicket-core/src/test/java/**org/apache/wicket/page/**PageStatelessnessTest.java
>>>> b/wicket-core/src/test/java/**org/apache/wicket/page/**
>>>> PageStatelessnessTest.java
>>>> new file mode 100644
>>>> index 0000000..0340a95
>>>> --- /dev/null
>>>> +++ b/wicket-core/src/test/java/**org/apache/wicket/page/**
>>>> PageStatelessnessTest.java
>>>> @@ -0,0 +1,54 @@
>>>> +/*
>>>> + * Licensed to the Apache Software Foundation (ASF) under one or more
>>>> + * contributor license agreements.  See the NOTICE file distributed
>>>> with
>>>> + * this work for additional information regarding copyright ownership.
>>>> + * The ASF licenses this file to You under the Apache License, Version
>>>> 2.0
>>>> + * (the "License"); you may not use this file except in compliance with
>>>> + * the License.  You may obtain a copy of the License at
>>>> + *
>>>> + *      
>>>> http://www.apache.org/**licenses/LICENSE-2.0<http://www.apache.org/licenses/LICENSE-2.0>
>>>> + *
>>>> + * Unless required by applicable law or agreed to in writing, software
>>>> + * distributed under the License is distributed on an "AS IS" BASIS,
>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>>> implied.
>>>> + * See the License for the specific language governing permissions and
>>>> + * limitations under the License.
>>>> + */
>>>> +package org.apache.wicket.page;
>>>> +
>>>> +import org.apache.wicket.Page;
>>>> +import org.apache.wicket.**WicketTestCase;
>>>> +import org.apache.wicket.markup.html.**WebPage;
>>>> +import org.junit.Test;
>>>> +
>>>> +/**
>>>> + * Tests for Page#isPageStateless
>>>> + */
>>>> +public class PageStatelessnessTest extends WicketTestCase
>>>> +{
>>>> +       /**
>>>> +        * Tests that a page is not stateless if it adds stateful
>>>> components in #onInitialize()
>>>> +        * 
>>>> https://issues.apache.org/**jira/browse/WICKET-5083<https://issues.apache.org/jira/browse/WICKET-5083>
>>>> +        */
>>>> +       @Test
>>>> +       public void isPageStatelessWithOnInitializ**e()
>>>> +       {
>>>> +               Page page = new TestPage();
>>>> +               assertFalse(page.**isPageStateless());
>>>> +       }
>>>> +
>>>> +       public static class TestPage extends WebPage
>>>> +       {
>>>> +
>>>> +               public TestPage()
>>>> +               {
>>>> +               }
>>>> +
>>>> +               @Override
>>>> +               protected void onInitialize() {
>>>> +                       super.onInitialize();
>>>> +
>>>> +                       setStatelessHint(false);
>>>> +               }
>>>> +       }
>>>> +}
>>>>
>>>>
>>>
>>
>>
>> --
>> Martin Grigorov
>> jWeekend
>> Training, Consulting, Development
>> http://jWeekend.com <http://jweekend.com/>
>>
>
>
>
> --
> Martin Grigorov
> jWeekend
> Training, Consulting, Development
> http://jWeekend.com <http://jweekend.com/>
>



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

Reply via email to