You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Christoph Jaeger <ch...@derwald.at> on 2007/10/27 20:24:14 UTC

T5: Application State

Hi,

after upgrading from 5.0.5 to 5.0.6 (which was not too difficult thanks
to some messages on this list), my application somehow seems to not work
with the @ApplicationState as before.

I have three components on my page:

- LanguageSwitch
- MenuBar
- Login

Depending on who is logged in and the selected language, a different
menu is displayed. All three components have a property

@ApplicationState private Menu menu;

MenuBar has an additional property
private boolean menuExists;

to query if a menu has yet been set.

When the language is switched, the component calls "menu=null;" to force
the MenuBar component to create a new menu.

When someone logs in or out, the Login component calls "menu=null;" for
the same reason.

The MenuBar component calculates a new menu (based on selected language
and logged in user) if it finds that there is no existing menu
(menuExists==false).

This setup worked as expected in 5.0.5, but after I switched to 5.0.6,
the menu=null in the Login component seems to get ignored (from
LanguageSwitch it works as before). I think it depends on the order of
components: LanguageSwitch is before MenuBar, so MenuBar sees the
changes done in LanguageSwitch, but not the changes done in Login.

The Login component calls menu=null in two places: in
onSuccessFromFormLogin(), after the "Login" submit button was clicked,
and onActionFromLogout(), after the ActionLink titled "logout" is
clicked. I get the same behaviour for both calls.

What is strange here: adding some logging, I see that the click on the
"Switch Language" ActionLink, as well as the "logout" ActionLink and the
click on the "Login" button create two requests (this is as expected).
In the first request, menu=null is called. In the second request, the
MenuBar component checks for the existence of the menu property. Why
does the MenuBar in the second request not see the changes done in the
first request?

I hope the description provided is clear, the actual code involved is a
bit more complicate than mentioned here, and would take a long time to
read. On the other hand, creating a small example demonstrating the
problem would also take some time, maybe someone knows where the problem
lies with this description already. If not, I will sit down and create a
small example.

Thanks,

Best Regards,

Christoph Jäger


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5: Application State

Posted by Christoph Jaeger <ch...@derwald.at>.
I do not have a JIRA account yet. Unfortunately, it seems I can not sign
up right now (always get a "session timed out" error message in the
signup screen). Maybe it has to do with the switching of daylight saving
time, which happens right now. I'll try again later.

Should I create a small example, or is the description below sufficient?

Christoph

Howard Lewis Ship wrote:
> Please add an issue to JIRA.  Although we have unit and integration tests
> covering the application state mechanism it is still possible that there is
> a bug.
> 
> On 10/27/07, Christoph Jaeger <ch...@derwald.at> wrote:
>> Hi,
>>
>> after upgrading from 5.0.5 to 5.0.6 (which was not too difficult thanks
>> to some messages on this list), my application somehow seems to not work
>> with the @ApplicationState as before.
>>
>> I have three components on my page:
>>
>> - LanguageSwitch
>> - MenuBar
>> - Login
>>
>> Depending on who is logged in and the selected language, a different
>> menu is displayed. All three components have a property
>>
>> @ApplicationState private Menu menu;
>>
>> MenuBar has an additional property
>> private boolean menuExists;
>>
>> to query if a menu has yet been set.
>>
>> When the language is switched, the component calls "menu=null;" to force
>> the MenuBar component to create a new menu.
>>
>> When someone logs in or out, the Login component calls "menu=null;" for
>> the same reason.
>>
>> The MenuBar component calculates a new menu (based on selected language
>> and logged in user) if it finds that there is no existing menu
>> (menuExists==false).
>>
>> This setup worked as expected in 5.0.5, but after I switched to 5.0.6,
>> the menu=null in the Login component seems to get ignored (from
>> LanguageSwitch it works as before). I think it depends on the order of
>> components: LanguageSwitch is before MenuBar, so MenuBar sees the
>> changes done in LanguageSwitch, but not the changes done in Login.
>>
>> The Login component calls menu=null in two places: in
>> onSuccessFromFormLogin(), after the "Login" submit button was clicked,
>> and onActionFromLogout(), after the ActionLink titled "logout" is
>> clicked. I get the same behaviour for both calls.
>>
>> What is strange here: adding some logging, I see that the click on the
>> "Switch Language" ActionLink, as well as the "logout" ActionLink and the
>> click on the "Login" button create two requests (this is as expected).
>> In the first request, menu=null is called. In the second request, the
>> MenuBar component checks for the existence of the menu property. Why
>> does the MenuBar in the second request not see the changes done in the
>> first request?
>>
>> I hope the description provided is clear, the actual code involved is a
>> bit more complicate than mentioned here, and would take a long time to
>> read. On the other hand, creating a small example demonstrating the
>> problem would also take some time, maybe someone knows where the problem
>> lies with this description already. If not, I will sit down and create a
>> small example.
>>
>> Thanks,
>>
>> Best Regards,
>>
>> Christoph Jäger
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: T5: Application State

Posted by Howard Lewis Ship <hl...@gmail.com>.
Please add an issue to JIRA.  Although we have unit and integration tests
covering the application state mechanism it is still possible that there is
a bug.

On 10/27/07, Christoph Jaeger <ch...@derwald.at> wrote:
>
> Hi,
>
> after upgrading from 5.0.5 to 5.0.6 (which was not too difficult thanks
> to some messages on this list), my application somehow seems to not work
> with the @ApplicationState as before.
>
> I have three components on my page:
>
> - LanguageSwitch
> - MenuBar
> - Login
>
> Depending on who is logged in and the selected language, a different
> menu is displayed. All three components have a property
>
> @ApplicationState private Menu menu;
>
> MenuBar has an additional property
> private boolean menuExists;
>
> to query if a menu has yet been set.
>
> When the language is switched, the component calls "menu=null;" to force
> the MenuBar component to create a new menu.
>
> When someone logs in or out, the Login component calls "menu=null;" for
> the same reason.
>
> The MenuBar component calculates a new menu (based on selected language
> and logged in user) if it finds that there is no existing menu
> (menuExists==false).
>
> This setup worked as expected in 5.0.5, but after I switched to 5.0.6,
> the menu=null in the Login component seems to get ignored (from
> LanguageSwitch it works as before). I think it depends on the order of
> components: LanguageSwitch is before MenuBar, so MenuBar sees the
> changes done in LanguageSwitch, but not the changes done in Login.
>
> The Login component calls menu=null in two places: in
> onSuccessFromFormLogin(), after the "Login" submit button was clicked,
> and onActionFromLogout(), after the ActionLink titled "logout" is
> clicked. I get the same behaviour for both calls.
>
> What is strange here: adding some logging, I see that the click on the
> "Switch Language" ActionLink, as well as the "logout" ActionLink and the
> click on the "Login" button create two requests (this is as expected).
> In the first request, menu=null is called. In the second request, the
> MenuBar component checks for the existence of the menu property. Why
> does the MenuBar in the second request not see the changes done in the
> first request?
>
> I hope the description provided is clear, the actual code involved is a
> bit more complicate than mentioned here, and would take a long time to
> read. On the other hand, creating a small example demonstrating the
> problem would also take some time, maybe someone knows where the problem
> lies with this description already. If not, I will sit down and create a
> small example.
>
> Thanks,
>
> Best Regards,
>
> Christoph Jäger
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>


-- 
Howard M. Lewis Ship
Partner and Senior Architect at Feature50

Creator Apache Tapestry and Apache HiveMind