From d081cc112f2ad7e07fb0258bafe9f85dd6f27a34 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Wed, 11 Mar 2026 19:51:23 +0200 Subject: [PATCH] reverted ensureDeterministicPropertyOrder --- .../server/config/SwaggerConfiguration.java | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java b/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java index 26a0e40f05..9be6a45464 100644 --- a/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java +++ b/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java @@ -477,12 +477,6 @@ public class SwaggerConfiguration { .forEach(response -> replaceInlineOneOfInContent(response.getContent(), schemas)); } }); - - // Final safety net: ensure all schema properties are in deterministic order. - // The ModelConverter sorts properties during resolution, but springdoc may - // modify schemas afterwards (e.g. polymorphism handling, discriminator injection). - // This pass catches any properties that were added/reordered post-converter. - schemas.values().forEach(this::ensureDeterministicPropertyOrder); } // Set JsonNode schema last so model scanning cannot overwrite it @@ -834,28 +828,6 @@ public class SwaggerConfiguration { } } - /** - * Ensures all properties in a schema (top-level and inside allOf inline elements) - * are in deterministic alphabetical order. Acts as a safety net for schemas that - * were modified after the ModelConverter's sorting pass (e.g. by springdoc's - * polymorphism handling or discriminator injection for interfaces). - */ - @SuppressWarnings("unchecked") - private void ensureDeterministicPropertyOrder(Schema schema) { - if (schema.getProperties() != null && schema.getProperties().size() > 1) { - schema.setProperties(new LinkedHashMap<>(new TreeMap<>(schema.getProperties()))); - } - if (schema.getAllOf() != null) { - for (Schema allOfElement : (List) schema.getAllOf()) { - if (allOfElement.get$ref() == null - && allOfElement.getProperties() != null - && allOfElement.getProperties().size() > 1) { - allOfElement.setProperties(new LinkedHashMap<>(new TreeMap<>(allOfElement.getProperties()))); - } - } - } - } - /** * Returns the JSON property names that are backed by fields declared directly in {@code cls} * (not inherited from a superclass). Used to distinguish "own" from "inherited" properties