public class SlingAllMethodsServlet extends SlingSafeMethodsServlet
SlingSafeMethodsServlet
by support for the POST,
PUT and DELETE methods.
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 easy the integration with traditional servlets.
Constructor and Description |
---|
SlingAllMethodsServlet() |
Modifier and Type | Method and Description |
---|---|
protected void |
doDelete(@NotNull SlingHttpServletRequest request,
@NotNull SlingHttpServletResponse response)
Called by the
mayService(SlingHttpServletRequest, SlingHttpServletResponse) method to
handle an HTTP DELETE request. |
protected void |
doPost(@NotNull SlingHttpServletRequest request,
@NotNull SlingHttpServletResponse response)
Called by the
mayService(SlingHttpServletRequest, SlingHttpServletResponse) method to
handle an HTTP POST request. |
protected void |
doPut(@NotNull SlingHttpServletRequest request,
@NotNull SlingHttpServletResponse response)
Called by the
mayService(SlingHttpServletRequest, SlingHttpServletResponse) method to
handle an HTTP PUT request. |
protected @NotNull java.lang.StringBuffer |
getAllowedRequestMethods(@NotNull java.util.Map<java.lang.String,java.lang.reflect.Method> declaredMethods)
Helper method called by
SlingSafeMethodsServlet.doOptions(SlingHttpServletRequest, SlingHttpServletResponse) to calculate
the value of the Allow header sent as the response to the HTTP
OPTIONS request. |
protected boolean |
isMethodValid(java.lang.reflect.Method method,
java.lang.String className)
Returns
true if method is not
null and the method is not defined in the class named by
className . |
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.
|
doGeneric, doGet, doHead, doOptions, doTrace, getServletInfo, handleMethodNotImplemented, service, service
protected void doPost(@NotNull @NotNull SlingHttpServletRequest request, @NotNull @NotNull SlingHttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
mayService(SlingHttpServletRequest, SlingHttpServletResponse)
method to
handle an HTTP POST 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 POST 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 doPut(@NotNull @NotNull SlingHttpServletRequest request, @NotNull @NotNull SlingHttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
mayService(SlingHttpServletRequest, SlingHttpServletResponse)
method to
handle an HTTP PUT 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 PUT 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 doDelete(@NotNull @NotNull SlingHttpServletRequest request, @NotNull @NotNull SlingHttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
mayService(SlingHttpServletRequest, SlingHttpServletResponse)
method to
handle an HTTP DELETE 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 DELETE 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 boolean mayService(@NotNull @NotNull SlingHttpServletRequest request, @NotNull @NotNull SlingHttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException
This implementation first calls the base class implementation and only if
the base class cannot dispatch will try to dispatch the supported methods
POST, PUT and DELETE and returns
true
if any of these methods is requested. Otherwise
false
is just returned.
mayService
in class SlingSafeMethodsServlet
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 methods@NotNull protected @NotNull java.lang.StringBuffer getAllowedRequestMethods(@NotNull @NotNull java.util.Map<java.lang.String,java.lang.reflect.Method> declaredMethods)
SlingSafeMethodsServlet.doOptions(SlingHttpServletRequest, SlingHttpServletResponse)
to calculate
the value of the Allow header sent as the response to the HTTP
OPTIONS request.
This implementation overwrites the base class implementation adding support for the POST, PUT and DELETE methods in addition to the methods returned by the base class implementation.
getAllowedRequestMethods
in class SlingSafeMethodsServlet
declaredMethods
- The public and protected methods declared in the
extension of this class.StringBuffer
containing the list of HTTP methods
supported.protected boolean isMethodValid(java.lang.reflect.Method method, java.lang.String className)
true
if method
is not
null
and the method is not defined in the class named by
className
.
This method may be used to make sure a method is actually overwritten and not just the default implementation.
method
- The Method to checkclassName
- The name of class assumed to contained the initial
declaration of the method.true
if method
is not
null
and the methods declaring class is not the
given class.Copyright © 2018 The Apache Software Foundation. All rights reserved.