Class RoutingContext

java.lang.Object
io.vertx.rxjava3.ext.web.RoutingContext
All Implemented Interfaces:
io.vertx.lang.rx.RxDelegate

public class RoutingContext extends Object implements io.vertx.lang.rx.RxDelegate
Represents the context for the handling of a request in Vert.x-Web.

A new instance is created for each HTTP request that is received in the Handler of the router.

The same instance is passed to any matching request or failure handlers during the routing of the request or failure.

The context provides access to the and and allows you to maintain arbitrary data that lives for the lifetime of the context. Contexts are discarded once they have been routed to the handler for the request.

The context also provides access to the Session, cookies and body for the request, given the correct handlers in the application.

If you use the internal error handler

NOTE: This class has been automatically generated from the original non RX-ified interface using Vert.x codegen.

  • Field Details

    • __TYPE_ARG

      public static final io.vertx.lang.rx.TypeArg<RoutingContext> __TYPE_ARG
  • Constructor Details

    • RoutingContext

      public RoutingContext(RoutingContext delegate)
    • RoutingContext

      public RoutingContext(Object delegate)
  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • getDelegate

      public RoutingContext getDelegate()
      Specified by:
      getDelegate in interface io.vertx.lang.rx.RxDelegate
    • request

      public HttpServerRequest request()
      Returns:
      the HTTP request object
    • response

      public HttpServerResponse response()
      Returns:
      the HTTP response object
    • next

      public void next()
      Tell the router to route this context to the next matching route (if any). This method, if called, does not need to be called during the execution of the handler, it can be called some arbitrary time later, if required.

      If next is not called for a handler then the handler should make sure it ends the response or no response will be sent.

    • fail

      public void fail(int statusCode)
      Fail the context with the specified status code.

      This will cause the router to route the context to any matching failure handlers for the request. If no failure handlers match It will trigger the error handler matching the status code. You can define such error handler with Router.errorHandler(int, Handler). If no error handler is not defined, It will send a default failure response with provided status code.

      Parameters:
      statusCode - the HTTP status code
    • fail

      public void fail(Throwable throwable)
      Fail the context with the specified throwable and 500 status code.

      This will cause the router to route the context to any matching failure handlers for the request. If no failure handlers match It will trigger the error handler matching the status code. You can define such error handler with Router.errorHandler(int, Handler). If no error handler is not defined, It will send a default failure response with 500 status code.

      Parameters:
      throwable - a throwable representing the failure
    • fail

      public void fail(int statusCode, Throwable throwable)
      Fail the context with the specified throwable and the specified the status code.

      This will cause the router to route the context to any matching failure handlers for the request. If no failure handlers match It will trigger the error handler matching the status code. You can define such error handler with Router.errorHandler(int, Handler). If no error handler is not defined, It will send a default failure response with provided status code.

      Parameters:
      statusCode - the HTTP status code
      throwable - a throwable representing the failure
    • put

      public RoutingContext put(String key, Object obj)
      Put some arbitrary data in the context. This will be available in any handlers that receive the context.
      Parameters:
      key - the key for the data
      obj - the data
      Returns:
      a reference to this, so the API can be used fluently
    • get

      public <T> T get(String key)
      Get some data from the context. The data is available in any handlers that receive the context.
      Parameters:
      key - the key for the data
      Returns:
      the data
    • get

      public <T> T get(String key, T defaultValue)
      Get some data from the context. The data is available in any handlers that receive the context.
      Parameters:
      key - the key for the data
      defaultValue - when the underlying data doesn't contain the key this will be the return value.
      Returns:
      the data
    • remove

      public <T> T remove(String key)
      Remove some data from the context. The data is available in any handlers that receive the context.
      Parameters:
      key - the key for the data
      Returns:
      the previous data associated with the key
    • vertx

      public Vertx vertx()
      Returns:
      the Vert.x instance associated to the initiating Router for this context
    • mountPoint

      public String mountPoint()
      Returns:
      the mount point for this router. It will be null for a top level router. For a sub-router it will be the path at which the subrouter was mounted.
    • currentRoute

      public Route currentRoute()
      Returns:
      the current route this context is being routed through.
    • normalizedPath

      public String normalizedPath()
      Returns the normalized path of the current request.

      Unlike HttpRequestHead.path(), which returns the raw path as sent by the client, this value is normalized for routing purposes. The normalization process:

      • resolves dot-segments such as ".." and ".",
      • collapses multiple '/' characters into a single slash,
      • ensures the path always starts with '/',
      • normalizes null paths to "/"

      This is the value used internally by Vert.x Web when matching routes. For any security-sensitive checks or custom authorization logic, prefer using this normalized path instead of request().path(), as the raw path may still contain traversal-like sequences (e.g. "/a/../b") that resolve to the same route.

      Returns:
      the normalized path
    • body

      public RequestBody body()
    • fileUploads

      public List<FileUpload> fileUploads()
      Returns:
      a list of FileUpload (if any) for the request. The context must have first been routed to a BodyHandler for this to work.
    • cancelAndCleanupFileUploads

      public void cancelAndCleanupFileUploads()
      Cancel all unfinished file upload in progress and delete all uploaded files.
    • session

      public Session session()
      Get the session. The context must have first been routed to a SessionHandler for this to be populated. Sessions live for a browser session, and are maintained by session cookies.
      Returns:
      the session.
    • isSessionAccessed

      public boolean isSessionAccessed()
      Whether the session() has been already called or not. This is usually used by the SessionHandler.
      Returns:
      true if the session has been accessed.
    • userContext

      public UserContext userContext()
      Control the user associated with this request. The user context allows accessing the security user object as well as perform authentication refreshes, logout and other operations.
      Returns:
      the user context
    • user

      public User user()
      Get the authenticated user (if any). This will usually be injected by an auth handler if authentication if successful.
      Returns:
      the user, or null if the current user is not authenticated.
    • failure

      public Throwable failure()
      If the context is being routed to failure handlers after a failure has been triggered by calling fail(int) then this will return that throwable. It can be used by failure handlers to render a response, e.g. create a failure response page.
      Returns:
      the throwable used when signalling failure
    • statusCode

      public int statusCode()
      If the context is being routed to failure handlers after a failure has been triggered by calling fail(int) then this will return that status code. It can be used by failure handlers to render a response, e.g. create a failure response page. When the status code has not been set yet (it is undefined) its value will be -1.
      Returns:
      the status code used when signalling failure
    • getAcceptableContentType

      public String getAcceptableContentType()
      If the route specifies produces matches, e.g. produces `text/html` and `text/plain`, and the `accept` header matches one or more of these then this returns the most acceptable match.
      Returns:
      the most acceptable content type.
    • parsedHeaders

      public ParsedHeaderValues parsedHeaders()
      The headers:
      1. Accept
      2. Accept-Charset
      3. Accept-Encoding
      4. Accept-Language
      5. Content-Type
      Parsed into ParsedHeaderValue
      Returns:
      A container with the parsed headers.
    • addHeadersEndHandler

      public int addHeadersEndHandler(Handler<Void> handler)
      Add a handler that will be called just before headers are written to the response. This gives you a hook where you can write any extra headers before the response has been written when it will be too late.
      Parameters:
      handler - the handler
      Returns:
      the id of the handler. This can be used if you later want to remove the handler.
    • removeHeadersEndHandler

      public boolean removeHeadersEndHandler(int handlerID)
      Remove a headers end handler
      Parameters:
      handlerID - the id as returned from addHeadersEndHandler(Handler).
      Returns:
      true if the handler existed and was removed, false otherwise
    • addBodyEndHandler

      public int addBodyEndHandler(Handler<Void> handler)
      Provides a handler that will be called after the last part of the body is written to the wire. The handler is called asynchronously of when the response has been received by the client. This provides a hook allowing you to do more operations once the request has been sent over the wire. Do not use this for resource cleanup as this handler might never get called (e.g. if the connection is reset).
      Parameters:
      handler - the handler
      Returns:
      the id of the handler. This can be used if you later want to remove the handler.
    • removeBodyEndHandler

      public boolean removeBodyEndHandler(int handlerID)
      Remove a body end handler
      Parameters:
      handlerID - the id as returned from addBodyEndHandler(Handler).
      Returns:
      true if the handler existed and was removed, false otherwise
    • removeEndHandler

      public boolean removeEndHandler(int handlerID)
      Remove an end handler
      Parameters:
      handlerID - the id as returned from addEndHandler(Handler).
      Returns:
      true if the handler existed and was removed, false otherwise
    • failed

      public boolean failed()
      Returns:
      true if the context is being routed to failure handlers.
    • setAcceptableContentType

      public void setAcceptableContentType(String contentType)
      Set the acceptable content type. Used by
      Parameters:
      contentType - the content type
    • reroute

      public void reroute(String path)
      Restarts the current router with a new path and reusing the original method. All path parameters are then parsed and available on the params list. Query params will also be allowed and available.
      Parameters:
      path - the new http path.
    • reroute

      public void reroute(HttpMethod method, String path)
      Restarts the current router with a new method and path. All path parameters are then parsed and available on the params list. Query params will also be allowed and available.
      Parameters:
      method - the new http request
      path - the new http path.
    • acceptableLanguages

      public List<LanguageHeader> acceptableLanguages()
      Returns the languages for the current request. The languages are determined from the Accept-Language header and sorted on quality. When 2 or more entries have the same quality then the order used to return the best match is based on the lowest index on the original list. For example if a user has en-US and en-GB with same quality and this order the best match will be en-US because it was declared as first entry by the client.
      Returns:
      The best matched language for the request
    • preferredLanguage

      public LanguageHeader preferredLanguage()
      Helper to return the user preferred language. It is the same action as returning the first element of the acceptable languages.
      Returns:
      the users preferred locale.
    • pathParams

      public Map<String,String> pathParams()
      Returns a map of named parameters as defined in path declaration with their actual values
      Returns:
      the map of named parameters
    • pathParam

      public String pathParam(String name)
      Gets the value of a single path parameter
      Parameters:
      name - the name of parameter as defined in path declaration
      Returns:
      the actual value of the parameter or null if it doesn't exist
    • queryParams

      public MultiMap queryParams()
      Returns a map of all query parameters inside the query string
      The query parameters are lazily decoded: the decoding happens on the first time this method is called. If the query string is invalid it fails the context
      Returns:
      the multimap of query parameters
    • queryParam

      public List<String> queryParam(String name)
      Gets the value of a single query parameter. For more info queryParams()
      Parameters:
      name - The name of query parameter
      Returns:
      The list of all parameters matching the parameter name. It returns an empty list if no query parameter with name was found
    • attachment

      public RoutingContext attachment(String filename)
      Set Content-Disposition get to "attachment" with optional filename mime type.
      Parameters:
      filename - the filename for the attachment
      Returns:
    • redirect

      public Completable redirect(String url)
      Perform a 302 redirect to url. If a custom 3xx code is already defined, then that one will be preferred.

      The string "back" is special-cased to provide Referrer support, when Referrer is not present "/" is used.

      Examples:

      redirect('back'); redirect('/login'); redirect('http://google.com');

      Parameters:
      url - the target url
      Returns:
    • rxRedirect

      public Completable rxRedirect(String url)
      Perform a 302 redirect to url. If a custom 3xx code is already defined, then that one will be preferred.

      The string "back" is special-cased to provide Referrer support, when Referrer is not present "/" is used.

      Examples:

      redirect('back'); redirect('/login'); redirect('http://google.com');

      Parameters:
      url - the target url
      Returns:
    • json

      public Completable json(Object json)
      Encode an Object to JSON and end the request. When Content-Type is not set then correct Content-Type will be applied to the response
      Parameters:
      json - the json
      Returns:
      a future to handle the end of the request
    • rxJson

      public Completable rxJson(Object json)
      Encode an Object to JSON and end the request. When Content-Type is not set then correct Content-Type will be applied to the response
      Parameters:
      json - the json
      Returns:
      a future to handle the end of the request
    • is

      public boolean is(String type)
      Check if the incoming request contains the "Content-Type" get field, and it contains the give mime `type`. If there is no request body, `false` is returned. If there is no content type, `false` is returned. Otherwise, it returns true if the `type` that matches.

      Examples:

      // With Content-Type: text/html; charset=utf-8 is("html"); // => true is("text/html"); // => true

      // When Content-Type is application/json is("application/json"); // => true is("html"); // => false

      Parameters:
      type - content type
      Returns:
      The most close value
    • isFresh

      public boolean isFresh()
      Check if the request is fresh, aka Last-Modified and/or the ETag still match.
      Returns:
      true if content is fresh according to the cache.
    • etag

      public RoutingContext etag(String etag)
      Set the ETag of a response. This will normalize the quotes if necessary.

      etag('md5hashsum'); etag('"md5hashsum"'); ('W/"123456789"');

      Parameters:
      etag - the etag value
      Returns:
    • lastModified

      public RoutingContext lastModified(String instant)
      Set the Last-Modified date using a String.
      Parameters:
      instant - the last modified instant
      Returns:
    • end

      public Completable end(String chunk)
      Shortcut to the response end.
      Parameters:
      chunk - a chunk
      Returns:
      future
    • rxEnd

      public Completable rxEnd(String chunk)
      Shortcut to the response end.
      Parameters:
      chunk - a chunk
      Returns:
      future
    • end

      public Completable end(Buffer buffer)
      Shortcut to the response end.
      Parameters:
      buffer - a chunk
      Returns:
      future
    • rxEnd

      public Completable rxEnd(Buffer buffer)
      Shortcut to the response end.
      Parameters:
      buffer - a chunk
      Returns:
      future
    • end

      public Completable end()
      Shortcut to the response end.
      Returns:
      future
    • rxEnd

      public Completable rxEnd()
      Shortcut to the response end.
      Returns:
      future
    • data

      public <T> Map<String,T> data()
      Returns:
      all the context data as a map
    • addEndHandler

      public int addEndHandler(Handler<AsyncResult<Void>> handler)
      Add an end handler for the request/response context. This will be called when the response is disposed or an exception has been encountered to allow consistent cleanup. The handler is called asynchronously of when the response has been received by the client.
      Parameters:
      handler - the handler that will be called with either a success or failure result.
      Returns:
      the id of the handler. This can be used if you later want to remove the handler.
    • queryParams

      public MultiMap queryParams(Charset encoding)
      Always decode the current query string with the given encoding. The decode result is never cached. Callers to this method are expected to cache the result if needed. Usually users should use queryParams(). This method is only useful when the requests without content type (GET requests as an example) expect that query params are in the ASCII format ISO-5559-1.
      Parameters:
      encoding - a non null character set.
      Returns:
      the multimap of query parameters
    • lastModified

      public RoutingContext lastModified(Instant instant)
      Set the Last-Modified date using a Instant.
      Parameters:
      instant - the last modified instant
      Returns:
    • newInstance

      public static RoutingContext newInstance(RoutingContext arg)