Class RPCServletUtils
java.lang.Object
com.google.gwt.user.server.rpc.jakarta.RPCServletUtils
Utility class containing helper methods used by servlets that integrate with
the RPC system.
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanacceptsGzipEncoding(jakarta.servlet.http.HttpServletRequest request) Returnstrueif theHttpServletRequestaccepts Gzip encoding.static booleanReturnstrueif the response content's estimated UTF-8 byte length exceeds 256 bytes.static CharsetgetCharset(String encoding) Get the Charset for a named character set.static booleanisExpectedException(Method serviceIntfMethod, Throwable cause) Returns true if theMethoddefinition on the service is specified to throw the exception contained in the InvocationTargetException or false otherwise.static StringreadContent(jakarta.servlet.http.HttpServletRequest request, String expectedContentType, String expectedCharSet) Returns the content of anHttpServletRequestby decoding it usingexpectedCharSet, orUTF-8ifexpectedCharSetisnull.static StringreadContentAsGwtRpc(jakarta.servlet.http.HttpServletRequest request) Returns the content of anHttpServletRequest, after verifying agwt/x-gwt-rpc; charset=utf-8content type.static StringreadContentAsUtf8(jakarta.servlet.http.HttpServletRequest request) Deprecated.static StringreadContentAsUtf8(jakarta.servlet.http.HttpServletRequest request, boolean checkHeaders) Deprecated.static voidsetGzipEncodingHeader(jakarta.servlet.http.HttpServletResponse response) Sets the correct header to indicate that a response is gzipped.static booleanshouldGzipResponseContent(jakarta.servlet.http.HttpServletRequest request, String responseContent) Returnstrueif the request accepts gzip encoding and the response content's estimated UTF-8 byte length exceeds 256 bytes.static voidwriteResponse(jakarta.servlet.ServletContext servletContext, jakarta.servlet.http.HttpServletResponse response, String responseContent, boolean gzipResponse) Write the response content into theHttpServletResponse.static voidwriteResponseForUnexpectedFailure(jakarta.servlet.ServletContext servletContext, jakarta.servlet.http.HttpServletResponse response, Throwable failure) Called when the servlet itself has a problem, rather than the invoked third-party method.
-
Field Details
-
CHARSET_UTF8_NAME
- See Also:
-
-
CHARSET_UTF8
Deprecated.
The UTF-8 Charset.
Deprecated: please use StandardCharsets.UTF_8 instead.
-
BUFFER_SIZE
static final int BUFFER_SIZE
Package protected for use in tests.
- See Also:
-
-
Method Details
-
acceptsGzipEncoding
public static boolean acceptsGzipEncoding(jakarta.servlet.http.HttpServletRequest request)
Returns true if the HttpServletRequest accepts Gzip
encoding. This is done by checking that the accept-encoding header
specifies gzip as a supported encoding.
- Parameters:
request - the request instance to test for gzip encoding acceptance
- Returns:
true if the HttpServletRequest accepts Gzip
encoding
-
exceedsUncompressedContentLengthLimit
Returns true if the response content's estimated UTF-8 byte
length exceeds 256 bytes.
- Parameters:
content - the contents of the response
- Returns:
true if the response content's estimated UTF-8 byte
length exceeds 256 bytes
-
getCharset
Get the Charset for a named character set. Caches Charsets to work around
a concurrency bottleneck in FastCharsetProvider.
See http://code.google.com/p/google-web-toolkit/issues/detail?id=6398
- Parameters:
encoding - the name of the Charset to get. If this is null
the default UTF-8 character set will be returned.
- Returns:
- the named Charset.
-
isExpectedException
Returns true if the Method definition on
the service is specified to throw the exception contained in the
InvocationTargetException or false otherwise. NOTE we do not check that the
type is serializable here. We assume that it must be otherwise the
application would never have been allowed to run.
- Parameters:
serviceIntfMethod - the method from the RPC request
cause - the exception that the method threw
- Returns:
- true if the exception's type is in the method's signature
-
readContent
public static String readContent(jakarta.servlet.http.HttpServletRequest request,
String expectedContentType,
String expectedCharSet)
throws IOException,
jakarta.servlet.ServletException
Returns the content of an HttpServletRequest by decoding it using
expectedCharSet, or UTF-8 if
expectedCharSet is null.
- Parameters:
request - the servlet request whose content we want to read
expectedContentType - the expected content (i.e. 'type/subtype' only)
in the Content-Type request header, or null if no
validation is to be performed, and you are willing to allow for
some types of cross type security attacks
expectedCharSet - the expected request charset, or null
if no charset validation is to be performed and UTF-8
should be assumed
- Returns:
- the content of an
HttpServletRequest by decoding it using
expectedCharSet, or UTF-8 if
expectedCharSet is null
- Throws:
IOException - if the request's input stream cannot be accessed, read
from or closed
jakarta.servlet.ServletException - if the request's content type does not
equal the supplied expectedContentType or
expectedCharSet
-
readContentAsGwtRpc
public static String readContentAsGwtRpc(jakarta.servlet.http.HttpServletRequest request)
throws IOException,
jakarta.servlet.ServletException
Returns the content of an HttpServletRequest, after verifying a
gwt/x-gwt-rpc; charset=utf-8 content type.
- Parameters:
request - the servlet request whose content we want to read
- Returns:
- the content of an
HttpServletRequest by decoding it using
UTF-8
- Throws:
IOException - if the request's input stream cannot be accessed, read
from or closed
jakarta.servlet.ServletException - if the request's content type is not
gwt/x-gwt-rpc; charset=utf-8, ignoring case
-
readContentAsUtf8
@Deprecated
public static String readContentAsUtf8(jakarta.servlet.http.HttpServletRequest request)
throws IOException,
jakarta.servlet.ServletException
Deprecated.
Returns the content of an HttpServletRequest by decoding it using
the UTF-8 charset.
- Parameters:
request - the servlet request whose content we want to read
- Returns:
- the content of an
HttpServletRequest by decoding it using
the UTF-8 charset
- Throws:
IOException - if the requests input stream cannot be accessed, read
from or closed
jakarta.servlet.ServletException - if the content length of the request is not
specified of if the request's content type is not
'text/x-gwt-rpc' and 'charset=utf-8'
-
readContentAsUtf8
@Deprecated
public static String readContentAsUtf8(jakarta.servlet.http.HttpServletRequest request,
boolean checkHeaders)
throws IOException,
jakarta.servlet.ServletException
Deprecated.
Returns the content of an HttpServletRequest by decoding it using
the UTF-8 charset.
- Parameters:
request - the servlet request whose content we want to read
checkHeaders - Specify 'true' to check the Content-Type header to see
that it matches the expected value 'text/x-gwt-rpc' and the
content encoding is UTF-8. Disabling this check may allow some
types of cross type security attacks.
- Returns:
- the content of an
HttpServletRequest by decoding it using
the UTF-8 charset
- Throws:
IOException - if the requests input stream cannot be accessed, read
from or closed
jakarta.servlet.ServletException - if the content length of the request is not
specified of if the request's content type is not
'text/x-gwt-rpc' and 'charset=utf-8'
-
setGzipEncodingHeader
public static void setGzipEncodingHeader(jakarta.servlet.http.HttpServletResponse response)
Sets the correct header to indicate that a response is gzipped.
-
shouldGzipResponseContent
public static boolean shouldGzipResponseContent(jakarta.servlet.http.HttpServletRequest request,
String responseContent)
Returns true if the request accepts gzip encoding and the
response content's estimated UTF-8 byte length exceeds 256 bytes.
- Parameters:
request - the request associated with the response content
responseContent - a string that will be
- Returns:
true if the request accepts gzip encoding and the
response content's estimated UTF-8 byte length exceeds 256 bytes
-
writeResponse
public static void writeResponse(jakarta.servlet.ServletContext servletContext,
jakarta.servlet.http.HttpServletResponse response,
String responseContent,
boolean gzipResponse)
throws IOException
Write the response content into the HttpServletResponse. If
gzipResponse is true, the response content will
be gzipped prior to being written into the response.
- Parameters:
servletContext - servlet context for this response
response - response instance
responseContent - a string containing the response content
gzipResponse - if true the response content will be gzip
encoded before being written into the response
- Throws:
IOException - if reading, writing, or closing the response's output
stream fails
-
writeResponseForUnexpectedFailure
public static void writeResponseForUnexpectedFailure(jakarta.servlet.ServletContext servletContext,
jakarta.servlet.http.HttpServletResponse response,
Throwable failure)
Called when the servlet itself has a problem, rather than the invoked
third-party method. It writes a simple 500 message back to the client.
- Parameters:
servletContext -
response -
failure -
readContent(jakarta.servlet.http.HttpServletRequest, java.lang.String, java.lang.String)instead.