How to dynamically get parent path inside do get method In servlet
Dear Team,
I have written below servlet for getting path inside the do get method. But I am not able to achieve it.
************************* MY JAVA Class ************************
import java.io.IOException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.servlets.HttpConstants;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Servlet that lists all the events listed in AEM. The {@link SlingSafeMethodsServlet} shall be
* used for HTTP methods that are idempotent. For write operations use the
* {@link SlingAllMethodsServlet}.
*
*/
@8220494(service = Servlet.class, property = { "sling.servlet.methods=" + HttpConstants.METHOD_GET,
"sling.servlet.paths=" + "/bin/content/api/v1/getEventsListBypath2" })
public class EventsListBypathServlet2 extends SlingAllMethodsServlet {
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(EventsListBypathServlet.class);
@9944223
protected void doGet(final SlingHttpServletRequest req, final SlingHttpServletResponse resp) throws ServletException, IOException {
String eventsPath2 = req.getSession().getId();
LOGGER.info("eventsPath2 in EventListBypath servlet:::"+ eventsPath2);
ResourceResolver resourceResolver = req.getResourceResolver();
Session session1 = resourceResolver.adaptTo(Session.class);
String userId = session1.getUserID();
try {
LOGGER.info("userId in EventListBypath servlet:::"+ userId + session1.getAttributeNames().toString() +session1.getRootNode());
} catch (RepositoryException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Resource jcrResource = resourceResolver.getResource("testevent2023-9-3");
ValueMap jcrProperties = null;
String parentPath = null;
if (jcrResource != null) {
jcrProperties = jcrResource.adaptTo(ValueMap.class);
LOGGER.info("jcrProperties in EventListBypath servlet::: " + jcrProperties);
parentPath = jcrProperties.get("cq:parentPath", String.class);
LOGGER.info("parentPath in EventListBypath servlet::: " + parentPath);
}
}
}
******************************* My CRX Content ***********************

************************ My requirement ******************
Whenever I am hitting this servlet (http://localhost:4502/bin/content/api/v1/getEventsListBypath2) then I should see all the parent path of all the events inside /content/dam/content-admin/events/event-detail/test
BUt currently , I am getting parent value as null.

