Servlet for fetching data from one node and using that data elsewhere
Say I have multiple pages under /content/practice/articles. Now in /content/practice/articles/firstpage/jcr:content there is a property named myImage. I want to read and fetch that value from myImage property which is a path basically.
Now I want to navigate to /content/practice/articles/firstpage/jcr:content/root/container/detailed_page and replace the properties (mainImage & smallImage) value with the data fetched from myImage property.
Can someone help me with the servlet code that I need to write in order to fetch the same?
Note : There are 500 pages under /content/practice/articles and I would have to do the above for all of them.
@nitin_laad had helped me out previously with the following code snippet, but since I'm still a newbie I'm unable to make the code run-worthy. Can someone please help me out with the full code snippet (say enclose the following with appropriate try catch block and other necessary statements). Thanks!
sample code
- @component(service = Servlet.class, property = {
Constants.SERVICE_DESCRIPTION + "= Sample servlet to copy property value",
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.paths=" + "/bin/copy-property"
})
public class CopyPropertyServlet extends SlingAllMethodsServlet {
private static final Logger LOG = LoggerFactory.getLogger(CopyPropertyServlet.class);
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
ResourceResolver resourceResolver = request.getResourceResolver();
Session session = resourceResolver.adaptTo(Session.class);
// Get the source property value
Node sourceNode = session.getNode("/content/practice/articles/jcr:content");
Property sourceProperty = sourceNode.getProperty("myImage");
String sourcePropertyValue = sourceProperty.getString();
// Get the destination property and set the value
Node destinationNode = session.getNode("/content/practice/articles/jcr:content/root/container/main_page");
destinationNode.setProperty("mainImage", sourcePropertyValue);
// Save the changes
session.save();
response.getWriter().write("Property value copied successfully");
}
}