com.vaadin.flow.router.internal.

Class AbstractRouteRegistry

    • Constructor Detail

      • AbstractRouteRegistry

        public AbstractRouteRegistry()
    • Method Detail

      • configure

        protected void configure(AbstractRouteRegistry.Configuration command)

        Thread-safe update of the RouteConfiguration.

        Parameters:

        command - command that will mutate the configuration copy.

      • update

        public void update(Command command)

        Description copied from interface: RouteRegistry

        Block updates to the registry configuration from other threads until update command has completed. This makes the command changes atomic for the registry as no one else can change the registry state during the command.

        Any other thread trying to configure current registry will be blocked until the update has released all the locks.

        Specified by:

        update in interface RouteRegistry

        Parameters:

        command - command to execute for the update

      • fireEvent

        protected void fireEvent(RoutesChangedEvent routeChangedEvent)

        Fire routes changed event to all registered listeners.

        Parameters:

        routeChangedEvent - event containing changes

      • hasLock

        protected boolean hasLock()
      • getConfiguration

        public ConfiguredRoutes getConfiguration()

        Get the current valid configuration.

        Note! there may exist a possibility that someone updates this while it's being read, but the given configuration is valid at the given point in time.

        Returns:

        current state of the registry as a value object

      • getRouteLayouts

        public List<Class<? extends RouterLayout>> getRouteLayouts(String path,
                                                                   Class<? extends Component> navigationTarget)

        Description copied from interface: RouteRegistry

        Get the layout chain for given navigation target on the targeted path.

        This chain may be pre-defined or generated from annotation data.

        Specified by:

        getRouteLayouts in interface RouteRegistry

        Parameters:

        path - path to use for resolving chain

        navigationTarget - navigation target to get layout chain for

        Returns:

        layout chain of target

      • getTargetUrl

        public Optional<String> getTargetUrl(Class<? extends Component> navigationTarget)

        Description copied from interface: RouteRegistry

        Get the url string for given navigation target.

        Will return Optional.empty is navigation target was not found.

        Specified by:

        getTargetUrl in interface RouteRegistry

        Parameters:

        navigationTarget - navigation target to get registered route for, not null

        Returns:

        optional navigation target url string

      • setRoute

        public void setRoute(String path,
                             Class<? extends Component> navigationTarget,
                             List<Class<? extends RouterLayout>> parentChain)

        Description copied from interface: RouteRegistry

        Register a navigation target with specified path and given parent layout chain. Any ParentLayout, Route or RouteAlias will be ignored in route handling.

        Specified by:

        setRoute in interface RouteRegistry

        Parameters:

        path - path to register navigation target to

        navigationTarget - navigation target to register into session scope

        parentChain - chain of parent layouts that should be used with this target

      • removeRoute

        public void removeRoute(Class<? extends Component> routeTarget)

        Description copied from interface: RouteRegistry

        Remove the given navigation target route registration. Path where the navigation target was may still be usable, e.g. we remove target with url param and there is left a non param target, but will not return the removed target.

        Note! this will remove target route and if possible any RouteAlias route that can be found for the class.

        Specified by:

        removeRoute in interface RouteRegistry

        Parameters:

        routeTarget - navigation target class to remove

      • removeRoute

        public void removeRoute(String path)

        Description copied from interface: RouteRegistry

        Remove all registrations for given path. This means that any navigation target registered on the given path will be removed. But if a removed navigationTarget for the path exists it is then stored with a new main path so it can still get a resolved url.

        E.g. path "home" contains HomeView and DetailsView[String path param] both will be removed.

        Note! The restored path will be the first found match for all paths that are registered.

        Specified by:

        removeRoute in interface RouteRegistry

        Parameters:

        path - path for which to remove all navigation targets

      • removeRoute

        public void removeRoute(String path,
                                Class<? extends Component> navigationTarget)

        Description copied from interface: RouteRegistry

        Remove only the specified navigationTarget from the path and not the whole path if other targets exist for path. If no other targets exist whole route will be cleared.

        This will leave any other targets for path e.g. removing the wildcard path will still leave the optional target.

        Note! If another path exists for the removed navigation target it will get a new main path so it can still get a resolved url. The restored path will be the first found match for all paths that are registered.

        Specified by:

        removeRoute in interface RouteRegistry

        Parameters:

        path - path to remove from registry

        navigationTarget - path navigation target to remove

      • clean

        public void clean()

        Description copied from interface: RouteRegistry

        Clear all registered routes from the registry.

        Specified by:

        clean in interface RouteRegistry

      • addErrorTarget

        protected void addErrorTarget(Class<? extends Component> target,
                                      Map<Class<? extends Exception>,Class<? extends Component>> exceptionTargetsMap)

        Add the given error target to the exceptionTargetMap. This will handle existing overlapping exception types by assigning the correct error target according to inheritance or throw if existing and new are not related.

        Parameters:

        target - error handler target

        exceptionTargetsMap - map of existing error handlers

        Throws:

        InvalidRouteConfigurationException - if trying to add a non related exception handler for which a handler already exists

      • searchByCause

        protected Optional<ErrorTargetEntry> searchByCause(Exception exception)

        Get the exception handler for given exception or recurse by exception cause until possible exception with handler found.

        Parameters:

        exception - exception to get handler for

        Returns:

        Optional containing found handler or empty if none found

      • searchBySuperType

        protected Optional<ErrorTargetEntry> searchBySuperType(Throwable exception)

        Search given exception super classes to get exception handler for if any exist.

        Parameters:

        exception - exception to get handler for

        Returns:

        Optional containing found handler or empty if none found