[ 
https://issues.apache.org/jira/browse/SLING-2411?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13205372#comment-13205372
 ] 

Felix Meschberger commented on SLING-2411:
------------------------------------------

> Yes, as I said, it was just a quick thought - but then using a thread local 
> inside the resolver doesn't look right either 

Oh ! Sorry. I didn't fully read this issue and proposal. No, I don't like this 
thread local implementation proposal either.

Considering this and considering the request is not always available, I think I 
favor an approach already mentioned: We deprecate the method with the request 
argument (and might even define that null is always passed in). If a decorator 
then requires access to the request, it is the task of that decorate to provide 
the request, for example in a thread local provided by a filter.

Or Sling provides such a (component level) filter which provides service API to 
get the current thread's request, response, and resource. This can be 
implemented in a separate bundle, is not intrusive in existing code and would 
provide actual data for all.
                
> ResourceDecorator(Resource, HttpServletRequest) doesn't get called 
> consistently
> -------------------------------------------------------------------------------
>
>                 Key: SLING-2411
>                 URL: https://issues.apache.org/jira/browse/SLING-2411
>             Project: Sling
>          Issue Type: Improvement
>            Reporter: Justin Edelson
>
> The ResourceDecorator currently has two methods:
> decorate(Resource)
> decorate(Resource, HttpServletRequest)
> The JcrResourceResolver uses the latter method when 
> resolve(HttpServletRequest,String) is invoked. In all other cases, the former 
> method is used. This behavior is correct.
> However, the JcrResourceResolver (and any future ResourceResolver 
> implementation for that matter) really doesn't have any control over how it 
> is invoked. For example, at present <sling:include> and <sling:forward> call 
> resolve(String), not resolve(HttpServletRequest,String) (see 
> http://s.apache.org/lL5). But even if we did a code audit within Sling and 
> fixed all the cases like this, we don't have any control over downstream 
> applications which may or may not invoke the two-argument resolve() method.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to