public interface NonExistingResourceServlet extends OptingServlet
OptingServlet.accepts(org.apache.sling.api.SlingHttpServletRequest) method the
implementing servlet must check if it will handle the given non-existing
path.
Please note: This is a temporary solution until Sling provides a built-in mechanism for this use case. Not to be used by client implementations!
This servlet will not be registered directly with Sling but rather with a
distinct dispatcher servlet that is registered for the GET, HEAD, POST and
PUT HTTP methods on the sling:nonexisting resource (
NonExistingDispatcherServlet).
To give a bit control over the order, set the standard OSGi property
service.ranking (Integer) on the servlet to define an integer
value for the order - the implementations with the highest number are called
first. The first servlet that returns true in its
OptingServlet.accepts(org.apache.sling.api.SlingHttpServletRequest) method will
handle the request.
Example code:
@scr.component metatype="false"
@scr.service interface="com.day.cq.commons.servlets.NonExistingResourceServlet"
@scr.property name="service.ranking" value="10" type="Integer"
@SuppressWarnings("serial")
public class TesterServlet extends SlingAllMethodsServlet implements NonExistingResourceServlet {
public boolean accepts(SlingHttpServletRequest request) {
// get non-existing path (incl. selectors and extension!)
String path = request.getResource().getPath();
// return true if this servlet can handle this path
return true;
}
@Override
protected void doGet(SlingHttpServletRequest request,
SlingHttpServletResponse response) throws ServletException,
IOException {
// handle actual GET request here
// ...
}
accepts