You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Thiago Henrique De Paula Figueiredo (Jira)" <ji...@apache.org> on 2021/01/30 13:41:00 UTC
[jira] [Assigned] (TAP5-2659) Direct instantiation of
ComponentResourceSelector should be replaced with delegation to
ComponentRequestSelectorAnalyzer
[ https://issues.apache.org/jira/browse/TAP5-2659?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thiago Henrique De Paula Figueiredo reassigned TAP5-2659:
---------------------------------------------------------
Assignee: Thiago Henrique De Paula Figueiredo
> Direct instantiation of ComponentResourceSelector should be replaced with delegation to ComponentRequestSelectorAnalyzer
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: TAP5-2659
> URL: https://issues.apache.org/jira/browse/TAP5-2659
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Reporter: Dmitry Gusev
> Assignee: Thiago Henrique De Paula Figueiredo
> Priority: Major
>
> Some implementation methods in tapestry core still use direct instantiation of {{ComponentResourceSelector}} instead of delegating to {{ComponentRequestSelectorAnalyzer}}, namely:
> in {{ComponentMessageSourceImpl.java}}
>
> {code:java}
> public Messages getMessages(ComponentModel componentModel, Locale locale)
> {
> return getMessages(componentModel, new ComponentResourceSelector(locale));
> }
> public Messages getApplicationCatalog(Locale locale)
> {
> return messagesSource.getMessages(appCatalogBundle, new ComponentResourceSelector(locale));
> }
> {code}
> in {{ComponentTemplateSourceImpl.java}}
>
> {code:java}
> public ComponentTemplate getTemplate(ComponentModel componentModel, Locale locale)
> {
> return getTemplate(componentModel, new ComponentResourceSelector(locale));
> }{code}
> Which makes it impossible to use axes with message bundles and component templates.
>
> Default implementation of {{ComponentRequestSelectorAnalyzer}} interface uses {{ThreadLocale}} instead of directly passed Locale instance. To workaround this above methods may temporarily set passed locale into ThreadLocal and restore original value after `#buildSelectorForRequest` is returned, i.e.:
> {code:java}
> public Messages getMessages(ComponentModel componentModel, Locale locale)
> {
> Locale original = threadLocale.getLocale();
> try
> {
> threadLocale.setLocale(locale);
> return getMessages(componentModel, analyzer.buildSelectorForRequest());
> }
> finally
> {
> threadLocale.setLocale(original);
> }
> }{code}
> {{}}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)