Class ServletUtils


  • public final class ServletUtils
    extends java.lang.Object
    Common utility functions for servlets.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ATTRIBUTE_HANDLER
      Request attribute storing either UploadPack or ReceivePack.
      static java.lang.String ATTRIBUTE_REPOSITORY
      Request attribute which stores the Repository instance.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      private ServletUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      (package private) static boolean acceptsGzipEncoding​(java.lang.String accepts)  
      (package private) static boolean acceptsGzipEncoding​(javax.servlet.http.HttpServletRequest req)  
      private static byte[] compress​(byte[] raw)  
      static void consumeRequestBody​(java.io.InputStream in)
      Consume the rest of the input stream and discard it.
      static void consumeRequestBody​(javax.servlet.http.HttpServletRequest req)
      Consume the entire request body, if one was supplied.
      private static java.lang.String etag​(byte[] content)  
      static java.io.InputStream getInputStream​(javax.servlet.http.HttpServletRequest req)
      Open the request input stream, automatically inflating if necessary.
      static Repository getRepository​(javax.servlet.ServletRequest req)
      Get the selected repository from the request.
      (package private) static java.lang.String identify​(Repository git)  
      (package private) static boolean isChunked​(javax.servlet.http.HttpServletRequest req)  
      static void send​(byte[] content, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse rsp)
      Send a response to a GET or HEAD HTTP request.
      private static byte[] sendInit​(byte[] content, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse rsp)  
      static void sendPlainText​(java.lang.String content, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse rsp)
      Send a plain text response to a GET or HEAD HTTP request.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • ATTRIBUTE_REPOSITORY

        public static final java.lang.String ATTRIBUTE_REPOSITORY
        Request attribute which stores the Repository instance.
        See Also:
        Constant Field Values
      • ATTRIBUTE_HANDLER

        public static final java.lang.String ATTRIBUTE_HANDLER
        Request attribute storing either UploadPack or ReceivePack.
        See Also:
        Constant Field Values
    • Constructor Detail

      • ServletUtils

        private ServletUtils()
    • Method Detail

      • getRepository

        public static Repository getRepository​(javax.servlet.ServletRequest req)
        Get the selected repository from the request.
        Parameters:
        req - the current request.
        Returns:
        the repository; never null.
        Throws:
        java.lang.IllegalStateException - the repository was not set by the filter, the servlet is being invoked incorrectly and the programmer should ensure the filter runs before the servlet.
        See Also:
        ATTRIBUTE_REPOSITORY
      • getInputStream

        public static java.io.InputStream getInputStream​(javax.servlet.http.HttpServletRequest req)
                                                  throws java.io.IOException
        Open the request input stream, automatically inflating if necessary.

        This method automatically inflates the input stream if the request Content-Encoding header was set to gzip or the legacy x-gzip.

        Parameters:
        req - the incoming request whose input stream needs to be opened.
        Returns:
        an input stream to read the raw, uncompressed request body.
        Throws:
        java.io.IOException - if an input or output exception occurred.
      • consumeRequestBody

        public static void consumeRequestBody​(javax.servlet.http.HttpServletRequest req)
        Consume the entire request body, if one was supplied.
        Parameters:
        req - the request whose body must be consumed.
      • isChunked

        static boolean isChunked​(javax.servlet.http.HttpServletRequest req)
      • consumeRequestBody

        public static void consumeRequestBody​(java.io.InputStream in)
        Consume the rest of the input stream and discard it.
        Parameters:
        in - the stream to discard, closed if not null.
      • sendPlainText

        public static void sendPlainText​(java.lang.String content,
                                         javax.servlet.http.HttpServletRequest req,
                                         javax.servlet.http.HttpServletResponse rsp)
                                  throws java.io.IOException
        Send a plain text response to a GET or HEAD HTTP request.

        The text response is encoded in the Git character encoding, UTF-8.

        If the user agent supports a compressed transfer encoding and the content is large enough, the content may be compressed before sending.

        The ETag and Content-Length headers are automatically set by this method. Content-Encoding is conditionally set if the user agent supports a compressed transfer. Callers are responsible for setting any cache control headers.

        Parameters:
        content - to return to the user agent as this entity's body.
        req - the incoming request.
        rsp - the outgoing response.
        Throws:
        java.io.IOException - the servlet API rejected sending the body.
      • send

        public static void send​(byte[] content,
                                javax.servlet.http.HttpServletRequest req,
                                javax.servlet.http.HttpServletResponse rsp)
                         throws java.io.IOException
        Send a response to a GET or HEAD HTTP request.

        If the user agent supports a compressed transfer encoding and the content is large enough, the content may be compressed before sending.

        The ETag and Content-Length headers are automatically set by this method. Content-Encoding is conditionally set if the user agent supports a compressed transfer. Callers are responsible for setting Content-Type and any cache control headers.

        Parameters:
        content - to return to the user agent as this entity's body.
        req - the incoming request.
        rsp - the outgoing response.
        Throws:
        java.io.IOException - the servlet API rejected sending the body.
      • sendInit

        private static byte[] sendInit​(byte[] content,
                                       javax.servlet.http.HttpServletRequest req,
                                       javax.servlet.http.HttpServletResponse rsp)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • acceptsGzipEncoding

        static boolean acceptsGzipEncoding​(javax.servlet.http.HttpServletRequest req)
      • acceptsGzipEncoding

        static boolean acceptsGzipEncoding​(java.lang.String accepts)
      • compress

        private static byte[] compress​(byte[] raw)
                                throws java.io.IOException
        Throws:
        java.io.IOException
      • etag

        private static java.lang.String etag​(byte[] content)
      • identify

        static java.lang.String identify​(Repository git)