Interface ResponseRequestContextAddon<R extends RequestContext<?>>

All Known Implementing Classes:
SpincastResponseRequestContextAddon

public interface ResponseRequestContextAddon<R extends RequestContext<?>>
Methods to manipulate the response.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The placeholder to replace by the current cache buster when pushing a resource on HTTP/2.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addAlert(AlertLevel level, String message)
    Adds an Alert that is, in general, displayed at the top of the page to show the user an Error, a Warning or a confirmation message.
    void
    addForm(Form form)
    Adds a Form object to the response's model and links its validation messages to the default "validation" root element.
    void
    addForm(Form form, String validationElementName)
    Adds a Form object to the response's model and links its validation messages to the specified validation element.
    Adds a value to a response header.
    Adds a list of values to a response header.
    Creates a cookie using the given name (null value).
    void
    Deletes all cookies! Not only the new cookies that have been added to the response, but also the cookies that have been received in the request!
    void
    Deletes a cookie.
    void
    end()
    Flushes everything and closes the response.
    void
    Flushes the current response.
    void
    flush(boolean close)
    Flushes the current response.
    The charset to use to convert characters to bytes.
    The current Content-Type sent or to be send.
    Gets a cookie already added to the response, by its name.
    Gets the cookies already added to the response as a Map, using their names as the keys.
    The currently set gzip options.
    The values of a specific response header.
    The first value of a specific header.
    The currently set response headers.
    The JsonObject which serves as the model for the response.
    int
    The current status code sent or to be send.
    byte[]
    Gets the current unsent bytes (AKA the buffer).
    Gets the current unsent characters (AKA the buffer), using the UTF-8 encoding.
    Gets the current unsent characters (AKA the buffer), using the specified encoding.
    boolean
    Is the response closed? If so, nothing more can be sent...
    boolean
    Are the response headers sent? If this is the case, then the headers can't be changed anymore.
    push(HttpMethod httpMethod, String path, Map<String,List<String>> requestHeaders)
    If HTTP/2 is used, you can push extra resources at the same time you response to a request.
    void
    Sets a temporarily redirection header (302) to the current page.
    void
    redirect(String newUrl)
    Sets a temporarily redirection header (302).
    void
    redirect(String newUrl, boolean permanently)
    Sets a redirection header.
    void
    redirect(String newUrl, boolean permanently, FlashMessage flashMessage)
    Sets a redirection header, with a Flash message to display.
    void
    redirect(String newUrl, boolean permanently, FlashMessageLevel flashMessageType, String flashMessageText)
    Sets a redirection header, with a Flash message to display.
    void
    redirect(String newUrl, boolean permanently, FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
    Sets a redirection header, with a Flash message to display.
    void
    redirect(String newUrl, int specific3xxCode)
    Sets the redirection headers with a specified 3xx status code.
    void
    redirect(String newUrl, int specific3xxCode, FlashMessage flashMessage)
    Sets the redirection headers with a specified 3xx status code, and a Flash message to display.
    void
    redirect(String newUrl, int specific3xxCode, FlashMessageLevel flashMessageType, String flashMessageText)
    Sets the redirection headers with a specified 3xx status code, and a Flash message to display.
    void
    redirect(String newUrl, int specific3xxCode, FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
    Sets the redirection headers with a specified 3xx status code, and a Flash message to display.
    void
    redirect(String newUrl, FlashMessage flashMessage)
    Sets a temporarily redirection header (302), with a Flash message to display.
    void
    redirect(String newUrl, FlashMessageLevel flashMessageType, String flashMessageText)
    Sets a temporarily redirection header (302), with a Flash message to display.
    void
    redirect(String newUrl, FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
    Sets a temporarily redirection header (302), with a Flash message to display.
    void
    redirect(String newUrl, JsonObject flashMessageVariables)
    Sets a temporarily redirection header (302), with a Flash variables.
    void
    redirect(FlashMessage flashMessage)
    Sets a temporarily redirection header (302) to the current page, with a Flash message to display.
    void
    redirect(FlashMessageLevel flashMessageType, String flashMessageText)
    Sets a temporarily redirection header (302) to the current page, with a Flash message to display.
    void
    redirect(FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
    Sets a temporarily redirection header (302) to the current page, with a Flash message to display.
    Removes an header by its name.
    Clears the buffer (the unsent buffer, of course).
    Clears the buffer (the unsent buffer, of course!), resets the cookies, the headers, the Content-Type and sets the status code back to 200.
    resetEverything(boolean resetCookies)
    Clears the buffer (the unsent buffer, of course), the headers, the Content-Type and sets the status code back to 200.
    void
    sendBytes(byte[] bytes)
    Sends some bytes, without flushing.
    void
    sendBytes(byte[] bytes, String contentType)
    Sends some bytes using the specified Content-Type, without flushing.
    void
    sendBytes(byte[] bytes, String contentType, boolean flush)
    Sends some bytes using the specified Content-Type and flushes, if specified.
    void
    sendCharacters(String content, String contentType)
    Sends a String, using the encoding returned by getCharactersCharsetName and using the specified Content-Type, without flushing.
    void
    sendCharacters(String content, String contentType, boolean flush)
    Sends a String, using the encoding returned by getCharactersCharsetName and using the specified Content-Type.
    void
    Sends a String as text/html, UTF-8 encoded, without flushing.
    void
    sendHtml(String html, boolean flush)
    Sends a String as text/html, UTF-8 encoded, and flushes, if specified.
    void
    Sends the model as application/json, without flushing.
    void
    sendJson(boolean flush)
    Sends the model as application/json, and flushes, if specified.
    void
    Serializes the object to Json and sends as application/json, without flushing.
    void
    sendJson(Object obj, boolean flush)
    Serializes the object to Json, sends as application/json, and flushes, if specified.
    void
    sendJson(String jsonString)
    Sends a Json String using the application/json Content-Type, without flushing.
    void
    sendJson(String jsonString, boolean flush)
    Sends a Json String using the application/json Content-Type, and flushes, if specified.
    void
    sendParse(String content, String contentType)
    Parses the given String using the TemplatingEngine, then sends the result using the specified Content-Type, without flushing.
    void
    sendParse(String content, String contentType, boolean flush)
    Parses the given String using the TemplatingEngine, then sends the result using the specified Content-Type, and flushes, if specified.
    void
    Parses the given String using the TemplatingEngine and the given parameters, then sends the result as text/html, UTF-8 encoded.
    void
    sendParseHtml(String html, boolean flush)
    Parses the given String using the TemplatingEngine and the given parameters, then sends the result as text/html, UTF-8 encoded, and flushes, if specified.
    void
    Sends a String as text/plain, UTF-8 encoded, without flushing.
    void
    sendPlainText(String string, boolean flush)
    Sends a String as text/plain, UTF-8 encoded, and flushes, if specified.
    void
    sendTemplate(String templatePath, boolean isClasspathPath, String contentType)
    Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, without flushing.
    void
    sendTemplate(String templatePath, boolean isClasspathPath, String contentType, boolean flush)
    Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, and flushes, if specified.
    void
    sendTemplate(String templatePath, String contentType)
    Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, without flushing.
    void
    sendTemplate(String templatePath, String contentType, boolean flush)
    Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, and flushes, if specified.
    void
    sendTemplateHtml(String templatePath)
    Finds the HTML template using the TemplatingEngine, evaluates it using the model that have been added to the response, then sends the result as text/html, UTF-8 encoded, without flushing.
    void
    sendTemplateHtml(String templatePath, boolean isClasspathPath)
    Finds the HTML template using the TemplatingEngine, evaluates it using the given parameters, then sends the result as text/html, UTF-8 encoded.
    void
    sendTemplateHtml(String templatePath, boolean isClasspathPath, boolean flush)
    Finds the HTML template using the TemplatingEngine, evaluates it using the given parameters, then sends the result as text/html, UTF-8 encoded, and flushes, if specified.
    void
    Sends the model as application/xml, without flushing.
    void
    sendXml(boolean flush)
    Sends the model as application/xml, and flushes, if specified.
    void
    Serializes the object to XML and sends as application/xml, without flushing.
    void
    sendXml(Object obj, boolean flush)
    Serializes the object to XML, sends as application/xml, and flushes, if specified.
    void
    Sends some XML using the application/xml Content-Type, without flushing.
    void
    sendXml(String xml, boolean flush)
    Sends some XML using the application/xml Content-Type, and flushes, if specified.
    setCacheSeconds(int cacheSeconds)
    Adds caching headers.
    setCacheSeconds(int cacheSeconds, boolean isPrivateCache)
    Adds caching headers for the specified number of seconds.
    Sets the charset to use to convert characters to bytes.
    setContentType(String responseContentType)
    The Content-Type header to use for the response.
    void
    setCookie(String name, String value, int nbrSecondsToLive)
    Sets a cookie using the specified name, value and number of seconds to live.
    void
    setCookie(String name, String value, int nbrSecondsToLive, boolean httpOnly)
    Sets a cookie using the specified name, value, number of seconds to live and if it's http only.
    void
    setCookie(String name, String value, String path, String domain, Date expires, boolean secure, boolean httpOnly, CookieSameSite cookieSameSite, boolean discard, int version)
    Sets a cookie, using all available configurations.
    void
    setCookie(Cookie cookie)
    Sets a cookie.
    void
    Sets a permanent cookie (10 years) using the specified name and value.
    void
    Sets a permanent cookie (10 years) using the specified name and value.
    void
    Sets a permanent cookie (1 years) using the specified name and value.
    void
    Sets a permanent cookie (1 years) using the specified name and value.
    void
    Sets a cookie using the specified name and value.
    void
    Sets a cookie using the specified name and value.
    Enable or disable gzipping of the response.
    setHeader(String name, String value)
    Set the value to a response header.
    setHeader(String name, List<String> values)
    Set multiple values to a response header.
    void
    Replaces the current response model completely.
    setStatusCode(int statusCode)
    Sets the response's status code to use.
  • Field Details

    • RESOURCE_TO_PUSH_PLACEHOLDERS_CACHE_BUSTER

      static final String RESOURCE_TO_PUSH_PLACEHOLDERS_CACHE_BUSTER
      The placeholder to replace by the current cache buster when pushing a resource on HTTP/2.
      See Also:
  • Method Details

    • getModel

      JsonObject getModel()
      The JsonObject which serves as the model for the response. This object will be used by the templating engine or will be sent as is, often as an application/json response.

      This object is mutable.

    • setModel

      void setModel(JsonObject model)
      Replaces the current response model completely.

      Use getModel() instead to get the current model instance and add properties to it.

    • isClosed

      boolean isClosed()
      Is the response closed? If so, nothing more can be sent...
    • end

      void end()
      Flushes everything and closes the response. Nothing more can be sent after this (but the remaining route handlers will still be called).
    • isHeadersSent

      boolean isHeadersSent()
      Are the response headers sent? If this is the case, then the headers can't be changed anymore.
    • sendBytes

      void sendBytes(byte[] bytes)
      Sends some bytes, without flushing.
    • sendBytes

      void sendBytes(byte[] bytes, String contentType)
      Sends some bytes using the specified Content-Type, without flushing.
    • sendBytes

      void sendBytes(byte[] bytes, String contentType, boolean flush)
      Sends some bytes using the specified Content-Type and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
    • getCharactersCharsetName

      String getCharactersCharsetName()
      The charset to use to convert characters to bytes. Defaults to "UTF-8".
    • setCharactersCharsetName

      ResponseRequestContextAddon<R> setCharactersCharsetName(String name)
      Sets the charset to use to convert characters to bytes. Defaults to "UTF-8". Make sure you use the same charset here than the one that is sent as the "Content-Type" header (which is also "UTF-8" by default, if you send data using sendPlainText(), sendHtml() or sendJson()).
    • sendCharacters

      void sendCharacters(String content, String contentType)
      Sends a String, using the encoding returned by getCharactersCharsetName and using the specified Content-Type, without flushing.
    • sendCharacters

      void sendCharacters(String content, String contentType, boolean flush)
      Sends a String, using the encoding returned by getCharactersCharsetName and using the specified Content-Type. Flushes the response, if specified. Note that once the response is flushed, no header can be added or changed anymore.
    • sendPlainText

      void sendPlainText(String string)
      Sends a String as text/plain, UTF-8 encoded, without flushing.
    • sendPlainText

      void sendPlainText(String string, boolean flush)
      Sends a String as text/plain, UTF-8 encoded, and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
    • sendJson

      void sendJson()
      Sends the model as application/json, without flushing.
    • sendJson

      void sendJson(boolean flush)
      Sends the model as application/json, and flushes, if specified.

      Note that once the response is flushed, no header can be added or changed anymore.

    • sendJson

      void sendJson(String jsonString)
      Sends a Json String using the application/json Content-Type, without flushing.

      Synonym of : sendCharacters(jsonString, "application/json")

    • sendJson

      void sendJson(String jsonString, boolean flush)
      Sends a Json String using the application/json Content-Type, and flushes, if specified.

      Note that once the response is flushed, no header can be added or changed anymore.

      Synonym of : sendCharacters(jsonString, "application/json", flush)

    • sendJson

      void sendJson(Object obj)
      Serializes the object to Json and sends as application/json, without flushing.

      If the specified Object is a String, it will be considered as already being JSON and will be send as is.

    • sendJson

      void sendJson(Object obj, boolean flush)
      Serializes the object to Json, sends as application/json, and flushes, if specified.

      Note that once the response is flushed, no header can be added or changed anymore.

      If the specified Object is a String, it will be considered as already being JSON and will be send as is.

    • sendXml

      void sendXml()
      Sends the model as application/xml, without flushing.
    • sendXml

      void sendXml(boolean flush)
      Sends the model as application/xml, and flushes, if specified.

      Note that once the response is flushed, no header can be added or changed anymore.

    • sendXml

      void sendXml(String xml)
      Sends some XML using the application/xml Content-Type, without flushing.

      Synonym of : sendCharacters(xml, "application/xml")

    • sendXml

      void sendXml(String xml, boolean flush)
      Sends some XML using the application/xml Content-Type, and flushes, if specified.

      Note that once the response is flushed, no header can be added or changed anymore.

      Synonym of : sendCharacters(xml, "application/xml", flush)

    • sendXml

      void sendXml(Object obj)
      Serializes the object to XML and sends as application/xml, without flushing.

      If the specified Object is a String, it will be considered as already being XML and will be send as is.

    • sendXml

      void sendXml(Object obj, boolean flush)
      Serializes the object to XML, sends as application/xml, and flushes, if specified.

      Note that once the response is flushed, no header can be added or changed anymore.

      If the specified Object is a String, it will be considered as already being XML and will be send as is.

    • sendHtml

      void sendHtml(String html)
      Sends a String as text/html, UTF-8 encoded, without flushing.
    • sendHtml

      void sendHtml(String html, boolean flush)
      Sends a String as text/html, UTF-8 encoded, and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
    • sendParse

      void sendParse(String content, String contentType)
      Parses the given String using the TemplatingEngine, then sends the result using the specified Content-Type, without flushing.
    • sendParse

      void sendParse(String content, String contentType, boolean flush)
      Parses the given String using the TemplatingEngine, then sends the result using the specified Content-Type, and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
    • sendTemplateHtml

      void sendTemplateHtml(String templatePath)
      Finds the HTML template using the TemplatingEngine, evaluates it using the model that have been added to the response, then sends the result as text/html, UTF-8 encoded, without flushing.
      Parameters:
      templatePath - must be a classpath's relative path.
    • sendTemplateHtml

      void sendTemplateHtml(String templatePath, boolean isClasspathPath)
      Finds the HTML template using the TemplatingEngine, evaluates it using the given parameters, then sends the result as text/html, UTF-8 encoded.
      Parameters:
      isClasspathPath - if true, the 'templatePath' is considered as a classpath's relative path. If false, it is considered as an absolute file system path.
    • sendTemplateHtml

      void sendTemplateHtml(String templatePath, boolean isClasspathPath, boolean flush)
      Finds the HTML template using the TemplatingEngine, evaluates it using the given parameters, then sends the result as text/html, UTF-8 encoded, and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
      Parameters:
      isClasspathPath - if true, the 'templatePath' is considered as a classpath's relative path. If false, it is considered as an absolute file system path.
    • sendTemplate

      void sendTemplate(String templatePath, String contentType)
      Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, without flushing.
      Parameters:
      templatePath - must be a classpath's relative path.
    • sendTemplate

      void sendTemplate(String templatePath, String contentType, boolean flush)
      Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
      Parameters:
      templatePath - must be a classpath's relative path.
    • sendTemplate

      void sendTemplate(String templatePath, boolean isClasspathPath, String contentType)
      Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, without flushing.
      Parameters:
      isClasspathPath - if true, the 'templatePath' is considered as a classpath's relative path. If false, it is considered as an absolute file system path.
    • sendTemplate

      void sendTemplate(String templatePath, boolean isClasspathPath, String contentType, boolean flush)
      Finds the specified template using the TemplatingEngine, evaluates it using the given parameters, then sends the result using the given contentType, and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
      Parameters:
      isClasspathPath - if true, the 'templatePath' is considered as a classpath's relative path. If false, it is considered as an absolute file system path.
    • sendParseHtml

      void sendParseHtml(String html)
      Parses the given String using the TemplatingEngine and the given parameters, then sends the result as text/html, UTF-8 encoded.
    • sendParseHtml

      void sendParseHtml(String html, boolean flush)
      Parses the given String using the TemplatingEngine and the given parameters, then sends the result as text/html, UTF-8 encoded, and flushes, if specified. Note that once the response is flushed, no header can be added or changed anymore.
    • flush

      void flush()
      Flushes the current response. If not already specified, a default status code and Content-Type will be added. Note that once the response is flushed, no header can be added or changed anymore.
    • flush

      void flush(boolean close)
      Flushes the current response. If not already specified on the response, a default status code and content-type will be added. Note that once the response is flushed, no header can be added or changed anymore.
      Parameters:
      close - If true, the response will be closed and no more data can be sent. This has the same effect than calling end().
    • setStatusCode

      ResponseRequestContextAddon<R> setStatusCode(int statusCode)
      Sets the response's status code to use. Uses 200 by default. Note that this status code can be changed automatically if an exception is thrown.
    • getStatusCode

      int getStatusCode()
      The current status code sent or to be send.
    • setContentType

      ResponseRequestContextAddon<R> setContentType(String responseContentType)
      The Content-Type header to use for the response. Most sendXXX() methods will set this automatically.
    • getContentType

      String getContentType()
      The current Content-Type sent or to be send.
    • redirect

      void redirect()
      Sets a temporarily redirection header (302) to the current page.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

    • redirect

      void redirect(FlashMessage flashMessage)
      Sets a temporarily redirection header (302) to the current page, with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

    • redirect

      void redirect(FlashMessageLevel flashMessageType, String flashMessageText)
      Sets a temporarily redirection header (302) to the current page, with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

    • redirect

      void redirect(FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
      Sets a temporarily redirection header (302) to the current page, with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

    • redirect

      void redirect(String newUrl)
      Sets a temporarily redirection header (302).

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

    • redirect

      void redirect(String newUrl, FlashMessage flashMessage)
      Sets a temporarily redirection header (302), with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      flashMessage - A Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, FlashMessageLevel flashMessageType, String flashMessageText)
      Sets a temporarily redirection header (302), with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      flashMessageType - The type of a Flash Message to pass to the target page.
      flashMessageText - The text of a Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
      Sets a temporarily redirection header (302), with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      flashMessageType - The type of a Flash Message to pass to the target page.
      flashMessageText - The text of a Flash Message to pass to the target page.
      flashMessageVariables - The variables of a Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, JsonObject flashMessageVariables)
      Sets a temporarily redirection header (302), with a Flash variables.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      flashMessageVariables - The variables of a Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, boolean permanently)
      Sets a redirection header.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      permanently - If true, a 301 header will be sent. If false, 302 will be sent.
    • redirect

      void redirect(String newUrl, boolean permanently, FlashMessage flashMessage)
      Sets a redirection header, with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      permanently - If true, a 301 header will be sent. If false, 302 will be sent.
      flashMessage - A Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, boolean permanently, FlashMessageLevel flashMessageType, String flashMessageText)
      Sets a redirection header, with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      permanently - If true, a 301 header will be sent. If false, 302 will be sent.
      flashMessageType - The type of a Flash Message to pass to the target page.
      flashMessageText - The text of a Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, boolean permanently, FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
      Sets a redirection header, with a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      permanently - If true, a 301 header will be sent. If false, 302 will be sent.
      flashMessageType - The type of a Flash Message to pass to the target page.
      flashMessageText - The text of a Flash Message to pass to the target page.
      flashMessageVariables - The variables of a Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, int specific3xxCode)
      Sets the redirection headers with a specified 3xx status code.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

    • redirect

      void redirect(String newUrl, int specific3xxCode, FlashMessage flashMessage)
      Sets the redirection headers with a specified 3xx status code, and a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      flashMessage - A Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, int specific3xxCode, FlashMessageLevel flashMessageType, String flashMessageText)
      Sets the redirection headers with a specified 3xx status code, and a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      flashMessageType - The type of a Flash Message to pass to the target page.
      flashMessageText - The text of a Flash Message to pass to the target page.
    • redirect

      void redirect(String newUrl, int specific3xxCode, FlashMessageLevel flashMessageType, String flashMessageText, JsonObject flashMessageVariables)
      Sets the redirection headers with a specified 3xx status code, and a Flash message to display.

      This will NOT close the response and will NOT skip the remaining handlers! Throw a RedirectException instead if you want to redirect the user immediately.

      Parameters:
      flashMessageType - The type of a Flash Message to pass to the target page.
      flashMessageText - The text of a Flash Message to pass to the target page.
      flashMessageVariables - The variables of a Flash Message to pass to the target page.
    • addHeaderValue

      ResponseRequestContextAddon<R> addHeaderValue(String name, String value)
      Adds a value to a response header. If the header already has values, the new one is added. If the value is null, it won't be added.
    • addHeaderValues

      ResponseRequestContextAddon<R> addHeaderValues(String name, List<String> values)
      Adds a list of values to a response header. If the header already has values, the new ones are added. If the values are null, nothing will be added.
    • setHeader

      ResponseRequestContextAddon<R> setHeader(String name, String value)
      Set the value to a response header. If the header already exists, its current values are overwritten. If the value is null, the header will be removed (same behavior as removeHeader(String name))
    • setHeader

      ResponseRequestContextAddon<R> setHeader(String name, List<String> values)
      Set multiple values to a response header. If the header already exists, its current values are overwritten. If the lists is null or empty, the header will be removed (same behavior as removeHeader(String name))
    • removeHeader

      ResponseRequestContextAddon<R> removeHeader(String name)
      Removes an header by its name.
    • getHeaders

      Map<String,List<String>> getHeaders()
      The currently set response headers. The map is mutable! Also the returned implementation is a TreeMap with case insensitive keys.
    • getHeader

      List<String> getHeader(String name)
      The values of a specific response header. The list is mutable! The name is case insensitive. Returns an empty list if the header was not found.
    • getHeaderFirst

      String getHeaderFirst(String name)
      The first value of a specific header. The name is case insensitive. Returns null if the header is not found.
    • resetBuffer

      Clears the buffer (the unsent buffer, of course).
    • resetEverything

      ResponseRequestContextAddon<R> resetEverything()
      Clears the buffer (the unsent buffer, of course!), resets the cookies, the headers, the Content-Type and sets the status code back to 200.
    • resetEverything

      ResponseRequestContextAddon<R> resetEverything(boolean resetCookies)
      Clears the buffer (the unsent buffer, of course), the headers, the Content-Type and sets the status code back to 200.
      Parameters:
      resetCookies - if true, cookies that have been added on the current response will be reset too.
    • getUnsentBytes

      byte[] getUnsentBytes()
      Gets the current unsent bytes (AKA the buffer).
    • getUnsentCharacters

      String getUnsentCharacters()
      Gets the current unsent characters (AKA the buffer), using the UTF-8 encoding.
    • getUnsentCharacters

      String getUnsentCharacters(String encoding)
      Gets the current unsent characters (AKA the buffer), using the specified encoding.
    • setGzipOption

      ResponseRequestContextAddon<R> setGzipOption(GzipOption gzipOption)
      Enable or disable gzipping of the response. The default is GzipOption.DEFAULT which will gzip the response only for some Content-Types and only if a gzip 'Accept-Encoding' header has been received from the client.
    • getGzipOption

      GzipOption getGzipOption()
      The currently set gzip options.
    • setCacheSeconds

      ResponseRequestContextAddon<R> setCacheSeconds(int cacheSeconds)
      Adds caching headers.
      Parameters:
      seconds - the number of seconds this response should be cached.
    • setCacheSeconds

      ResponseRequestContextAddon<R> setCacheSeconds(int cacheSeconds, boolean isPrivateCache)
      Adds caching headers for the specified number of seconds. Adds caching headers.
      Parameters:
      seconds - the number of seconds this response should be cached.
      isPrivateCache - if true, the cache will be flagged as "private".
    • addAlert

      void addAlert(AlertLevel level, String message)
      Adds an Alert that is, in general, displayed at the top of the page to show the user an Error, a Warning or a confirmation message.

      Those alerts are available using the "spincast.alerts" templating variable. If any, a Flash Messages is also added to this variable.

    • getCookiesAdded

      Map<String,Cookie> getCookiesAdded()
      Gets the cookies already added to the response as a Map, using their names as the keys.

      NOTE : use the RequestRequestContextAddon.getCookiesValues() from the request() add-on instead to get the cookies sent by the user!

    • getCookieAdded

      Cookie getCookieAdded(String name)
      Gets a cookie already added to the response, by its name.

      NOTE : use the RequestRequestContextAddon.getCookieValue(String) from the request() add-on instead to get a cookie sent by the user!

      Returns:
      the cookie or null if not found.
    • createCookie

      Cookie createCookie(String name)
      Creates a cookie using the given name (null value).

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain and the cookie is valid for the time of the session only.

      You have to add the cookie using the setCookie(Cookie) method after it is properly created.

    • setCookie

      void setCookie(Cookie cookie)
      Sets a cookie.
    • setCookieSession

      void setCookieSession(String name, String value)
      Sets a cookie using the specified name and value.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain and the cookie is valid for the time of the session only.

    • setCookieSessionSafe

      void setCookieSessionSafe(String name, String value)
      Sets a cookie using the specified name and value. The cookie will be "secure", "httpOnly" and a CookieSameSite value of CookieSameSite.LAX.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain and the cookie is valid for the time of the session only.

    • setCookie

      void setCookie(String name, String value, int nbrSecondsToLive)
      Sets a cookie using the specified name, value and number of seconds to live.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain.

    • setCookie

      void setCookie(String name, String value, int nbrSecondsToLive, boolean httpOnly)
      Sets a cookie using the specified name, value, number of seconds to live and if it's http only.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain.

    • setCookie1year

      void setCookie1year(String name, String value)
      Sets a permanent cookie (1 years) using the specified name and value.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain.

    • setCookie1yearSafe

      void setCookie1yearSafe(String name, String value)
      Sets a permanent cookie (1 years) using the specified name and value. The cookie will be "secure", "httpOnly" and a CookieSameSite value of CookieSameSite.LAX.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain.

    • setCookie10years

      void setCookie10years(String name, String value)
      Sets a permanent cookie (10 years) using the specified name and value.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain.

    • setCookie10yearsSafe

      void setCookie10yearsSafe(String name, String value)
      Sets a permanent cookie (10 years) using the specified name and value. The cookie will be "secure", "httpOnly" and a CookieSameSite value of CookieSameSite.LAX.

      By default, the public host (SpincastConfig.getPublicServerHost()) is uses as the cookie's domain.

    • setCookie

      void setCookie(String name, String value, String path, String domain, Date expires, boolean secure, boolean httpOnly, CookieSameSite cookieSameSite, boolean discard, int version)
      Sets a cookie, using all available configurations.
    • deleteCookie

      void deleteCookie(String name)
      Deletes a cookie. In fact, this sets the cookie's expires date in the past so the user's browser will remove it. isExpired() will return true after you called this method.
    • deleteAllCookiesUserHas

      void deleteAllCookiesUserHas()
      Deletes all cookies! Not only the new cookies that have been added to the response, but also the cookies that have been received in the request!

      In fact, this method sets the expires date of the cookies in the past so the user's browser will remove them.

    • addForm

      void addForm(Form form)
      Adds a Form object to the response's model and links its validation messages to the default "validation" root element.

      In other words, adding a form will result in those elements to the response's model :

      • [formName] => the form itself
      • [validation] => validation messages for the form with keys such as "[formName].something" and "[formName].somethingElse".
    • addForm

      void addForm(Form form, String validationElementName)
      Adds a Form object to the response's model and links its validation messages to the specified validation element.

      In other words, adding a form will result in those elements to the response's model :

      • [formName] => the form itself
      • [validationElementName] => validation messages for the form with keys such as "[formName].something" and "[formName].somethingElse".
    • push

      ResponseRequestContextAddon<R> push(HttpMethod httpMethod, String path, Map<String,List<String>> requestHeaders)
      If HTTP/2 is used, you can push extra resources at the same time you response to a request.

      If the embedded server deals with a HTTTP/2 request, it will push the extra resources by itself. If it deals with an HTTP/1.X request (for example if it is behind a reverse-proxy) it will send Link headers to the potential proxy in front of it and it is the proxy that will be in charge of doing the actual push.

      Beware that pushing resources does not always result in an increase of performance and may lead to wasted bandwidth (the client may decide to not use those pushed resources).

      Parameters:
      path - The absolute path to the resource to push, starting with "/" (or it will be added). No scheme, host, port but may contain a querystring.
      requestHeaders - The headers for requesting the resource. May be null. Those headers will only be used if the embedded server pushes the resources by itself. If it is behind a reverse-proxy and ask this proxy to push the resources, those headers won't be used but a "as=" attribute may be added to help the proxy serve the proper content-type.