diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/devmode/ResourceNotFoundData.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/devmode/ResourceNotFoundData.java index b9f28a85dee5a..d17b2ddcf9e8b 100644 --- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/devmode/ResourceNotFoundData.java +++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/devmode/ResourceNotFoundData.java @@ -124,8 +124,9 @@ public String getHTMLContent() { // Additional Endpoints if (!this.additionalEndpoints.isEmpty()) { + List endpoints = getSortedAdditionalRouteDescriptions(); builder.resourcesStart(ADDITIONAL_ENDPOINTS); - for (AdditionalRouteDescription additionalEndpoint : this.additionalEndpoints) { + for (AdditionalRouteDescription additionalEndpoint : endpoints) { builder.staticResourcePath(additionalEndpoint.getUri(), additionalEndpoint.getDescription()); } builder.resourcesEnd(); @@ -189,7 +190,8 @@ public JsonObject getJsonContent() { // Additional Endpoints if (!this.additionalEndpoints.isEmpty()) { JsonArray ae = new JsonArray(); - for (AdditionalRouteDescription additionalEndpoint : this.additionalEndpoints) { + List endpoints = getSortedAdditionalRouteDescriptions(); + for (AdditionalRouteDescription additionalEndpoint : endpoints) { ae.add(JsonObject.of(URI, additionalEndpoint.getUri(), DESCRIPTION, additionalEndpoint.getDescription())); } infoMap.put(ADDITIONAL_ENDPOINTS, ae); @@ -250,7 +252,8 @@ public String getTextContent() { // Additional Endpoints if (!this.additionalEndpoints.isEmpty()) { sw.write(ADDITIONAL_ENDPOINTS + NL); - for (AdditionalRouteDescription additionalEndpoint : this.additionalEndpoints) { + List endpoints = getSortedAdditionalRouteDescriptions(); + for (AdditionalRouteDescription additionalEndpoint : endpoints) { sw.write(TAB + "- " + additionalEndpoint.getUri() + NL); sw.write(TAB + TAB + "- " + additionalEndpoint.getDescription() + NL); } @@ -341,6 +344,13 @@ private boolean isHtmlFileName(String fileName) { return fileName.endsWith(".html") || fileName.endsWith(".htm") || fileName.endsWith(".xhtml"); } + private List getSortedAdditionalRouteDescriptions() { + return this.additionalEndpoints.stream().sorted( + Comparator.comparingInt((AdditionalRouteDescription desc) -> desc.getUri().split("/").length) + .thenComparing(AdditionalRouteDescription::getUri)) + .toList(); + } + private static final String HEADING = "404 - Resource Not Found"; private static final String RESOURCE_ENDPOINTS = "Resource Endpoints"; private static final String SERVLET_MAPPINGS = "Servlet mappings";