[
https://issues.apache.org/jira/browse/SLING-9036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17028059#comment-17028059
]
Henry Kuijpers commented on SLING-9036:
---------------------------------------
And, IMHO, there is another issue with adaptTo() on the ResourceWrapper and
SlingHttpServletRequestWrapper, as described in this ticket; The default design
of that wrapper is to always delegate adaptTo() to the delegate.
This, however, causes the delegate to be used (and therefore any overridden
methods to be gone) for actually doing the adaption. Only the
SlingHttpServletRequestImpl actually contains logic to really do the adaption,
but it should be using the fully wrapped request in case the
SlingHttpServletRequestWrapper is being used (no matter how many levels deep).
> Sling Models: SlingHttpServletRequestWrapper.adaptTo() unwraps before adapting
> ------------------------------------------------------------------------------
>
> Key: SLING-9036
> URL: https://issues.apache.org/jira/browse/SLING-9036
> Project: Sling
> Issue Type: New Feature
> Components: Sling Models
> Reporter: Henry Kuijpers
> Priority: Major
>
> Sling Model:
> {code:java}
> @Model(adaptables = SlingHttpServletRequest.class, adapters =
> MySlingModel.class)
> class MySlingModel {
> @Inject
> public MySlingModel(@Self SlingHttpServletRequest req) {
> logger.log(req.getResourceBundle().getClass().getName());
> }
> }
> {code}
> Calling code:
> {code:java}
> // req obtained via JSP/HTL
> final SlingHttpServletRequest myWrappedReq = new
> SlingHttpServletRequestWrapper(req) {
> @Override
> public ResourceBundle getResourceBundle() {
> return new MyCustomResourceBundle();
> }
> };
>
> final MySlingModel myModel = myWrappedReq.adaptTo(MySlingModel.class);
> {code}
> I would expect the log file to contain "MyCustomResourceBundle". Instead it
> contains "NullResourceBundle".
> This is because the request is being "unwrapped" when doing the adaptTo()
> call: It keeps on delegating to the wrapped request. This should not have
> happened, i.e. how can we otherwise overwrite (parts of) requests and
> resources?
> See also:
> [https://github.com/apache/sling-org-apache-sling-api/blob/master/src/main/java/org/apache/sling/api/wrappers/SlingHttpServletRequestWrapper.java#L147]
--
This message was sent by Atlassian Jira
(v8.3.4#803005)