[
https://issues.apache.org/jira/browse/SLING-6165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15601197#comment-15601197
]
Radu Cotescu commented on SLING-6165:
-------------------------------------
Thanks for the quick review! Yes, I forgot to clean {{ThreadLocal}}. I guess we
can safely use the {{SlingRequestEvent}} for the request-bound resolvers since
the {{SlingServletResolver}} uses the same mechanism now:
https://github.com/apache/sling/blob/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java#L523
In fact I think we should switch the {{SlingServletResolver}} to use this new
{{ScriptingResourceResolverFactory}} that's now exposed for other bundles. We
could also provide a lazily instantiated resolver for services that are not
request-bound, but for the servlet resolver and most scripting engines that we
have in Sling we need the request-bound one.
There's no change for {{javax.scripting}} formally. Before my changes the
package exports were defined in the {{pom.xml}} file, but I've now switched the
bundle to {{package-info.java}} files
I have nothing against moving this "factory" somewhere else, but the service
user that it needs should be transparent and I think that it should be the
{{sling-scripting}} one. In retrospect I also don't see much benefit having the
second {{#getResourceResolver()}} method, except for already having it mapped
to the same service user.
> Expose a service for Sling Scripting that provides request-scoped Resource
> Resolvers for scripting dependencies
> ---------------------------------------------------------------------------------------------------------------
>
> Key: SLING-6165
> URL: https://issues.apache.org/jira/browse/SLING-6165
> Project: Sling
> Issue Type: New Feature
> Components: Scripting
> Reporter: Radu Cotescu
> Assignee: Radu Cotescu
> Fix For: Scripting Core 2.0.42, Scripting API 2.1.10
>
>
> A new Sling Scripting service ({{ScriptingResourceResolverFactory}}) should
> be implemented in order to provide access to request-based
> {{ResourceResolvers}} for solving script dependencies.
> The following two methods should be available:
> {noformat}
> /**
> * Provides a request-scoped {@link ResourceResolver} with only read access
> to the search paths. This resolver should be used for script
> * resolution in the context of the same request rendering process. The
> {@code ResourceResolver} should not be closed by consumers (calling
> * {@link ResourceResolver#close} doesn't do anything), since this service
> will handle the closing operation automatically. The
> * {@code ResourceResolver} will be shared between scripting dependencies
> that render parts of the response for the same request.
> */
> ResourceResolver getRequestScopedResourceResolver()
> /**
> * Provides a {@link ResourceResolver} with only read access to the search
> paths. Once you're done processing {@link Resource}s with this
> * {@code ResourceResolver} make sure to close it.
> */
> ResourceResolver getResourceResolver()
> {noformat}
> [sling-dev email
> thread|https://lists.apache.org/thread.html/db2a78249baf2d6234a4549a5aff8b5474256add9829f86ac78d1c56@%3Cdev.sling.apache.org%3E]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)