From 2d28d32301ba6b3bd463d276ff59b7c6f1bbd035 Mon Sep 17 00:00:00 2001 From: yamada-y0 Date: Mon, 9 Sep 2024 21:20:01 +0900 Subject: [PATCH] Sort the list of endpoints in the generated dev 404 --- .../runtime/devmode/ResourceNotFoundData.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) 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";