diff --git a/packages/java/endpoint/src/main/java/com/vaadin/hilla/route/RouteUnifyingIndexHtmlRequestListener.java b/packages/java/endpoint/src/main/java/com/vaadin/hilla/route/RouteUnifyingIndexHtmlRequestListener.java index 2925ae196d..8b43a665d9 100644 --- a/packages/java/endpoint/src/main/java/com/vaadin/hilla/route/RouteUnifyingIndexHtmlRequestListener.java +++ b/packages/java/endpoint/src/main/java/com/vaadin/hilla/route/RouteUnifyingIndexHtmlRequestListener.java @@ -26,6 +26,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import com.vaadin.hilla.route.records.ClientViewConfig; import org.jsoup.nodes.DataNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -138,21 +139,28 @@ protected Map collectClientViews( deploymentConfiguration); } - return clientRouteRegistry.getAllRoutes().values().stream() - .filter(config -> config.getRouteParameters() == null - || config.getRouteParameters().isEmpty() - || config.getRouteParameters().values().stream() - .noneMatch( - param -> param == RouteParamType.REQUIRED)) - .filter(config -> routeUtil.isRouteAllowed(isUserInRole, - isUserAuthenticated, config)) - .map(config -> new AvailableViewInfo(config.getTitle(), - config.getRolesAllowed(), config.isLoginRequired(), - config.getRoute(), config.isLazy(), - config.isAutoRegistered(), config.menu(), - config.getRouteParameters())) - .collect(Collectors.toMap(AvailableViewInfo::route, - Function.identity())); + return clientRouteRegistry.getAllRoutes().entrySet().stream() + .filter(viewMapping -> !hasRequiredParameter( + viewMapping.getValue().getRouteParameters())) + .filter(viewMapping -> routeUtil.isRouteAllowed(isUserInRole, + isUserAuthenticated, viewMapping.getValue())) + .collect(Collectors.toMap(Map.Entry::getKey, + viewMapping -> toAvailableViewInfo( + viewMapping.getValue()))); + } + + private boolean hasRequiredParameter( + Map routeParameters) { + return routeParameters != null && !routeParameters.isEmpty() + && routeParameters.values().stream().anyMatch( + paramType -> paramType == RouteParamType.REQUIRED); + } + + private AvailableViewInfo toAvailableViewInfo(ClientViewConfig config) { + return new AvailableViewInfo(config.getTitle(), + config.getRolesAllowed(), config.isLoginRequired(), + config.getRoute(), config.isLazy(), config.isAutoRegistered(), + config.menu(), config.getRouteParameters()); } protected Map collectServerViews(