From d1e01683ed5c6c47d61f79d1ff548806df47185f Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Mon, 23 Feb 2026 12:24:50 +0200 Subject: [PATCH] improvements fro JsonNode --- .../org/thingsboard/server/config/SwaggerConfiguration.java | 6 ------ .../server/controller/DeviceConnectivityController.java | 2 +- .../server/common/data/BaseDataWithAdditionalInfo.java | 2 +- .../thingsboard/server/common/data/alarm/AlarmComment.java | 2 +- .../server/common/data/relation/EntityRelation.java | 2 +- .../org/thingsboard/server/common/data/rule/RuleNode.java | 4 ++-- .../server/common/data/sync/ie/WidgetsBundleExportData.java | 2 +- 7 files changed, 7 insertions(+), 13 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 aed49780f3..c37b258572 100644 --- a/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java +++ b/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java @@ -303,18 +303,12 @@ public class SwaggerConfiguration { } private void addDefaultSchemas(OpenAPI openAPI) { - Schema jsonNodeSchema = new Schema<>() - .type("object") - .description("Arbitrary JSON object or primitive value") - .additionalProperties(true) - .example(JacksonUtil.newObjectNode()); Schema errorCodeSchema = new Schema<>() .type("integer") .description("Platform error code") ._enum(Arrays.asList(2, 10, 11, 15, 20, 30, 31, 32, 33, 34, 35, 40, 45, 46)); openAPI.getComponents().addSchemas("ThingsboardErrorCode", errorCodeSchema); openAPI.getComponents() - .addSchemas("JsonNode", jsonNodeSchema) .addSchemas("LoginRequest", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(LoginRequest.class)).schema) .addSchemas("LoginResponse", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(LoginResponse.class)).schema) .addSchemas("ThingsboardErrorResponse", ModelConverters.getInstance().readAllAsResolvedSchema(new AnnotatedType().type(ThingsboardErrorResponse.class)).schema) diff --git a/application/src/main/java/org/thingsboard/server/controller/DeviceConnectivityController.java b/application/src/main/java/org/thingsboard/server/controller/DeviceConnectivityController.java index 4fe5ce63fc..b7e94d2212 100644 --- a/application/src/main/java/org/thingsboard/server/controller/DeviceConnectivityController.java +++ b/application/src/main/java/org/thingsboard/server/controller/DeviceConnectivityController.java @@ -76,7 +76,7 @@ public class DeviceConnectivityController extends BaseController { description = "OK", content = @Content( mediaType = MediaType.APPLICATION_JSON_VALUE, - schema = @Schema(ref = "#/components/schemas/JsonNode"), + schema = @Schema(implementation = JsonNode.class), examples = { @ExampleObject( name = "http", diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/BaseDataWithAdditionalInfo.java b/common/data/src/main/java/org/thingsboard/server/common/data/BaseDataWithAdditionalInfo.java index 0b0bc9ec65..d854fa3eaf 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/BaseDataWithAdditionalInfo.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/BaseDataWithAdditionalInfo.java @@ -40,7 +40,7 @@ import java.util.function.Supplier; public abstract class BaseDataWithAdditionalInfo extends BaseData implements HasAdditionalInfo { @NoXss - @Schema(implementation = JsonNode.class) + @Schema private transient JsonNode additionalInfo; @JsonIgnore private byte[] additionalInfoBytes; diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmComment.java b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmComment.java index fec8f13dfd..ef7499fa33 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmComment.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmComment.java @@ -47,7 +47,7 @@ public class AlarmComment extends BaseData implements HasName { private UserId userId; @Schema(description = "Defines origination of comment. System type means comment was created by TB. OTHER type means comment was created by user.", example = "SYSTEM/OTHER") private AlarmCommentType type; - @Schema(description = "JSON object with text of comment.", implementation = JsonNode.class) + @Schema(description = "JSON object with text of comment.") @NoXss @Length(fieldName = "comment", max = 10000) @EqualsAndHashCode.Include diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/relation/EntityRelation.java b/common/data/src/main/java/org/thingsboard/server/common/data/relation/EntityRelation.java index 76918cc8d9..d624f94c44 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/relation/EntityRelation.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/relation/EntityRelation.java @@ -103,7 +103,7 @@ public class EntityRelation implements HasVersion, Serializable, EdqsObject { this.version = entityRelation.getVersion(); } - @Schema(description = "Additional parameters of the relation", implementation = JsonNode.class) + @Schema(description = "Additional parameters of the relation") public JsonNode getAdditionalInfo() { return BaseDataWithAdditionalInfo.getJson(() -> additionalInfo, () -> additionalInfoBytes); } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleNode.java b/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleNode.java index 981d5c2598..fa5da04ba7 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleNode.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/rule/RuleNode.java @@ -61,7 +61,7 @@ public class RuleNode extends BaseDataWithAdditionalInfo implements private String queueName; @Schema(description = "Version of rule node configuration. ", example = "0") private int configurationVersion; - @Schema(description = "JSON with the rule node configuration. Structure depends on the rule node implementation.", implementation = JsonNode.class) + @Schema(description = "JSON with the rule node configuration. Structure depends on the rule node implementation.") private JsonNode configuration; private RuleNodeId externalId; @@ -105,7 +105,7 @@ public class RuleNode extends BaseDataWithAdditionalInfo implements return super.getCreatedTime(); } - @Schema(description = "Additional parameters of the rule node. Contains 'layoutX' and 'layoutY' properties for visualization.", implementation = JsonNode.class) + @Schema(description = "Additional parameters of the rule node. Contains 'layoutX' and 'layoutY' properties for visualization.") @Override public JsonNode getAdditionalInfo() { return super.getAdditionalInfo(); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/WidgetsBundleExportData.java b/common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/WidgetsBundleExportData.java index 962c917186..e225364868 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/WidgetsBundleExportData.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/sync/ie/WidgetsBundleExportData.java @@ -32,7 +32,7 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class WidgetsBundleExportData extends EntityExportData { - @ArraySchema(schema = @Schema(description = "List of widgets in the bundle", implementation = JsonNode.class)) + @ArraySchema(schema = @Schema(description = "List of widgets in the bundle")) @JsonProperty(index = 3) private List widgets;