public class SlingSafeMethodsServlet
extends javax.servlet.GenericServlet
 If any of the default HTTP methods is to be implemented just overwrite the
 respective doXXX method. If additional methods should be supported implement
 appropriate doXXX methods and overwrite the
 mayService(SlingHttpServletRequest, SlingHttpServletResponse) method
 to dispatch to the doXXX methods as appropriate and overwrite the
 getAllowedRequestMethods(Map) to add the new method names.
 
 Please note, that this base class is intended for applications where data is
 only read. As such, this servlet by itself does not support the POST,
 PUT and DELETE methods. Extensions of this class should
 either overwrite any of the doXXX methods of this class or add support for
 other read-only methods only. Applications wishing to support data
 modification should rather use or extend the SlingAllMethodsServlet
 which also contains support for the POST, PUT and
 DELETE methods. This latter class should also be overwritten to
 add support for HTTP methods modifying data.
 
Implementors note: The methods in this class are all declared to throw the exceptions according to the intentions of the Servlet API rather than throwing their Sling RuntimeException counter parts. This is done to ease the integration with traditional servlets.
SlingAllMethodsServlet, 
Serialized Form| Constructor and Description | 
|---|
SlingSafeMethodsServlet()  | 
| Modifier and Type | Method and Description | 
|---|---|
protected void | 
doGeneric(@NotNull SlingHttpServletRequest request,
         @NotNull SlingHttpServletResponse response)
Called by the  
service(SlingHttpServletRequest, SlingHttpServletResponse)
 method to handle a request for an HTTP method, which is not known and
 handled by this class or its extension. | 
protected void | 
doGet(@NotNull SlingHttpServletRequest request,
     @NotNull SlingHttpServletResponse response)
Called by the
  
mayService(SlingHttpServletRequest, SlingHttpServletResponse) method to
 handle an HTTP GET request. | 
protected void | 
doHead(@NotNull SlingHttpServletRequest request,
      @NotNull SlingHttpServletResponse response)
Handles the HEAD method. 
 | 
protected void | 
doOptions(@NotNull SlingHttpServletRequest request,
         @NotNull SlingHttpServletResponse response)
Handles the OPTIONS method by setting the HTTP
  
Allow header on the response depending on the methods
 declared in this class. | 
protected void | 
doTrace(@NotNull SlingHttpServletRequest request,
       @NotNull SlingHttpServletResponse response)
Handles the TRACE method by just returning the list of all
 header values in the response body. 
 | 
protected java.lang.StringBuffer | 
getAllowedRequestMethods(java.util.Map<java.lang.String,java.lang.reflect.Method> declaredMethods)
Helper method called by
  
doOptions(SlingHttpServletRequest, SlingHttpServletResponse) to calculate
 the value of the Allow header sent as the response to the HTTP
 OPTIONS request. | 
@NotNull java.lang.String | 
getServletInfo()
Returns the simple class name of this servlet class. 
 | 
protected void | 
handleMethodNotImplemented(@NotNull SlingHttpServletRequest request,
                          @NotNull SlingHttpServletResponse response)
Helper method which causes an appropriate HTTP response to be sent for an
 unhandled HTTP request method. 
 | 
protected boolean | 
mayService(@NotNull SlingHttpServletRequest request,
          @NotNull SlingHttpServletResponse response)
Tries to handle the request by calling a Java method implemented for the
 respective HTTP request method. 
 | 
void | 
service(@NotNull javax.servlet.ServletRequest req,
       @NotNull javax.servlet.ServletResponse res)
Forwards the request to the
  
service(SlingHttpServletRequest, SlingHttpServletResponse)
 method if the request is a HTTP request. | 
protected void | 
service(@NotNull SlingHttpServletRequest request,
       @NotNull SlingHttpServletResponse response)
Called by the  
service(ServletRequest, ServletResponse) method to
 handle the HTTP request. | 
protected void doHead(@NotNull
                      @NotNull SlingHttpServletRequest request,
                      @NotNull
                      @NotNull SlingHttpServletResponse response)
               throws javax.servlet.ServletException,
                      java.io.IOException
 This base implementation just calls the
 doGet(SlingHttpServletRequest, SlingHttpServletResponse) method dropping
 the output. Implementations of this class may overwrite this method if
 they have a more performing implementation. Otherwise, they may just keep
 this base implementation.
request - The HTTP requestresponse - The HTTP response which only gets the headers setjavax.servlet.ServletException - Forwarded from the
             doGet(SlingHttpServletRequest, SlingHttpServletResponse)
             method called by this implementation.java.io.IOException - Forwarded from the
             doGet(SlingHttpServletRequest, SlingHttpServletResponse)
             method called by this implementation.protected void doGet(@NotNull
                     @NotNull SlingHttpServletRequest request,
                     @NotNull
                     @NotNull SlingHttpServletResponse response)
              throws javax.servlet.ServletException,
                     java.io.IOException
mayService(SlingHttpServletRequest, SlingHttpServletResponse) method to
 handle an HTTP GET request.
 This default implementation reports back to the client that the method is not supported.
Implementations of this class should overwrite this method with their implementation for the HTTP GET method support.
request - The HTTP requestresponse - The HTTP responsejavax.servlet.ServletException - Not thrown by this implementation.java.io.IOException - If the error status cannot be reported back to the
             client.protected void doOptions(@NotNull
                         @NotNull SlingHttpServletRequest request,
                         @NotNull
                         @NotNull SlingHttpServletResponse response)
                  throws javax.servlet.ServletException,
                         java.io.IOException
Allow header on the response depending on the methods
 declared in this class.
 
 Extensions of this class should generally not overwrite this method but
 rather the getAllowedRequestMethods(Map) method. This method
 gathers all declared public and protected methods for the concrete class
 (upto but not including this class) and calls the
 getAllowedRequestMethods(Map) method with the methods gathered.
 The returned value is then used as the value of the Allow
 header set.
request - The HTTP request object. Not used.response - The HTTP response object on which the header is set.javax.servlet.ServletException - Not thrown by this implementation.java.io.IOException - Not thrown by this implementation.protected void doTrace(@NotNull
                       @NotNull SlingHttpServletRequest request,
                       @NotNull
                       @NotNull SlingHttpServletResponse response)
                throws javax.servlet.ServletException,
                       java.io.IOException
Extensions of this class do not generally need to overwrite this method as it contains all there is to be done to the TRACE method.
request - The HTTP request whose headers are returned.response - The HTTP response into which the request headers are
            written.javax.servlet.ServletException - Not thrown by this implementation.java.io.IOException - May be thrown if there is an problem sending back the
             request headers in the response stream.protected void doGeneric(@NotNull
                         @NotNull SlingHttpServletRequest request,
                         @NotNull
                         @NotNull SlingHttpServletResponse response)
                  throws javax.servlet.ServletException,
                         java.io.IOException
service(SlingHttpServletRequest, SlingHttpServletResponse)
 method to handle a request for an HTTP method, which is not known and
 handled by this class or its extension.
 This default implementation reports back to the client that the method is not supported.
 This method should be overwritten with great care. It is better to
 overwrite the
 mayService(SlingHttpServletRequest, SlingHttpServletResponse) method and
 add support for any extension HTTP methods through an additional doXXX
 method.
request - The HTTP requestresponse - The HTTP responsejavax.servlet.ServletException - Not thrown by this implementation.java.io.IOException - If the error status cannot be reported back to the
             client.protected boolean mayService(@NotNull
                             @NotNull SlingHttpServletRequest request,
                             @NotNull
                             @NotNull SlingHttpServletResponse response)
                      throws javax.servlet.ServletException,
                             java.io.IOException
 This base class implentation dispatches the HEAD,
 GET, OPTIONS and TRACE to the
 respective doXXX methods and returns true if
 any of these methods is requested. Otherwise false is just
 returned.
 
 Implementations of this class may overwrite this method but should first
 call this base implementation and in case false is
 returned add handling for any other method and of course return whether
 the requested method was known or not.
request - The HTTP requestresponse - The HTTP responsetrue if the requested method (request.getMethod())
         is known. Otherwise false is returned.javax.servlet.ServletException - Forwarded from any of the dispatched methodsjava.io.IOException - Forwarded from any of the dispatched methodsprotected void handleMethodNotImplemented(@NotNull
                                          @NotNull SlingHttpServletRequest request,
                                          @NotNull
                                          @NotNull SlingHttpServletResponse response)
                                   throws java.io.IOException
request - The HTTP request from which the method and protocol values
            are extracted to build the appropriate message.response - The HTTP response to which the error status is sent.java.io.IOException - Thrown if the status cannot be sent to the client.protected void service(@NotNull
                       @NotNull SlingHttpServletRequest request,
                       @NotNull
                       @NotNull SlingHttpServletResponse response)
                throws javax.servlet.ServletException,
                       java.io.IOException
service(ServletRequest, ServletResponse) method to
 handle the HTTP request. This implementation calls the
 mayService(SlingHttpServletRequest, SlingHttpServletResponse) method and
 depedending on its return value call the
 doGeneric(SlingHttpServletRequest, SlingHttpServletResponse) method. If
 the mayService(SlingHttpServletRequest, SlingHttpServletResponse) method
 can handle the request, the
 doGeneric(SlingHttpServletRequest, SlingHttpServletResponse) method is not
 called otherwise it is called.
 
 Implementations of this class should not generally overwrite this method.
 Rather the mayService(SlingHttpServletRequest, SlingHttpServletResponse)
 method should be overwritten to add support for more HTTP methods.
request - The HTTP requestresponse - The HTTP responsejavax.servlet.ServletException - Forwarded from the
             mayService(SlingHttpServletRequest, SlingHttpServletResponse)
             or
             doGeneric(SlingHttpServletRequest, SlingHttpServletResponse)
             methods.java.io.IOException - Forwarded from the
             mayService(SlingHttpServletRequest, SlingHttpServletResponse)
             or
             doGeneric(SlingHttpServletRequest, SlingHttpServletResponse)
             methods.public void service(@NotNull
                    @NotNull javax.servlet.ServletRequest req,
                    @NotNull
                    @NotNull javax.servlet.ServletResponse res)
             throws javax.servlet.ServletException,
                    java.io.IOException
service(SlingHttpServletRequest, SlingHttpServletResponse)
 method if the request is a HTTP request.
 Implementations of this class will not generally overwrite this method.
service in interface javax.servlet.Servletservice in class javax.servlet.GenericServletreq - The Servlet requestres - The Servlet responsejavax.servlet.ServletException - If the request is not a HTTP request or
             forwarded from the
             service(SlingHttpServletRequest, SlingHttpServletResponse)
             called.java.io.IOException - Forwarded from the
             service(SlingHttpServletRequest, SlingHttpServletResponse)
             called.@NotNull public @NotNull java.lang.String getServletInfo()
getServletInfo in interface javax.servlet.ServletgetServletInfo in class javax.servlet.GenericServletprotected java.lang.StringBuffer getAllowedRequestMethods(java.util.Map<java.lang.String,java.lang.reflect.Method> declaredMethods)
doOptions(SlingHttpServletRequest, SlingHttpServletResponse) to calculate
 the value of the Allow header sent as the response to the HTTP
 OPTIONS request.
 This base class implementation checks whether any doXXX methods exist for GET and HEAD and returns the list of methods supported found. The list returned always includes the HTTP OPTIONS and TRACE methods.
 Implementations of this class may overwrite this method check for more
 methods supported by the extension (generally the same list as used in
 the mayService(SlingHttpServletRequest, SlingHttpServletResponse) method).
 This base class implementation should always be called to make sure the
 default HTTP methods are included in the list.
declaredMethods - The public and protected methods declared in the
            extension of this class.StringBuffer containing the list of HTTP methods
         supported.Copyright © 2022 The Apache Software Foundation. All rights reserved.