[ https://issues.apache.org/jira/browse/TAP5-2659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17275611#comment-17275611 ]
ASF subversion and git services commented on TAP5-2659: ------------------------------------------------------- Commit 4003ff2f7c1bc646e670757a6b1c000fc178432f in tapestry-5's branch refs/heads/5.6.x from Thiago H. de Paula Figueiredo [ https://gitbox.apache.org/repos/asf?p=tapestry-5.git;h=4003ff2 ] TAP5-2659: fixing bad merge > 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 > Fix For: 5.6.2, 5.7.0 > > > 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)