Class FilteredRouter

  • All Implemented Interfaces:
    Router

    public class FilteredRouter
    extends java.lang.Object
    implements Router
    Allows decorating an existing Router with filtering capabilities.

    Filters themselves should be supplied via the RouteMatchFilter interface.

    A filtered router can be enabled by implementing a BeanCreatedEventListener for the existing Router and decorating appropriately. See for example VersionAwareRouterListener

    Since:
    1.1.0
    See Also:
    RouteMatchFilter
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void applyDefaultPorts​(java.util.List<java.lang.Integer> ports)
      Sets the ports the application will listen to by default.
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      DELETE​(java.lang.CharSequence uri)
      Find the first RouteMatch route for an HttpMethod.DELETE method and the given URI.
      <T,​R>
      java.util.stream.Stream<UriRouteMatch<T,​R>>
      find​(io.micronaut.http.HttpMethod httpMethod, java.lang.CharSequence uri, io.micronaut.http.HttpRequest<?> context)
      Finds all of the possible routes for the given HTTP method and URI.
      <T,​R>
      java.util.stream.Stream<UriRouteMatch<T,​R>>
      find​(io.micronaut.http.HttpRequest<?> request)
      Finds all of the possible routes for the given HTTP request.
      <T,​R>
      java.util.stream.Stream<UriRouteMatch<T,​R>>
      find​(io.micronaut.http.HttpRequest<?> request, java.lang.CharSequence uri)
      Find method, that should be used for non-standard http methods.
      <T,​R>
      java.util.List<UriRouteMatch<T,​R>>
      findAllClosest​(io.micronaut.http.HttpRequest<?> request)
      Finds the closest match for the given request.
      <T,​R>
      java.util.stream.Stream<UriRouteMatch<T,​R>>
      findAny​(java.lang.CharSequence uri, io.micronaut.http.HttpRequest<?> context)
      Find any RouteMatch regardless of HTTP method.
      <R> java.util.Optional<RouteMatch<R>> findErrorRoute​(java.lang.Class<?> originatingClass, java.lang.Throwable error, io.micronaut.http.HttpRequest<?> request)
      Match a route to an error.
      <R> java.util.Optional<RouteMatch<R>> findErrorRoute​(java.lang.Throwable error, io.micronaut.http.HttpRequest<?> request)
      Match a route to an error.
      java.util.List<io.micronaut.http.filter.HttpFilter> findFilters​(io.micronaut.http.HttpRequest<?> request)
      Build a filtered Publisher for an action.
      <R> java.util.Optional<RouteMatch<R>> findStatusRoute​(io.micronaut.http.HttpStatus status, io.micronaut.http.HttpRequest<?> request)
      Found a RouteMatch for the given HttpStatus code.
      <R> java.util.Optional<RouteMatch<R>> findStatusRoute​(java.lang.Class<?> originatingClass, io.micronaut.http.HttpStatus status, io.micronaut.http.HttpRequest<?> request)
      Found a RouteMatch for the given HttpStatus code.
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      GET​(java.lang.CharSequence uri)
      Find the first RouteMatch route for an HttpMethod.GET method and the given URI.
      java.util.Set<java.lang.Integer> getExposedPorts()  
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      HEAD​(java.lang.CharSequence uri)
      Find the first RouteMatch route for an HttpMethod.HEAD method and the given URI.
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      OPTIONS​(java.lang.CharSequence uri)
      Find the first RouteMatch route for an HttpMethod.OPTIONS method and the given URI.
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      PATCH​(java.lang.CharSequence uri)
      Find the first RouteMatch route for an HttpMethod.PATCH method and the given URI.
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      POST​(java.lang.CharSequence uri)
      Find the first RouteMatch route for an HttpMethod.POST method and the given URI.
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      PUT​(java.lang.CharSequence uri)
      Find the first RouteMatch route for an HttpMethod.PUT method and the given URI.
      <T,​R>
      java.util.Optional<UriRouteMatch<T,​R>>
      route​(io.micronaut.http.HttpMethod httpMethod, java.lang.CharSequence uri)
      Finds the first possible route for the given HTTP method and URI.
      <R> java.util.Optional<RouteMatch<R>> route​(io.micronaut.http.HttpStatus status)
      Found a RouteMatch for the given HttpStatus code.
      <R> java.util.Optional<RouteMatch<R>> route​(java.lang.Class originatingClass, io.micronaut.http.HttpStatus status)
      Found a RouteMatch for the given HttpStatus code.
      <R> java.util.Optional<RouteMatch<R>> route​(java.lang.Class originatingClass, java.lang.Throwable error)
      Match a route to an error.
      <R> java.util.Optional<RouteMatch<R>> route​(java.lang.Throwable error)
      Match a route to an error.
      java.util.stream.Stream<UriRoute> uriRoutes()
      Returns all UriRoutes.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface io.micronaut.web.router.Router

        find
    • Method Detail

      • findAny

        @NonNull
        public <T,​R> java.util.stream.Stream<UriRouteMatch<T,​R>> findAny​(@NonNull
                                                                                     java.lang.CharSequence uri,
                                                                                     @Nullable
                                                                                     io.micronaut.http.HttpRequest<?> context)
        Description copied from interface: Router
        Find any RouteMatch regardless of HTTP method.
        Specified by:
        findAny in interface Router
        Type Parameters:
        T - The target type
        R - The return type
        Parameters:
        uri - The URI
        context - The optional HttpRequest context information to apply RouteMatchFilter.
        Returns:
        A stream of route matches
      • getExposedPorts

        public java.util.Set<java.lang.Integer> getExposedPorts()
        Specified by:
        getExposedPorts in interface Router
        Returns:
        The exposed ports.
      • applyDefaultPorts

        public void applyDefaultPorts​(java.util.List<java.lang.Integer> ports)
        Description copied from interface: Router
        Sets the ports the application will listen to by default.
        Specified by:
        applyDefaultPorts in interface Router
        Parameters:
        ports - The default ports
      • find

        @NonNull
        public <T,​R> java.util.stream.Stream<UriRouteMatch<T,​R>> find​(@NonNull
                                                                                  io.micronaut.http.HttpMethod httpMethod,
                                                                                  @NonNull
                                                                                  java.lang.CharSequence uri,
                                                                                  @Nullable
                                                                                  io.micronaut.http.HttpRequest<?> context)
        Description copied from interface: Router
        Finds all of the possible routes for the given HTTP method and URI.
        Specified by:
        find in interface Router
        Type Parameters:
        T - The target type
        R - The type
        Parameters:
        httpMethod - The HTTP method
        uri - The URI route match
        context - The optional HttpRequest context information to apply RouteMatchFilter.
        Returns:
        A Stream of possible Route instances.
      • findAllClosest

        @NonNull
        public <T,​R> java.util.List<UriRouteMatch<T,​R>> findAllClosest​(@NonNull
                                                                                   io.micronaut.http.HttpRequest<?> request)
        Description copied from interface: Router
        Finds the closest match for the given request.
        Specified by:
        findAllClosest in interface Router
        Type Parameters:
        T - The target type
        R - The type
        Parameters:
        request - The request
        Returns:
        A List of possible Route instances.
      • find

        @NonNull
        public <T,​R> java.util.stream.Stream<UriRouteMatch<T,​R>> find​(@NonNull
                                                                                  io.micronaut.http.HttpRequest<?> request,
                                                                                  @NonNull
                                                                                  java.lang.CharSequence uri)
        Description copied from interface: Router
        Find method, that should be used for non-standard http methods. For standards it should act the same as Router.find(HttpMethod, CharSequence, HttpRequest)
        Specified by:
        find in interface Router
        Type Parameters:
        T - The target type.
        R - The type of what
        Parameters:
        request - The request, that can have overridden HttpRequest.getMethodName()
        uri - The URI route match.
        Returns:
        A Stream of possible Route instances.
      • uriRoutes

        @NonNull
        public java.util.stream.Stream<UriRoute> uriRoutes()
        Description copied from interface: Router
        Returns all UriRoutes.
        Specified by:
        uriRoutes in interface Router
        Returns:
        A Stream of all registered UriRoute instances.
      • route

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> route​(@NonNull
                                                                              io.micronaut.http.HttpMethod httpMethod,
                                                                              @NonNull
                                                                              java.lang.CharSequence uri)
        Description copied from interface: Router
        Finds the first possible route for the given HTTP method and URI.
        Specified by:
        route in interface Router
        Type Parameters:
        T - The target type
        R - The URI route match
        Parameters:
        httpMethod - The HTTP method
        uri - The URI
        Returns:
        The route match
      • route

        public <R> java.util.Optional<RouteMatch<R>> route​(@NonNull
                                                           io.micronaut.http.HttpStatus status)
        Description copied from interface: Router
        Found a RouteMatch for the given HttpStatus code.
        Specified by:
        route in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        status - The HTTP status
        Returns:
        The RouteMatch
      • route

        public <R> java.util.Optional<RouteMatch<R>> route​(@NonNull
                                                           java.lang.Class originatingClass,
                                                           @NonNull
                                                           io.micronaut.http.HttpStatus status)
        Description copied from interface: Router
        Found a RouteMatch for the given HttpStatus code.
        Specified by:
        route in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        originatingClass - The class the error originates from
        status - The HTTP status
        Returns:
        The RouteMatch
      • route

        public <R> java.util.Optional<RouteMatch<R>> route​(@NonNull
                                                           java.lang.Throwable error)
        Description copied from interface: Router
        Match a route to an error.
        Specified by:
        route in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        error - The error
        Returns:
        The RouteMatch
      • route

        public <R> java.util.Optional<RouteMatch<R>> route​(@NonNull
                                                           java.lang.Class originatingClass,
                                                           @NonNull
                                                           java.lang.Throwable error)
        Description copied from interface: Router
        Match a route to an error.
        Specified by:
        route in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        originatingClass - The class the error originates from
        error - The error
        Returns:
        The RouteMatch
      • findErrorRoute

        public <R> java.util.Optional<RouteMatch<R>> findErrorRoute​(@NonNull
                                                                    java.lang.Class<?> originatingClass,
                                                                    @NonNull
                                                                    java.lang.Throwable error,
                                                                    io.micronaut.http.HttpRequest<?> request)
        Description copied from interface: Router
        Match a route to an error.
        Specified by:
        findErrorRoute in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        originatingClass - The class the error originates from
        error - The error
        request - The request
        Returns:
        The RouteMatch
      • findErrorRoute

        public <R> java.util.Optional<RouteMatch<R>> findErrorRoute​(@NonNull
                                                                    java.lang.Throwable error,
                                                                    io.micronaut.http.HttpRequest<?> request)
        Description copied from interface: Router
        Match a route to an error.
        Specified by:
        findErrorRoute in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        error - The error
        request - The request
        Returns:
        The RouteMatch
      • findStatusRoute

        public <R> java.util.Optional<RouteMatch<R>> findStatusRoute​(@NonNull
                                                                     java.lang.Class<?> originatingClass,
                                                                     @NonNull
                                                                     io.micronaut.http.HttpStatus status,
                                                                     io.micronaut.http.HttpRequest<?> request)
        Description copied from interface: Router
        Found a RouteMatch for the given HttpStatus code.
        Specified by:
        findStatusRoute in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        originatingClass - The class the error originates from
        status - The HTTP status
        request - The request
        Returns:
        The RouteMatch
      • findStatusRoute

        public <R> java.util.Optional<RouteMatch<R>> findStatusRoute​(@NonNull
                                                                     io.micronaut.http.HttpStatus status,
                                                                     io.micronaut.http.HttpRequest<?> request)
        Description copied from interface: Router
        Found a RouteMatch for the given HttpStatus code.
        Specified by:
        findStatusRoute in interface Router
        Type Parameters:
        R - The matched route
        Parameters:
        status - The HTTP status
        request - The request
        Returns:
        The RouteMatch
      • findFilters

        @NonNull
        public java.util.List<io.micronaut.http.filter.HttpFilter> findFilters​(@NonNull
                                                                               io.micronaut.http.HttpRequest<?> request)
        Description copied from interface: Router
        Build a filtered Publisher for an action.
        Specified by:
        findFilters in interface Router
        Parameters:
        request - The request
        Returns:
        A new filtered publisher
      • GET

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> GET​(@NonNull
                                                                            java.lang.CharSequence uri)
        Description copied from interface: Router
        Find the first RouteMatch route for an HttpMethod.GET method and the given URI.
        Specified by:
        GET in interface Router
        Type Parameters:
        T - The target type
        R - The return type
        Parameters:
        uri - The URI
        Returns:
        An Optional of RouteMatch
      • POST

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> POST​(@NonNull
                                                                             java.lang.CharSequence uri)
        Description copied from interface: Router
        Find the first RouteMatch route for an HttpMethod.POST method and the given URI.
        Specified by:
        POST in interface Router
        Type Parameters:
        T - The target type
        R - The return type
        Parameters:
        uri - The URI
        Returns:
        An Optional of RouteMatch
      • PUT

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> PUT​(@NonNull
                                                                            java.lang.CharSequence uri)
        Description copied from interface: Router
        Find the first RouteMatch route for an HttpMethod.PUT method and the given URI.
        Specified by:
        PUT in interface Router
        Type Parameters:
        T - The target type
        R - The URI route match
        Parameters:
        uri - The URI
        Returns:
        An Optional of RouteMatch
      • PATCH

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> PATCH​(@NonNull
                                                                              java.lang.CharSequence uri)
        Description copied from interface: Router
        Find the first RouteMatch route for an HttpMethod.PATCH method and the given URI.
        Specified by:
        PATCH in interface Router
        Type Parameters:
        T - The target type
        R - The return type
        Parameters:
        uri - The URI
        Returns:
        An Optional of RouteMatch
      • DELETE

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> DELETE​(@NonNull
                                                                               java.lang.CharSequence uri)
        Description copied from interface: Router
        Find the first RouteMatch route for an HttpMethod.DELETE method and the given URI.
        Specified by:
        DELETE in interface Router
        Type Parameters:
        T - The target type
        R - The return type
        Parameters:
        uri - The URI
        Returns:
        An Optional of RouteMatch
      • OPTIONS

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> OPTIONS​(@NonNull
                                                                                java.lang.CharSequence uri)
        Description copied from interface: Router
        Find the first RouteMatch route for an HttpMethod.OPTIONS method and the given URI.
        Specified by:
        OPTIONS in interface Router
        Type Parameters:
        T - The target type
        R - The return type
        Parameters:
        uri - The URI
        Returns:
        An Optional of RouteMatch
      • HEAD

        public <T,​R> java.util.Optional<UriRouteMatch<T,​R>> HEAD​(@NonNull
                                                                             java.lang.CharSequence uri)
        Description copied from interface: Router
        Find the first RouteMatch route for an HttpMethod.HEAD method and the given URI.
        Specified by:
        HEAD in interface Router
        Type Parameters:
        T - The target type
        R - The return type
        Parameters:
        uri - The URI
        Returns:
        An Optional of RouteMatch
      • find

        @NonNull
        public <T,​R> java.util.stream.Stream<UriRouteMatch<T,​R>> find​(@NonNull
                                                                                  io.micronaut.http.HttpRequest<?> request)
        Description copied from interface: Router
        Finds all of the possible routes for the given HTTP request.
        Specified by:
        find in interface Router
        Type Parameters:
        T - The target type
        R - The URI route match
        Parameters:
        request - The HTTP request
        Returns:
        A Stream of possible Route instances.