/** * Gets the optional navigation target class for a given Location matching * with path segments. * * @param pathString * path to get navigation target for, not {@code null} * @param segments * segments given for path * @return optional navigation target corresponding to the given path and * segments */ public Optional<Class<? extends Component>> getRoute(String pathString, List<String> segments) { return handledRegistry.getNavigationTarget(pathString, segments); }
private Class<? extends Component> getNavigationTargetWithParameter( RouteRegistry registry, String path, List<String> segments) throws NotFoundException { return registry.getNavigationTarget(path, segments) .orElseThrow(() -> new NotFoundException(String.format( "No navigation target found for path '%s'.", path))); }
private Class<? extends Component> getNavigationTarget( RouteRegistry registry, String path) throws NotFoundException { return registry.getNavigationTarget(path) .orElseThrow(() -> new NotFoundException(String.format( "No navigation target found for path '%s'.", path))); }
@Override public Optional<Class<? extends Component>> getNavigationTarget( String pathString) { Objects.requireNonNull(pathString, "pathString must not be null."); Optional<Class<? extends Component>> navigationTarget = getNavigationTarget( pathString, Collections.emptyList()); if (navigationTarget.isPresent()) { return navigationTarget; } return parentRegistry.getNavigationTarget(pathString); }
private Class<? extends Component> getTargetOrThrow(String route, List<String> segments) { Optional<Class<? extends Component>> target = getSource().getRegistry() .getNavigationTarget(route, segments); if (!target.isPresent()) { throw new IllegalArgumentException(String.format( "No route '%s' accepting the parameters %s was found.", route, segments)); } return target.get(); }
/** * Forward to navigation component registered for given location string * instead of the component about to be displayed. * * @param location * forward target location string */ public void forwardTo(String location) { getSource().getRegistry().getNavigationTarget(location) .ifPresent(this::forwardTo); }
/** * Reroute to navigation component registered for given location string * instead of the component about to be displayed. * * @param route * reroute target location string */ public void rerouteTo(String route) { getSource().getRegistry().getNavigationTarget(route) .ifPresent(this::rerouteTo); }
private PathDetails findPathString(RouteRegistry registry, List<String> pathSegments) { if (pathSegments.isEmpty()) { return null; } Deque<PathDetails> paths = new ArrayDeque<>(); StringBuilder pathBuilder = new StringBuilder(pathSegments.get(0)); if (!"".equals(pathSegments.get(0))) { paths.push(new PathDetails("", pathSegments)); } for (int i = 0; i < pathSegments.size(); i++) { if (i != 0) { pathBuilder.append("/").append(pathSegments.get(i)); } paths.push(new PathDetails(pathBuilder.toString(), pathSegments.subList(i + 1, pathSegments.size()))); } while (!paths.isEmpty()) { PathDetails pathDetails = paths.pop(); Optional<?> target = registry.getNavigationTarget(pathDetails.path, pathDetails.segments); if (target.isPresent()) { return pathDetails; } } return null; }
@Override public Optional<Class<? extends Component>> getNavigationTarget( String pathString, List<String> segments) { Objects.requireNonNull(pathString, "pathString must not be null."); if (getConfiguration().hasRoute(pathString, segments)) { return getConfiguration().getRoute(pathString, segments); } return parentRegistry.getNavigationTarget(pathString, segments); }
.getNavigationTarget(routeString, serializedParameters);