Class MultiTenantHandler

  • All Implemented Interfaces:
    Handler<RoutingContext>

    public class MultiTenantHandler
    extends Object
    implements Handler<RoutingContext>
    A handler which selectively executes another handler if a precondition is met. There are cases where applications are build as multi tenant, in this cases one of the common tasks is to configure different authentication mechanisms for each tenant. This handler will allow registering any other handler and will only execute it if the precondition is met. There are 2 way of defining a precondition:
    • A http header value for example
      X-Tenant
    • A custom extractor function that can return a String from the context
    Requests that pass the validation will contain a new key in the routing context with the tenant id, for the case of being a default handler the value if this key will be "default".

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

    • Constructor Detail

      • MultiTenantHandler

        public MultiTenantHandler​(Object delegate)
    • Method Detail

      • hashCode

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

        public static MultiTenantHandler create​(String header)
        Create a MultiTenant handler that will extract the tenant id from a given header name.
        Parameters:
        header - the header to lookup (e.g.: "X-Tenant")
        Returns:
        the new handler.
      • create

        public static MultiTenantHandler create​(Function<RoutingContext,​String> tenantExtractor)
        Create a MultiTenant handler using a custom tenant extraction function.
        Parameters:
        tenantExtractor - the function that extracts the tenant id from the request
        Returns:
        the new handler.
      • create

        public static MultiTenantHandler create​(Function<RoutingContext,​String> tenantExtractor,
                                                String contextKey)
        Create a MultiTenant handler using a custom tenant extraction function.
        Parameters:
        tenantExtractor - the function that extracts the tenant id from the request
        contextKey - the custom key to store the tenant id in the context
        Returns:
        the new handler.
      • addTenantHandler

        public MultiTenantHandler addTenantHandler​(String tenant,
                                                   Handler<RoutingContext> handler)
        Add a handler for a given tenant to this handler. Both tenant and handler cannot be null.
        Parameters:
        tenant - the tenant id
        handler - the handler to register.
        Returns:
        a fluent reference to self.
      • removeTenant

        public MultiTenantHandler removeTenant​(String tenant)
        Remove a handler for a given tenant from this handler. Tenant cannot be null.
        Parameters:
        tenant - the tenant id
        Returns:
        a fluent reference to self.
      • addDefaultHandler

        public MultiTenantHandler addDefaultHandler​(Handler<RoutingContext> handler)
        Add a default handler for the case when no tenant was matched. The handler cannot be null.
        Parameters:
        handler - the handler to register.
        Returns:
        a fluent reference to self.