TesteServlet.java
unknown
java
2 years ago
3.5 kB
17
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