SLING-9512 - re-add separate checkStatus() method
3 files changed
tree: ef9b554dc66e0713267b6175114320df82bb8f79
  1. src/
  2. .asf.yaml
  3. .gitignore
  4. CODE_OF_CONDUCT.md
  5. CONTRIBUTING.md
  6. Jenkinsfile
  7. LICENSE
  8. pom.xml
  9. README.md
README.md

Build Status Test Status Maven Central JavaDocs License

Apache Sling Servlet Helpers

This module is part of the Apache Sling project.

It provides helper mock implementations of the SlingHttpServletRequest, SlingHttpServletRepsonse and related classes, along with helpers for internal Sling requests described below.

These helpers can be used for testing, like the Sling Mocks do.

They are also useful for executing internal requests, like in the GraphQL Core module which uses that technique to retrieve GraphQL schemas using the powerful Sling request processing mechanisms.

InternalRequest helpers

The InternalRequest class uses either a SlingRequestProcessor to execute internal requests using the full Sling request processing pipeline, or a ServletResolver to resolve and call a Servlet or Script directly.

The direct mode is more efficient but less faithful to the way HTTP requests are processed, as it bypasses all Servlet Filters, in particular.

In both cases, the standard Sling Servlet/Script resolution mechanism is used, which can be useful to execute scripts that are resolved based on the current resource type, for non-HTTP operations. Inventing HTTP method names for this is fine and allows for reusing this powerful resolution mechanism in other contexts.

Here's an example using this InternalRequest helper - see the test code for more.

OutputStream os = InternalRequest
  .servletRequest(resourceResolver, servletResolver, "/some/path")
  .withResourceType("website/article/news")
  .withResourceSuperType("website/article")
  .withSelectors("print", "a4")
  .withExtension("pdf")
  .execute()
  .checkStatus(200)
  .checkResponseContentType("application/pdf")
  .getResponse()
  .getOutputStream()