TesteServlet.java
unknown
java
a year ago
3.5 kB
13
Indexable
package com.trilha03.core.servlets; import com.trilha03.core.models.ModelTeste; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.servlets.SlingAllMethodsServlet; import org.apache.sling.models.factory.ModelFactory; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Component(immediate = true, service = javax.servlet.Servlet.class, property = { "sling.servlet.methods=" + "POST", "sling.servlet.paths=" + "/bin/TesteServlet", "sling.servlet.extensions=" + "json" }) public class TesteServlet extends SlingAllMethodsServlet { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(TesteServlet.class); @Reference private ModelFactory modelFactory; @Override protected void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException { // Extracts data directly from parameters, avoiding premature reading of the request body String name = request.getParameter("name"); String ageParam = request.getParameter("age"); String componentPath = request.getParameter("componentPath"); // Parameter name // Validation of the age parameter int age; try { age = Integer.parseInt(ageParam); } catch (NumberFormatException e) { handleBadRequest(response, "Invalid age parameter. Provide a valid integer."); return; } // Gets the target resource based on the provided component path Resource componentResource = request.getResourceResolver().getResource(componentPath); // Checks if the component resource was found if (componentResource == null) { LOG.error("Component resource not found for the path: {}", componentPath); handleBadRequest(response, "Component resource not found."); return; } // Adapts the component resource to ModelTeste using the ModelFactory ModelTeste modelTeste = modelFactory.createModel(componentResource, ModelTeste.class); // Updates the properties of ModelTeste modelTeste.setNome(name); // Updated method name modelTeste.setIdade(age); // Updated method age // Confirms the changes try { modelTeste.updateProperties(); LOG.info("AEM node properties updated successfully."); response.getWriter().write("AEM node properties updated successfully."); } catch (Exception e) { LOG.error("Error updating AEM node properties: {}", e); handleServerError(response, "Error updating AEM node properties."); } } private void handleBadRequest(SlingHttpServletResponse response, String message) throws IOException { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); response.getWriter().write(message); } private void handleServerError(SlingHttpServletResponse response, String message) throws IOException { response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); response.getWriter().write(message); } }
Editor is loading...
Leave a Comment