Class AbstractRouteRegistry
- java.lang.Object
-
- com.vaadin.flow.router.internal.AbstractRouteRegistry
-
- All Implemented Interfaces:
RouteRegistry,Serializable
- Direct Known Subclasses:
ApplicationRouteRegistry,SessionRouteRegistry
public abstract class AbstractRouteRegistry extends Object implements RouteRegistry
AbstractRouteRegistry with locking support and configuration.For internal use only. May be renamed or removed in a future release.
- Since:
- 1.3
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceAbstractRouteRegistry.ConfigurationConfiguration interface to use for updating the configuration entity.
-
Constructor Summary
Constructors Constructor Description AbstractRouteRegistry()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidaddErrorTarget(Class<? extends Component> target, Map<Class<? extends Exception>,Class<? extends Component>> exceptionTargetsMap)Add the given error target to the exceptionTargetMap.RegistrationaddRoutesChangeListener(RoutesChangedListener listener)Adds the given route change listener to the registry.voidclean()Clear all registered routes from the registry.protected voidconfigure(AbstractRouteRegistry.Configuration command)Thread-safe update of the RouteConfiguration.protected voidfireEvent(RoutesChangedEvent routeChangedEvent)Fire routes changed event to all registered listeners.ConfiguredRoutesgetConfiguration()Get the current valid configuration.NavigationRouteTargetgetNavigationRouteTarget(String url)Search for a route target using given navigationurlargument.Optional<Class<? extends Component>>getNavigationTarget(String url)Gets the optional navigation target class for a given path.Optional<Class<? extends Component>>getNavigationTarget(String url, List<String> segments)Gets the optional navigation target class for a given Location matching with path segments.List<RouteData>getRegisteredRoutes()Get theRouteDatafor all registered navigation targets.List<Class<? extends RouterLayout>>getRouteLayouts(String path, Class<? extends Component> navigationTarget)Deprecated.instead usegetNavigationRouteTarget(String)and retrieve the list of route layouts from theRouteTargetcontained in theNavigationRouteTarget.RouteTargetgetRouteTarget(Class<? extends Component> target, RouteParameters parameters)Gets theRouteTargetinstance matching the given target component and route parameters.Optional<String>getTargetUrl(Class<? extends Component> navigationTarget)Get the url string for given navigation target.Optional<String>getTargetUrl(Class<? extends Component> navigationTarget, RouteParameters parameters)Get the url string for given navigation target.Optional<String>getTemplate(Class<? extends Component> navigationTarget)Get the main template for given navigation target.protected booleanhasLock()booleanhasMandatoryParameter(Class<? extends Component> navigationTarget)Check if the given navigationTarget requires parameters.voidremoveRoute(Class<? extends Component> navigationTarget)Remove the given navigation target route registration.voidremoveRoute(String path)Remove the registration for given path.voidremoveRoute(String path, Class<? extends Component> navigationTarget)Remove navigationTarget for the path.protected Optional<ErrorTargetEntry>searchByCause(Exception exception)Get the exception handler for given exception or recurse by exception cause until possible exception with handler found.protected Optional<ErrorTargetEntry>searchBySuperType(Throwable exception)Search given exception super classes to get exception handler for if any exist.voidsetRoute(String path, Class<? extends Component> navigationTarget, List<Class<? extends RouterLayout>> parentChain)Register a navigation target with specified path and given parent layout chain.voidupdate(Command command)Block updates to the registry configuration from other threads until update command has completed.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.vaadin.flow.server.RouteRegistry
getContext
-
-
-
-
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:RouteRegistryBlock 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:
updatein interfaceRouteRegistry- 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
-
addRoutesChangeListener
public Registration addRoutesChangeListener(RoutesChangedListener listener)
Description copied from interface:RouteRegistryAdds the given route change listener to the registry.- Specified by:
addRoutesChangeListenerin interfaceRouteRegistry- Parameters:
listener- listener to be informed on route changes- Returns:
- registration to remove the listener
-
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
-
getRegisteredRoutes
public List<RouteData> getRegisteredRoutes()
Description copied from interface:RouteRegistryGet theRouteDatafor all registered navigation targets.- Specified by:
getRegisteredRoutesin interfaceRouteRegistry- Returns:
- list of routes available for this registry
-
getRouteLayouts
@Deprecated public List<Class<? extends RouterLayout>> getRouteLayouts(String path, Class<? extends Component> navigationTarget)
Deprecated.instead usegetNavigationRouteTarget(String)and retrieve the list of route layouts from theRouteTargetcontained in theNavigationRouteTarget.Description copied from interface:RouteRegistryGet the layout chain for given navigation target on the targeted path.This chain may be pre-defined or generated from annotation data.
- Specified by:
getRouteLayoutsin interfaceRouteRegistry- Parameters:
path- path to use for resolving chainnavigationTarget- navigation target to get layout chain for- Returns:
- layout chain of target
- See Also:
RouteTarget.getParentLayouts()
-
getTargetUrl
public Optional<String> getTargetUrl(Class<? extends Component> navigationTarget)
Description copied from interface:RouteRegistryGet the url string for given navigation target.- Specified by:
getTargetUrlin interfaceRouteRegistry- Parameters:
navigationTarget- navigation target to get registered route for, notnull- Returns:
Optionalnavigation target url string orOptional.empty()if navigation target was not found
-
getTargetUrl
public Optional<String> getTargetUrl(Class<? extends Component> navigationTarget, RouteParameters parameters)
Description copied from interface:RouteRegistryGet the url string for given navigation target.- Specified by:
getTargetUrlin interfaceRouteRegistry- Parameters:
navigationTarget- navigation target to get registered route for, notnullparameters- parameters for the target url.- Returns:
Optionalnavigation target url string orOptional.empty()if navigation target was not found
-
getTemplate
public Optional<String> getTemplate(Class<? extends Component> navigationTarget)
Description copied from interface:RouteRegistryGet the main template for given navigation target.In case of annotated target the main template is composed of the
Routeannotation value prefixed by allRoutePrefixvalues of the parentRouterLayouts chain.- Specified by:
getTemplatein interfaceRouteRegistry- Parameters:
navigationTarget- navigation target to get route definition for, notnull- Returns:
Optionalnavigation target template string orOptional.empty()if navigation target was not found
-
setRoute
public void setRoute(String path, Class<? extends Component> navigationTarget, List<Class<? extends RouterLayout>> parentChain)
Description copied from interface:RouteRegistryRegister a navigation target with specified path and given parent layout chain. AnyParentLayout,RouteorRouteAliaswill be ignored in route handling.- Specified by:
setRoutein interfaceRouteRegistry- Parameters:
path- path to register navigation target tonavigationTarget- navigation target to register into session scopeparentChain- chain of parent layouts that should be used with this target
-
removeRoute
public void removeRoute(Class<? extends Component> navigationTarget)
Description copied from interface:RouteRegistryRemove the given navigation target route registration.Note! this will remove target route and if possible any
RouteAliasroute that can be found for the class.- Specified by:
removeRoutein interfaceRouteRegistry- Parameters:
navigationTarget- navigation target class to remove
-
removeRoute
public void removeRoute(String path)
Description copied from interface:RouteRegistryRemove the registration for given path.In case navigationTarget is a
HasUrlParameter, path argument needs to include the parameter placeholder which is added automatically. Otherwise, usingRouteRegistry.removeRoute(String, Class)is preferred in such a case.- Specified by:
removeRoutein interfaceRouteRegistry- Parameters:
path- path for which to remove the navigation target.
-
removeRoute
public void removeRoute(String path, Class<? extends Component> navigationTarget)
Description copied from interface:RouteRegistryRemove navigationTarget for the path.This method will check if indeed navigationTarget is registered with path.
In case navigationTarget is a
HasUrlParameter, the path needs to be specified exactly as it is in theRouteannotation or as it was registered usingRouteRegistry.setRoute(String, Class, List), without the parameter placeholder which is automatically added.- Specified by:
removeRoutein interfaceRouteRegistry- Parameters:
path- path to remove from registrynavigationTarget- path navigation target to remove
-
clean
public void clean()
Description copied from interface:RouteRegistryClear all registered routes from the registry.- Specified by:
cleanin interfaceRouteRegistry
-
hasMandatoryParameter
public boolean hasMandatoryParameter(Class<? extends Component> navigationTarget)
Description copied from interface:RouteRegistryCheck if the given navigationTarget requires parameters.- Specified by:
hasMandatoryParameterin interfaceRouteRegistry- Parameters:
navigationTarget- navigation target to check- Returns:
trueif parameters are required
-
getNavigationRouteTarget
public NavigationRouteTarget getNavigationRouteTarget(String url)
Description copied from interface:RouteRegistrySearch for a route target using given navigationurlargument.- Specified by:
getNavigationRouteTargetin interfaceRouteRegistry- Parameters:
url- the navigation url used to search a route target.- Returns:
- a
NavigationRouteTargetinstance containing theRouteTargetandRouteParametersextracted from theurlargument according with the route configuration.
-
getRouteTarget
public RouteTarget getRouteTarget(Class<? extends Component> target, RouteParameters parameters)
Description copied from interface:RouteRegistryGets theRouteTargetinstance matching the given target component and route parameters.- Specified by:
getRouteTargetin interfaceRouteRegistry- Parameters:
target- a component class which is a navigation target.parameters- parameter values that may be used with given target.- Returns:
- the
RouteTargetinstance matching the given target component and route parameters.
-
getNavigationTarget
public Optional<Class<? extends Component>> getNavigationTarget(String url)
Description copied from interface:RouteRegistryGets the optional navigation target class for a given path. Returns an empty optional if no navigation target corresponds to the given url.- Specified by:
getNavigationTargetin interfaceRouteRegistry- Parameters:
url- the path to get the navigation target for, notnull- Returns:
- optional of the navigation target corresponding to the given path
-
getNavigationTarget
public Optional<Class<? extends Component>> getNavigationTarget(String url, List<String> segments)
Description copied from interface:RouteRegistryGets the optional navigation target class for a given Location matching with path segments.- Specified by:
getNavigationTargetin interfaceRouteRegistry- Parameters:
url- path to get navigation target for, notnullsegments- segments given for path- Returns:
- optional navigation target corresponding to the given location with given segments if any applicable targets found.
- See Also:
Location
-
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 targetexceptionTargetsMap- 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
-
-