AEM Servlet Returning 204 on Publish
Hello all,
I have the following servlet I'm attempting to troubleshoot. Right now it's just written to return a 418 request
@Component(service = Servlet.class, immediate = true, property = { "name=" + UploadImageS3BucketServlet.NAME,
Constants.SERVICE_DESCRIPTION + "= " + UploadImageS3BucketServlet.DESCRIPTION,
"sling.servlet.methods=" + HttpConstants.METHOD_POST,
"sling.servlet.resourceTypes=" + UploadImageS3BucketServlet.RESOURCE_TYPES,
"sling.servlet.selectors=" + UploadImageS3BucketServlet.SELECTORS,
"sling.servlet.extensions=" + UploadImageS3BucketServlet.EXTENSIONS })
public class UploadImageS3BucketServlet extends SlingAllMethodsServlet {
static final String RESOURCE_TYPES = "sling/servlet/default";
static final String SELECTORS = "uploadimages3bucket";
static final String EXTENSIONS = "json";
static final String NAME = "Upload image to s3 bucket servlet";
static final String DESCRIPTION = "This servlet will handle the uploading of an image to an s3 bucket";
private static final Logger LOGGER = LoggerFactory.getLogger(UploadImageS3BucketServlet.class);
@Reference
private transient S3BucketService bucketService;
private String googleURL;
private String googleSecret;
@Activate
protected void activate(GoogleRecaptchaConfig config) {
LOGGER.info("********** ACTIVATING START UploadImageS3BucketServlet");
this.googleURL = config.getGoogleURL();
this.googleSecret = config.getSecret();
LOGGER.info("********** ACTIVATING END UploadImageS3BucketServlet");
}
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response)
throws ServletException, IOException {
LOGGER.info("*************************** Start of doPost inside UploadImageS3BucketServlet *******************************");
response.setContentType("application/json");
Gson gson = new Gson();
response.setStatus(418);
response.getWriter().write(gson.toJson("I am a teapot"));
if (true) {
return;
}
}
}
And here is how I'm calling the servlet on the frontend
const csrfToken = await Granite.csrf.refreshToken();
const requestData = {
method: 'POST',
headers: {
'CSRF-Token': csrfToken
},
body: formData
}
const pathwithoutextension = window.location.pathname.replace(/\.[^/.]+$/, '');
const postURL = pathwithoutextension + '.uploadimages3bucket.json';
const response = await fetch(postURL, requestData);
const data = await response.json();
This call works on author, it works when I setup everything (including dispatcher) on my local, but for some reason on publish it is always giving me a 204 No Content... in my logs I don't even see the log I'm logging under the @doPost method, leading me to believe my configurations are wrong somewhere. Has anyone dealt w/ this issue before? What settings should I have in my ui.config / dispatcher to ensure POST requests are allowed into the publisher?