Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

How to create content node from Java Servlet on AEM 6.3 ?

RobertBailey201
Level 4
Level 4

Hi All,

How can I create a new content node (or edit an existing content node) from a Java Servlet on AEM 6.3 ?

I have attached below the Servlet source code.

Thank you for your time and best regards.

--------

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.servlets.HttpConstants;

import org.apache.sling.api.servlets.SlingSafeMethodsServlet;

import org.osgi.framework.Constants;

import org.osgi.service.component.annotations.Component;

import javax.jcr.Node;

import javax.servlet.Servlet;

import javax.servlet.ServletException;

import java.io.IOException;

import java.io.PrintWriter;

@Component(service=Servlet.class,

           property={

                   Constants.SERVICE_DESCRIPTION + "=Simple Demo Servlet",

                   "sling.servlet.methods=" + HttpConstants.METHOD_GET,

                   "sling.servlet.paths="+ "/bin/TestCreateNodeServlet"

           })

public class TestCreateNodeServlet extends SlingSafeMethodsServlet

{

    private ResourceResolver resourceResolver;

    private Resource resource;

    private PrintWriter responseWriter;

    @Override

    protected void doGet(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException

    {

        try

        {

            response.setContentType("text/plain");

            resourceResolver = request.getResourceResolver();

            resource = request.getResource(); 

            responseWriter = response.getWriter();

           

            write("Version 2018-Sept-07.1");

            write(resourceResolver.toString());

            write(resource.toString());

           

            Node node = resource.adaptTo(Node.class);

            write(node.toString());

           

            //resourceResolver.create(arg0, arg1, arg2)

        }

        catch (final Exception e)

        {

            write("ERROR: " + e.getMessage() + " , " + e.getClass());

        }

    }

    /**

     * Write message to Response Writer.

     */

    private void write(final String message)

    {

        if (responseWriter != null)

        {

            responseWriter.println("TestCreateNodeServlet: " + message);

        }

    }

}

1 Accepted Solution
vipink2884359
Correct answer by
Level 2
Level 2

Use JCR API to perform the node addition/modification.

Also you can refer below discussion:

write to JCR from JSON data

Sample :

Resource resource = request.getResourceResolver().getResource("nodePath");

Session session = resource.adaptTo(Session.class);

Node node = session.getNode(resource.getPath());

            node.addNode("test");

            session.save();

            session.logout();

View solution in original post

2 Replies
Arun_Patidar
Community Advisor
Community Advisor

Hi,

Please use JCR NODE API to create/modify nodes using servlet.

Node (Content Repository for Java Technology API Version 2.0)

You can adapt to Node from request like below:

Resource resource = request.getResourceResolver().getResource("nodePath"); 

Node node = resource.adaptTo(Node.class);

vipink2884359
Correct answer by
Level 2
Level 2

Use JCR API to perform the node addition/modification.

Also you can refer below discussion:

write to JCR from JSON data

Sample :

Resource resource = request.getResourceResolver().getResource("nodePath");

Session session = resource.adaptTo(Session.class);

Node node = session.getNode(resource.getPath());

            node.addNode("test");

            session.save();

            session.logout();

View solution in original post