ghenzler commented on a change in pull request #10:
URL:
https://github.com/apache/sling-org-apache-sling-engine/pull/10#discussion_r498737048
##########
File path: src/main/java/org/apache/sling/engine/impl/request/RequestData.java
##########
@@ -237,19 +237,17 @@ public Resource initResource(ResourceResolver
resourceResolver) {
requestProgressTracker.startTimer("ResourceResolution");
final SlingHttpServletRequest request = getSlingRequest();
- StringBuffer requestURL = servletRequest.getRequestURL();
- String path = request.getPathInfo();
- if (requestURL.indexOf(";") > -1 && !path.contains(";")) {
- final String decodedURL;
- try {
- decodedURL = URLDecoder.decode(requestURL.toString(), "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new AssertionError("UTF-8 encoding is not supported");
- }
- path = path.concat(decodedURL.substring(decodedURL.indexOf(';')));
+ // Set by o.a.s.auth.core bundle
+ SlingUri slingUri = (SlingUri)
request.getAttribute(AuthenticationSupport.REQUEST_ATTRIBUTE_URI);
+ if (slingUri == null) {
+ throw new IllegalStateException(
+ "SlingUri not available as attribute of request (expected
to be set in bundle o.a.s.auth.core)");
}
+ // ensure slingUri is bound to correct resource resolver
+ slingUri = slingUri.adjust(b ->
b.setResourceResolver(resourceResolver));
+ request.setAttribute(AuthenticationSupport.REQUEST_ATTRIBUTE_URI,
slingUri);
- Resource resource = resourceResolver.resolve(request, path);
+ Resource resource = resourceResolver.resolve(request,
slingUri.getPath());
Review comment:
yes, so the version works because rr.resolve() is not yet using
PathToUriMappingService (and hence potential SlingUriMapper services are not
called when using rr.resolve()). Moving forward
PathToUriMappingService.resolve()/map() should delegate to
PathToUriMappingService and for that, I agree we'll need an additional method
in ResourceResolver - this should be able to stay privately in bundle as
PathToUriMappingServiceImpl and ResourceResolverImpl are in same (this) bundle.
I'll work on this and update the PR
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]