You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Julian Sedding (Updated) (JIRA)" <ji...@apache.org> on 2012/02/12 13:56:59 UTC

[jira] [Updated] (SLING-2411) ResourceDecorator(Resource, HttpServletRequest) doesn't get called consistently

     [ 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