[ 
https://issues.apache.org/jira/browse/SLING-2411?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Sedding updated SLING-2411:
----------------------------------

    Attachment: SLING-2411-jsedding.patch

I attached a patch to illustrate what I have in mind. Currently, I am not 100% 
satisfied with the patch, but maybe someone has a good idea, how to address the 
following issues.

1. The RequestScopedResourceResolverWrapper class needs to be exported from the 
bundle, if it should be available for use by e.g. the ResourceDecoratorTracker. 
Should it be in the API bundle or exported by the engine bundle (that's how 
it's done in the patch)? My gut feeling is that the ResourceDecorator(Tracker) 
does not actually belong into the jcr.resources bundle. This should become more 
evident when the ResourceResolver is decoupled from the JCR-ResourceProvider 
(see SLING-2396).

2. I'm not certain whether it can be dangerous/undesired that 
RequestScopedResourceResolverWrapper redirects map(String) to map(Request, 
String).

Eventually, if we decide to go down this route, it may make sense to allow 
registering ResourceResolverDecorator services, in a similar way to the current 
ResourceDecorator services. Curiously, I belive that the ResourceDecorator 
mechanism could be fairly easily implemented as a ResourceResolverDecorator.
                
> 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
>         Attachments: SLING-2411-jsedding.patch
>
>
> 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