Hey all,

I am creating a SlingServlet that will work by both using a selector and a 
suffix. The resource is for example /content/dam/image.jpg and the actual url 
will be 
/content/dam/nice-image.cdn.jpg/modification-date/20160815/nice-image.jpg

What is the most easy way to get the actual resource path again from the 
SlingHttpServletRequest? Currently I am doing the following but I find it a bit 
cumbersome:

private String getResourcePath(SlingHttpServletRequest request) {
    String requestUrl = request.getRequestPathInfo().getResourcePath();
    int endIndex = 
requestUrl.lastIndexOf(request.getRequestPathInfo().getSuffix());
    String resourcePathWithSelector = requestUrl.substring(0, endIndex);
    endIndex = 
resourcePathWithSelector.lastIndexOf(request.getRequestPathInfo().getSelectorString()
 + "." + request.getRequestPathInfo().getExtension());
    return resourcePathWithSelector.substring(0, endIndex) + 
request.getRequestPathInfo().getExtension();
}

Is there an easier way or is parsing it like this the only way?

Also after I got the actual resourcePath, I tried doing the following, but this 
doesn’t seem to work, any clue on why? 

@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse 
response) throws ServletException, IOException {
      RequestDispatcherOptions opts = new RequestDispatcherOptions();
      opts.setReplaceSelectors("");
      String resourcePath = getResourcePath(request);
      RequestDispatcher dispatcher = request.getRequestDispatcher(resourcePath, 
opts);
      if (dispatcher != null) {
          dispatcher.forward(request, response);
      }
 }

I would expect that the previous would actually just forward it to the actual 
image being fetched from the getResourcePath but it just gives me a 404 not 
found (I checked the getResourcePath and it does return 
/content/dam/nice-image.jpg)

Thanks!
Roy

Reply via email to