Reputation: 301
I am working on a task that involves creating a servlet to take html requests in Adobe CQ 5.5. It requires pulling some objects defined by the cq:defineObjects tag. Two of these objects are resourceDesign and resourcePage.
I believe that I may possibly be able to retrieve resourceDesign from resourcePage with the following code:
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
...
@Override
protected void doGet(SlingHttpServletRequest slingRequest, SlingHttpServletResponse slingResponse) throws ServletException, IOException {
ResourceResolver resourceResolver = slingRequest.getResourceResolver();
...
Designer designer = resourceResolver.adaptTo(Designer.class);
Page resourcePage = ...
Design resourceDesign = designer.getDesign(resourcePage);
}
However I don't quite understand how to retreive the resourcePage and the documentation doesn't give a very clear idea of what it is or how to get its value.
Any insights would be greatly appreciated.
Thanks, Thomas
Upvotes: 0
Views: 560
Reputation: 9281
resourcePage refers to the page containing your resource and is an instance of com.day.cq.wcm.api.Page
, and resourceDesign is the design object for the resource page.
The resourcePage can be obtained using PageManager's #getContainingPage()
as shown here.
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
...
@Override
protected void doGet(SlingHttpServletRequest slingRequest,
SlingHttpServletResponse slingResponse) throws ServletException, IOException {
ResourceResolver resourceResolver = slingRequest.getResourceResolver();
PageManager pageManager = resourceResolver.adaptTo(PageManager.class);
Page resourcePage = pageManager.getContainingPage(slingRequest.getResource());
Designer designer = resourceResolver.adaptTo(Designer.class);
Design resourceDesign = designer.getDesign(resourcePage);
}
For more info, refer this doc.
Upvotes: 3