what is the best alternative RequestResponseFactory as its deprecated | Community
Skip to main content
Level 4
November 4, 2024

what is the best alternative RequestResponseFactory as its deprecated

  • November 4, 2024
  • 3 replies
  • 910 views

In the below code there is use of RequestResponseFactory to generate the Html output, I would like to refactor the code as its deprecated now.

 

also HttpServletRequest httpRequest passed to this method its also using requestResponseFacotry in the servlet who call the below method:

HttpServletRequest httpRequest = requestResponseFacotry.createRequest(HttpConstants.METHOD_GET, url); 

 

public static String fetchHtmlContent(HttpServletRequest httpRequest, ResourceResolver resolver,
RequestResponseFactory requestResponseFactory, SlingRequestProcessor requestProcessor) {
String htmlContentAsString = null;
WCMMode.DISABLED.toRequest(httpRequest);
try (ByteArrayOutputStream htmlByteArrayOutputStream = new ByteArrayOutputStream(); ) {
HttpServletResponse response = requestResponseFactory.createResponse(htmlByteArrayOutputStream);
requestProcessor.processRequest(httpRequest, response, resolver);
response.getWriter().flush();
htmlContent = htmlByteArrayOutputStream.toString(UTF_8);
}
catch (ServletException | IOException e) {
LOG.error("not able not generate HTML content '{}' ", e.getMessage());
}
return htmlContentAsString;
}

currently i'm facing challenge to replace RequestResponseFactory.
Could anyone had face this challenge or any solution without changing solution?

3 replies

h_kataria
Community Advisor
Community Advisor
November 4, 2024
Level 4
November 4, 2024

Thanks @h_kataria , SlingInternalRequest is an internal API. Using it is not generally recommended for production.

MayurSatav
Community Advisor and Adobe Champion
Community Advisor and Adobe Champion
November 4, 2024
Level 4
November 4, 2024

Hello @mayursatav , Yes, but not helpful. As there is no org.apache.sling.api.request.RequestResponseFactory interface exist.

Adobe Employee
September 15, 2025

https://sling.apache.org/documentation/bundles/servlet-helpers.html#internalrequest-helpers is not production safe instead use SlingRequestProcessor.

 

.... import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.request.builder.Builders; import org.apache.sling.api.request.builder.SlingHttpServletResponseResult; import org.apache.sling.engine.SlingRequestProcessor; .... /** The sling processor. */ @Reference private SlingRequestProcessor slingProcessor; ..... // Build synthetic Sling request SlingHttpServletRequest slingRequest = Builders.newRequestBuilder(targetResource) .withExtension("html") .withSelectors("test") .withParameter("wcmmode", "disabled") .withRequestMethod("GET").build(); SlingHttpServletResponseResult responseResult = Builders.newResponseBuilder().build(); // Process the request slingProcessor.processRequest(slingRequest, responseResult, resolver); String res = responseResult.getOutputAsString();