diff --git a/ce/src/main/java/org/thingsboard/client/model/AiModelExportData.java b/ce/src/main/java/org/thingsboard/client/model/AiModelExportData.java index d39124f7..7ede2458 100644 --- a/ce/src/main/java/org/thingsboard/client/model/AiModelExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/AiModelExportData.java @@ -75,18 +75,36 @@ public AiModelExportData relations(@Nullable List relations) { return this; } + @Override + public AiModelExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AiModelExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AiModelExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AiModelExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AiModelExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AiModelExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/AliasEntityId.java b/ce/src/main/java/org/thingsboard/client/model/AliasEntityId.java index 1d77a664..16f8feb4 100644 --- a/ce/src/main/java/org/thingsboard/client/model/AliasEntityId.java +++ b/ce/src/main/java/org/thingsboard/client/model/AliasEntityId.java @@ -15,128 +15,159 @@ */ package org.thingsboard.client.model; -import javax.annotation.Generated; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.StringJoiner; -import java.util.Objects; -import java.util.Map; -import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; -import java.util.UUID; -import org.thingsboard.client.model.AliasEntityType; -import org.thingsboard.client.model.EntityType; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.thingsboard.client.ApiClient; +import javax.annotation.Nullable; +import java.util.Objects; +import java.util.StringJoiner; +import java.util.UUID; -import org.thingsboard.client.ApiClient; /** - * AliasEntityId + * Entity ID used by entity filters: either an entity of a given {@link EntityType}, or an alias + * ({@link AliasEntityType}) that the server resolves for the current user. + *

+ * Hand-written: it replaces the generated model (see generate-client.sh). The server writes both + * kinds in one {@code entityType} field, e.g. {@code {"entityType": "DEVICE", "id": "..."}} or + * {@code {"entityType": "CURRENT_USER"}}, so the spec documents {@code entityType} as a string. + * This class keeps the typed accessors of earlier client versions on top of that field. */ @JsonPropertyOrder({ - AliasEntityId.JSON_PROPERTY_ALIAS_ENTITY_TYPE, AliasEntityId.JSON_PROPERTY_ENTITY_TYPE, AliasEntityId.JSON_PROPERTY_ID }) -@Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.20.0") +@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, + getterVisibility = JsonAutoDetect.Visibility.NONE, + isGetterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE) public class AliasEntityId { - public static final String JSON_PROPERTY_ALIAS_ENTITY_TYPE = "aliasEntityType"; - @Nullable - private AliasEntityType aliasEntityType; - public static final String JSON_PROPERTY_ENTITY_TYPE = "entityType"; - @Nonnull - private EntityType entityType; + @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + private String entityType; + + /** + * @deprecated The server never writes {@code aliasEntityType}; an alias is sent in {@code entityType}. + */ + @Deprecated + public static final String JSON_PROPERTY_ALIAS_ENTITY_TYPE = "aliasEntityType"; public static final String JSON_PROPERTY_ID = "id"; - @Nonnull + // Omitted when null: the server rejects "id": null for an alias. + @JsonProperty(value = JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.NON_NULL) private UUID id; - public AliasEntityId() { + public AliasEntityId() { } - public AliasEntityId aliasEntityType(@Nullable AliasEntityType aliasEntityType) { - this.aliasEntityType = aliasEntityType; + /** + * Sets the entity type of an entity ID; {@link #id(UUID)} is required with it. + */ + public AliasEntityId entityType(@Nullable EntityType entityType) { + setEntityType(entityType); return this; } /** - * Get aliasEntityType - * @return aliasEntityType + * @return the entity type, or {@code null} if this is an alias */ @Nullable - @JsonProperty(value = JSON_PROPERTY_ALIAS_ENTITY_TYPE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public AliasEntityType getAliasEntityType() { - return aliasEntityType; + public EntityType getEntityType() { + if (entityType != null) { + for (EntityType type : EntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; } - - @JsonProperty(value = JSON_PROPERTY_ALIAS_ENTITY_TYPE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAliasEntityType(@Nullable AliasEntityType aliasEntityType) { - this.aliasEntityType = aliasEntityType; + /** + * Sets the entity type of an entity ID. {@code null} clears the value only if it is an entity type, + * so it does not clear an alias (e.g. when properties are copied one by one). + */ + public void setEntityType(@Nullable EntityType entityType) { + if (entityType != null) { + this.entityType = entityType.getValue(); + } else if (getEntityType() != null) { + this.entityType = null; + } } - - public AliasEntityId entityType(@Nonnull EntityType entityType) { - this.entityType = entityType; + /** + * Sets an alias that the server resolves for the current user; the ID is optional. + */ + public AliasEntityId aliasEntityType(@Nullable AliasEntityType aliasEntityType) { + setAliasEntityType(aliasEntityType); return this; } /** - * Get entityType - * @return entityType + * @return the alias, or {@code null} if this is an entity ID */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public EntityType getEntityType() { - return entityType; + @Nullable + public AliasEntityType getAliasEntityType() { + if (entityType != null) { + for (AliasEntityType type : AliasEntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; } + /** + * Sets an alias. {@code null} clears the value only if it is an alias, so it does not clear + * an entity type (e.g. when properties are copied one by one). + */ + public void setAliasEntityType(@Nullable AliasEntityType aliasEntityType) { + if (aliasEntityType != null) { + this.entityType = aliasEntityType.getValue(); + } else if (getAliasEntityType() != null) { + this.entityType = null; + } + } - @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setEntityType(@Nonnull EntityType entityType) { + /** + * Sets the raw {@code entityType} value: an {@link EntityType} or {@link AliasEntityType} name. + */ + public AliasEntityId entityTypeValue(@Nullable String entityType) { this.entityType = entityType; + return this; } + /** + * @return the raw {@code entityType} value as the server sent it + */ + @Nullable + public String getEntityTypeValue() { + return entityType; + } - public AliasEntityId id(@Nonnull UUID id) { + public AliasEntityId id(@Nullable UUID id) { this.id = id; return this; } /** - * ID of the entity, time-based UUID v1 + * ID of the entity, time-based UUID v1; required for an entity ID, optional for an alias. * @return id */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ID, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @Nullable public UUID getId() { return id; } - - @JsonProperty(value = JSON_PROPERTY_ID, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setId(@Nonnull UUID id) { + public void setId(@Nullable UUID id) { this.id = id; } - - /** - * Return true if this AliasEntityId object is equal to o. - */ @Override public boolean equals(Object o) { if (this == o) { @@ -146,36 +177,21 @@ public boolean equals(Object o) { return false; } AliasEntityId aliasEntityId = (AliasEntityId) o; - return Objects.equals(this.aliasEntityType, aliasEntityId.aliasEntityType) && - Objects.equals(this.entityType, aliasEntityId.entityType) && + return Objects.equals(this.entityType, aliasEntityId.entityType) && Objects.equals(this.id, aliasEntityId.id); } @Override public int hashCode() { - return Objects.hash(aliasEntityType, entityType, id); + return Objects.hash(entityType, id); } @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class AliasEntityId {\n"); - sb.append(" aliasEntityType: ").append(toIndentedString(aliasEntityType)).append("\n"); - sb.append(" entityType: ").append(toIndentedString(entityType)).append("\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); + return "class AliasEntityId {\n" + + " entityType: " + entityType + "\n" + + " id: " + id + "\n" + + "}"; } /** @@ -195,37 +211,19 @@ public String toUrlQueryString() { */ public String toUrlQueryString(String prefix) { String suffix = ""; - String containerSuffix = ""; - String containerPrefix = ""; if (prefix == null) { - // style=form, explode=true, e.g. /pet?name=cat&type=manx prefix = ""; } else { - // deepObject style e.g. /pet?id[name]=cat&id[type]=manx prefix = prefix + "["; suffix = "]"; - containerSuffix = "]"; - containerPrefix = "["; } - StringJoiner joiner = new StringJoiner("&"); - - // add `aliasEntityType` to the URL query string - if (getAliasEntityType() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%saliasEntityType%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getAliasEntityType())))); + if (entityType != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sentityType%s=%s", prefix, suffix, ApiClient.urlEncode(entityType))); } - - // add `entityType` to the URL query string - if (getEntityType() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sentityType%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getEntityType())))); + if (id != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sid%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(id)))); } - - // add `id` to the URL query string - if (getId() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sid%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getId())))); - } - return joiner.toString(); } } - diff --git a/ce/src/main/java/org/thingsboard/client/model/AssetExportData.java b/ce/src/main/java/org/thingsboard/client/model/AssetExportData.java index 4344224a..46031dbb 100644 --- a/ce/src/main/java/org/thingsboard/client/model/AssetExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/AssetExportData.java @@ -75,18 +75,36 @@ public AssetExportData relations(@Nullable List relations) { return this; } + @Override + public AssetExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AssetExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AssetExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AssetExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AssetExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AssetExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java b/ce/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java index 8c60bba0..96ac759c 100644 --- a/ce/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java @@ -75,18 +75,36 @@ public AssetProfileExportData relations(@Nullable List relations return this; } + @Override + public AssetProfileExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AssetProfileExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AssetProfileExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AssetProfileExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AssetProfileExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AssetProfileExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/CustomerExportData.java b/ce/src/main/java/org/thingsboard/client/model/CustomerExportData.java index 0352193d..c7bba6f6 100644 --- a/ce/src/main/java/org/thingsboard/client/model/CustomerExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/CustomerExportData.java @@ -75,18 +75,36 @@ public CustomerExportData relations(@Nullable List relations) { return this; } + @Override + public CustomerExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public CustomerExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public CustomerExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public CustomerExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public CustomerExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this CustomerExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/DashboardExportData.java b/ce/src/main/java/org/thingsboard/client/model/DashboardExportData.java index 3a6e8cb3..e5b664a9 100644 --- a/ce/src/main/java/org/thingsboard/client/model/DashboardExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/DashboardExportData.java @@ -75,18 +75,36 @@ public DashboardExportData relations(@Nullable List relations) { return this; } + @Override + public DashboardExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DashboardExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DashboardExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DashboardExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DashboardExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DashboardExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/DeviceExportData.java b/ce/src/main/java/org/thingsboard/client/model/DeviceExportData.java index ad16a57b..cf007b20 100644 --- a/ce/src/main/java/org/thingsboard/client/model/DeviceExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/DeviceExportData.java @@ -105,18 +105,36 @@ public DeviceExportData relations(@Nullable List relations) { return this; } + @Override + public DeviceExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DeviceExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DeviceExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DeviceExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DeviceExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DeviceExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java b/ce/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java index e6f2dda9..46e91d95 100644 --- a/ce/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java @@ -75,18 +75,36 @@ public DeviceProfileExportData relations(@Nullable List relation return this; } + @Override + public DeviceProfileExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DeviceProfileExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DeviceProfileExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DeviceProfileExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DeviceProfileExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DeviceProfileExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java b/ce/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java index a7ebac2b..fcb91cc1 100644 --- a/ce/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java +++ b/ce/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java @@ -339,6 +339,12 @@ public DummyJobConfiguration toReprocess(@Nullable List toReprocess) return this; } + @Override + public DummyJobConfiguration addToReprocessItem(TaskResult toReprocessItem) { + super.addToReprocessItem(toReprocessItem); + return this; + } + /** * Return true if this DummyJobConfiguration object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/DummyJobResult.java b/ce/src/main/java/org/thingsboard/client/model/DummyJobResult.java index 02392ef9..bcb2506a 100644 --- a/ce/src/main/java/org/thingsboard/client/model/DummyJobResult.java +++ b/ce/src/main/java/org/thingsboard/client/model/DummyJobResult.java @@ -87,6 +87,12 @@ public DummyJobResult results(@Nullable List results) { return this; } + @Override + public DummyJobResult addResultsItem(TaskResult resultsItem) { + super.addResultsItem(resultsItem); + return this; + } + @Override public DummyJobResult generalError(@Nullable String generalError) { this.setGeneralError(generalError); diff --git a/ce/src/main/java/org/thingsboard/client/model/EntityViewExportData.java b/ce/src/main/java/org/thingsboard/client/model/EntityViewExportData.java index 31049a04..68e9a4df 100644 --- a/ce/src/main/java/org/thingsboard/client/model/EntityViewExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/EntityViewExportData.java @@ -75,18 +75,36 @@ public EntityViewExportData relations(@Nullable List relations) return this; } + @Override + public EntityViewExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public EntityViewExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public EntityViewExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public EntityViewExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public EntityViewExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this EntityViewExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java b/ce/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java index 8533fd35..54c8a43e 100644 --- a/ce/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java @@ -75,18 +75,36 @@ public NotificationRuleExportData relations(@Nullable List relat return this; } + @Override + public NotificationRuleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationRuleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationRuleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationRuleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationRuleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationRuleExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java b/ce/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java index 49b7bc5b..e535c934 100644 --- a/ce/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java @@ -75,18 +75,36 @@ public NotificationTargetExportData relations(@Nullable List rel return this; } + @Override + public NotificationTargetExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationTargetExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationTargetExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationTargetExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationTargetExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationTargetExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java b/ce/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java index 4c869f7a..608fb50f 100644 --- a/ce/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java @@ -75,18 +75,36 @@ public NotificationTemplateExportData relations(@Nullable List r return this; } + @Override + public NotificationTemplateExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationTemplateExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationTemplateExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationTemplateExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationTemplateExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationTemplateExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java b/ce/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java index 760cc4ae..72bb4510 100644 --- a/ce/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java @@ -75,18 +75,36 @@ public OtaPackageExportData relations(@Nullable List relations) return this; } + @Override + public OtaPackageExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public OtaPackageExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public OtaPackageExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public OtaPackageExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public OtaPackageExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this OtaPackageExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/RuleChainExportData.java b/ce/src/main/java/org/thingsboard/client/model/RuleChainExportData.java index abc0ec84..a1346a26 100644 --- a/ce/src/main/java/org/thingsboard/client/model/RuleChainExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/RuleChainExportData.java @@ -105,18 +105,36 @@ public RuleChainExportData relations(@Nullable List relations) { return this; } + @Override + public RuleChainExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public RuleChainExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public RuleChainExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public RuleChainExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public RuleChainExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this RuleChainExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/TbResourceExportData.java b/ce/src/main/java/org/thingsboard/client/model/TbResourceExportData.java index 14711026..5e200c5d 100644 --- a/ce/src/main/java/org/thingsboard/client/model/TbResourceExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/TbResourceExportData.java @@ -75,18 +75,36 @@ public TbResourceExportData relations(@Nullable List relations) return this; } + @Override + public TbResourceExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public TbResourceExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public TbResourceExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public TbResourceExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public TbResourceExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this TbResourceExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java b/ce/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java index 51136af7..4a5d8ec1 100644 --- a/ce/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java @@ -75,18 +75,36 @@ public WidgetTypeExportData relations(@Nullable List relations) return this; } + @Override + public WidgetTypeExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public WidgetTypeExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public WidgetTypeExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public WidgetTypeExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public WidgetTypeExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this WidgetTypeExportData object is equal to o. */ diff --git a/ce/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java b/ce/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java index de785786..cbd78ed7 100644 --- a/ce/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java +++ b/ce/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java @@ -149,18 +149,36 @@ public WidgetsBundleExportData relations(@Nullable List relation return this; } + @Override + public WidgetsBundleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public WidgetsBundleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public WidgetsBundleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public WidgetsBundleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public WidgetsBundleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this WidgetsBundleExportData object is equal to o. */ diff --git a/common/src/main/java/org/thingsboard/client/model/AliasEntityId.java b/common/src/main/java/org/thingsboard/client/model/AliasEntityId.java new file mode 100644 index 00000000..16f8feb4 --- /dev/null +++ b/common/src/main/java/org/thingsboard/client/model/AliasEntityId.java @@ -0,0 +1,229 @@ +/** + * Copyright © 2026-2026 ThingsBoard, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.client.model; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.thingsboard.client.ApiClient; + +import javax.annotation.Nullable; +import java.util.Objects; +import java.util.StringJoiner; +import java.util.UUID; + +/** + * Entity ID used by entity filters: either an entity of a given {@link EntityType}, or an alias + * ({@link AliasEntityType}) that the server resolves for the current user. + *

+ * Hand-written: it replaces the generated model (see generate-client.sh). The server writes both + * kinds in one {@code entityType} field, e.g. {@code {"entityType": "DEVICE", "id": "..."}} or + * {@code {"entityType": "CURRENT_USER"}}, so the spec documents {@code entityType} as a string. + * This class keeps the typed accessors of earlier client versions on top of that field. + */ +@JsonPropertyOrder({ + AliasEntityId.JSON_PROPERTY_ENTITY_TYPE, + AliasEntityId.JSON_PROPERTY_ID +}) +@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, + getterVisibility = JsonAutoDetect.Visibility.NONE, + isGetterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE) +public class AliasEntityId { + public static final String JSON_PROPERTY_ENTITY_TYPE = "entityType"; + @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + private String entityType; + + /** + * @deprecated The server never writes {@code aliasEntityType}; an alias is sent in {@code entityType}. + */ + @Deprecated + public static final String JSON_PROPERTY_ALIAS_ENTITY_TYPE = "aliasEntityType"; + + public static final String JSON_PROPERTY_ID = "id"; + // Omitted when null: the server rejects "id": null for an alias. + @JsonProperty(value = JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.NON_NULL) + private UUID id; + + public AliasEntityId() { + } + + /** + * Sets the entity type of an entity ID; {@link #id(UUID)} is required with it. + */ + public AliasEntityId entityType(@Nullable EntityType entityType) { + setEntityType(entityType); + return this; + } + + /** + * @return the entity type, or {@code null} if this is an alias + */ + @Nullable + public EntityType getEntityType() { + if (entityType != null) { + for (EntityType type : EntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; + } + + /** + * Sets the entity type of an entity ID. {@code null} clears the value only if it is an entity type, + * so it does not clear an alias (e.g. when properties are copied one by one). + */ + public void setEntityType(@Nullable EntityType entityType) { + if (entityType != null) { + this.entityType = entityType.getValue(); + } else if (getEntityType() != null) { + this.entityType = null; + } + } + + /** + * Sets an alias that the server resolves for the current user; the ID is optional. + */ + public AliasEntityId aliasEntityType(@Nullable AliasEntityType aliasEntityType) { + setAliasEntityType(aliasEntityType); + return this; + } + + /** + * @return the alias, or {@code null} if this is an entity ID + */ + @Nullable + public AliasEntityType getAliasEntityType() { + if (entityType != null) { + for (AliasEntityType type : AliasEntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; + } + + /** + * Sets an alias. {@code null} clears the value only if it is an alias, so it does not clear + * an entity type (e.g. when properties are copied one by one). + */ + public void setAliasEntityType(@Nullable AliasEntityType aliasEntityType) { + if (aliasEntityType != null) { + this.entityType = aliasEntityType.getValue(); + } else if (getAliasEntityType() != null) { + this.entityType = null; + } + } + + /** + * Sets the raw {@code entityType} value: an {@link EntityType} or {@link AliasEntityType} name. + */ + public AliasEntityId entityTypeValue(@Nullable String entityType) { + this.entityType = entityType; + return this; + } + + /** + * @return the raw {@code entityType} value as the server sent it + */ + @Nullable + public String getEntityTypeValue() { + return entityType; + } + + public AliasEntityId id(@Nullable UUID id) { + this.id = id; + return this; + } + + /** + * ID of the entity, time-based UUID v1; required for an entity ID, optional for an alias. + * @return id + */ + @Nullable + public UUID getId() { + return id; + } + + public void setId(@Nullable UUID id) { + this.id = id; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AliasEntityId aliasEntityId = (AliasEntityId) o; + return Objects.equals(this.entityType, aliasEntityId.entityType) && + Objects.equals(this.id, aliasEntityId.id); + } + + @Override + public int hashCode() { + return Objects.hash(entityType, id); + } + + @Override + public String toString() { + return "class AliasEntityId {\n" + + " entityType: " + entityType + "\n" + + " id: " + id + "\n" + + "}"; + } + + /** + * Convert the instance into URL query string. + * + * @return URL query string + */ + public String toUrlQueryString() { + return toUrlQueryString(null); + } + + /** + * Convert the instance into URL query string. + * + * @param prefix prefix of the query string + * @return URL query string + */ + public String toUrlQueryString(String prefix) { + String suffix = ""; + if (prefix == null) { + prefix = ""; + } else { + prefix = prefix + "["; + suffix = "]"; + } + StringJoiner joiner = new StringJoiner("&"); + if (entityType != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sentityType%s=%s", prefix, suffix, ApiClient.urlEncode(entityType))); + } + if (id != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sid%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(id)))); + } + return joiner.toString(); + } +} diff --git a/common/src/test/java/org/thingsboard/client/model/AliasEntityIdTest.java b/common/src/test/java/org/thingsboard/client/model/AliasEntityIdTest.java new file mode 100644 index 00000000..71578ae8 --- /dev/null +++ b/common/src/test/java/org/thingsboard/client/model/AliasEntityIdTest.java @@ -0,0 +1,101 @@ +/** + * Copyright © 2026-2026 ThingsBoard, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.client.model; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; +import org.thingsboard.client.JSON; + +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +class AliasEntityIdTest { + + private final ObjectMapper mapper = new JSON().getMapper(); + + @Test + void entityIdIsWrittenWithEntityTypeAndId() throws Exception { + UUID id = UUID.randomUUID(); + AliasEntityId entityId = new AliasEntityId().entityType(EntityType.DEVICE).id(id); + + assertEquals("{\"entityType\":\"DEVICE\",\"id\":\"" + id + "\"}", mapper.writeValueAsString(entityId)); + assertEquals(EntityType.DEVICE, entityId.getEntityType()); + assertNull(entityId.getAliasEntityType()); + } + + @Test + void aliasIsWrittenInEntityTypeWithoutId() throws Exception { + AliasEntityId alias = new AliasEntityId().aliasEntityType(AliasEntityType.CURRENT_USER); + + assertEquals("{\"entityType\":\"CURRENT_USER\"}", mapper.writeValueAsString(alias)); + assertEquals(AliasEntityType.CURRENT_USER, alias.getAliasEntityType()); + assertNull(alias.getEntityType()); + } + + @Test + void serverJsonIsRead() throws Exception { + UUID id = UUID.randomUUID(); + + AliasEntityId entityId = mapper.readValue("{\"entityType\":\"ASSET\",\"id\":\"" + id + "\"}", AliasEntityId.class); + assertEquals(EntityType.ASSET, entityId.getEntityType()); + assertEquals(id, entityId.getId()); + + AliasEntityId alias = mapper.readValue("{\"entityType\":\"CURRENT_CUSTOMER\",\"id\":\"" + id + "\"}", AliasEntityId.class); + assertEquals(AliasEntityType.CURRENT_CUSTOMER, alias.getAliasEntityType()); + assertEquals("CURRENT_CUSTOMER", alias.getEntityTypeValue()); + assertEquals(id, alias.getId()); + + SingleEntityFilter filter = mapper.readValue( + "{\"type\":\"singleEntity\",\"singleEntity\":{\"entityType\":\"CURRENT_TENANT\"}}", SingleEntityFilter.class); + assertEquals(AliasEntityType.CURRENT_TENANT, filter.getSingleEntity().getAliasEntityType()); + } + + @Test + void settingNullEntityTypeKeepsAlias() { + // e.g. BeanUtils.copyProperties copies aliasEntityType, then entityType (null for an alias) + AliasEntityId alias = new AliasEntityId(); + alias.setAliasEntityType(AliasEntityType.CURRENT_USER); + alias.setEntityType(null); + + assertEquals(AliasEntityType.CURRENT_USER, alias.getAliasEntityType()); + assertEquals("CURRENT_USER", alias.getEntityTypeValue()); + } + + @Test + void settingNullAliasKeepsEntityType() { + UUID id = UUID.randomUUID(); + AliasEntityId entityId = new AliasEntityId(); + entityId.setEntityType(EntityType.DEVICE); + entityId.setId(id); + entityId.setAliasEntityType(null); + + assertEquals(EntityType.DEVICE, entityId.getEntityType()); + assertEquals(id, entityId.getId()); + } + + @Test + void settingNullClearsValueOfTheSameKind() { + AliasEntityId entityId = new AliasEntityId().entityType(EntityType.DEVICE); + entityId.setEntityType(null); + assertNull(entityId.getEntityTypeValue()); + + AliasEntityId alias = new AliasEntityId().aliasEntityType(AliasEntityType.CURRENT_USER); + alias.aliasEntityType(null); + assertNull(alias.getEntityTypeValue()); + } +} diff --git a/generate-client.sh b/generate-client.sh index 33e5b626..40f9a554 100755 --- a/generate-client.sh +++ b/generate-client.sh @@ -41,12 +41,16 @@ # # What it does: # 1. Optionally fetches OpenAPI spec from a running ThingsBoard instance -# 2. Runs openapi-generator-cli (Java native HTTP client) -# 3. Strips auto-generated OpenAPI comment blocks from Java files -# 4. Copies generated src/main/java/ and docs/ into the module (replaces previous) -# 4b. Copies common/src/main/java/ and common/docs/ on top -# 5. Applies Apache 2.0 license headers via mvn license:format -# 6. Stages all changes with git add +# 2. Adds vendor extensions that keep the client compatible with earlier versions +# (openapi/client-compat.json): parent schemas, deprecated String overloads. +# PE and PaaS only; fails if the spec no longer matches the config +# 3. Runs openapi-generator-cli (Java native HTTP client) +# 4. Strips auto-generated OpenAPI comment blocks from Java files +# 5. Copies generated src/main/java/ and docs/ into the module (replaces previous) +# 5b. Copies common/src/main/java/ and common/docs/ on top (hand-written classes, +# e.g. model/AliasEntityId.java, replace the generated ones) +# 6. Applies Apache 2.0 license headers via mvn license:format +# 7. Stages all changes with git add # # Preserved on regeneration: # - /pom.xml @@ -59,7 +63,7 @@ # # Output log: generate-client.log (overwritten on each run) # -# Prerequisites: Java 17, Maven, Perl (Node.js/npm optional — JAR fallback used if absent) +# Prerequisites: Java 17, Maven, Perl, Python 3 (Node.js/npm optional — JAR fallback used if absent) # set -euo pipefail @@ -146,10 +150,23 @@ generate() { exit 1 fi + # Add the vendor extensions that keep the client compatible with code written + # against earlier versions (see openapi/client-compat.json). The script fails + # if the spec no longer matches the config. CE is deprecated: its spec is frozen + # at the last open-source snapshot and has none of the listed operations, so it + # is generated from the spec unchanged. + local client_spec_file="$spec_file" + if [ "$edition" != "ce" ]; then + client_spec_file="$SCRIPT_DIR/$edition/target/openapi-client.json" + mkdir -p "$(dirname "$client_spec_file")" + python3 "$SCRIPT_DIR/scripts/apply_client_compat.py" --edition "$edition" \ + "$SCRIPT_DIR/openapi/client-compat.json" "$spec_file" "$client_spec_file" + fi + # Run 1 — Java client (single class, no docs) echo "Generating client for edition: $edition from $spec_file" openapi-generator-cli generate \ - -i "$spec_file" \ + -i "$client_spec_file" \ -g java \ --library=native \ -o "$output_dir" \ diff --git a/openapi/api.mustache b/openapi/api.mustache index a2d856e0..fa9c1b09 100644 --- a/openapi/api.mustache +++ b/openapi/api.mustache @@ -354,6 +354,28 @@ public class {{classname}} { {{/asyncNative}} } + {{#vendorExtensions.x-legacy-string-params}} + /** + * {{summary}} + * @deprecated Earlier client versions took {{#allParams}}{{#vendorExtensions.x-legacy-string}}{@code {{paramName}}} {{/vendorExtensions.x-legacy-string}}{{/allParams}}as {@code String}; + * they are integers. Use {@link #{{operationId}}({{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}Args)} with integer values. + */ + @Deprecated(forRemoval = true) + public {{#returnType}}{{#asyncNative}}CompletableFuture<{{{returnType}}}>{{/asyncNative}}{{^asyncNative}}{{{returnType}}}{{/asyncNative}}{{/returnType}}{{^returnType}}{{#asyncNative}}CompletableFuture{{/asyncNative}}{{^asyncNative}}void{{/asyncNative}}{{/returnType}} {{operationId}}({{#allParams}}{{#vendorExtensions.x-legacy-string}}String{{/vendorExtensions.x-legacy-string}}{{^vendorExtensions.x-legacy-string}}{{{dataType}}}{{/vendorExtensions.x-legacy-string}} {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) throws ApiException { + {{#returnType}}return {{/returnType}}{{^returnType}}{{#asyncNative}}return {{/asyncNative}}{{/returnType}}{{operationId}}({{#allParams}}{{#vendorExtensions.x-legacy-string}}{{paramName}} == null ? null : Integer.valueOf({{paramName}}){{/vendorExtensions.x-legacy-string}}{{^vendorExtensions.x-legacy-string}}{{paramName}}{{/vendorExtensions.x-legacy-string}}{{^-last}}, {{/-last}}{{/allParams}}); + } + + /** + * {{summary}} + * @deprecated Earlier client versions took {{#allParams}}{{#vendorExtensions.x-legacy-string}}{@code {{paramName}}} {{/vendorExtensions.x-legacy-string}}{{/allParams}}as {@code String}; + * they are integers. Use {@link #{{operationId}}WithHttpInfo({{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}Args, Map)} with integer values. + */ + @Deprecated(forRemoval = true) + public {{#asyncNative}}CompletableFuture<{{/asyncNative}}ApiResponse<{{{returnType}}}{{^returnType}}Void{{/returnType}}>{{#asyncNative}}>{{/asyncNative}} {{operationId}}WithHttpInfo({{#allParams}}{{#vendorExtensions.x-legacy-string}}String{{/vendorExtensions.x-legacy-string}}{{^vendorExtensions.x-legacy-string}}{{{dataType}}}{{/vendorExtensions.x-legacy-string}} {{paramName}}, {{/allParams}}Map headers) throws ApiException { + return {{operationId}}WithHttpInfo({{#allParams}}{{#vendorExtensions.x-legacy-string}}{{paramName}} == null ? null : Integer.valueOf({{paramName}}){{/vendorExtensions.x-legacy-string}}{{^vendorExtensions.x-legacy-string}}{{paramName}}{{/vendorExtensions.x-legacy-string}}, {{/allParams}}headers); + } + + {{/vendorExtensions.x-legacy-string-params}} /** * {{summary}} * {{notes}} @@ -863,6 +885,16 @@ public class {{classname}} { this.{{paramName}} = {{paramName}}; return this; } + {{#vendorExtensions.x-legacy-string}} + /** + * @deprecated Earlier client versions took {@code {{paramName}}} as {@code String}; it is an integer. + * Use {@link #{{paramName}}(Integer)}. + */ + @Deprecated(forRemoval = true) + public Builder {{paramName}}(String {{paramName}}) { + return {{paramName}}({{paramName}} == null ? null : Integer.valueOf({{paramName}})); + } + {{/vendorExtensions.x-legacy-string}} {{/allParams}} public {{#lambda.titlecase}}{{operationId}}{{/lambda.titlecase}}Args build() { {{#requiredParams}} diff --git a/openapi/client-compat.json b/openapi/client-compat.json new file mode 100644 index 00000000..83a8e002 --- /dev/null +++ b/openapi/client-compat.json @@ -0,0 +1,119 @@ +{ + "subtypes": { + "AlarmInfo": "Alarm" + }, + "legacyStringParams": { + "getAssetsByEntityGroupId": [ + "pageSize", + "page" + ], + "getConverters": [ + "pageSize", + "page" + ], + "getCustomersByEntityGroupId": [ + "pageSize", + "page" + ], + "getDevicesByEntityGroupId": [ + "pageSize", + "page" + ], + "getEdgeEntityGroups": [ + "pageSize", + "page" + ], + "getEdgeSchedulerEvents": [ + "pageSize", + "page" + ], + "getEdgesByEntityGroupId": [ + "pageSize", + "page" + ], + "getEntities": [ + "pageSize", + "page" + ], + "getEntityGroupEntityInfosByOwnerAndTypeAndPageLink": [ + "pageSize", + "page" + ], + "getEntityGroupEntityInfosByTypeAndPageLink": [ + "pageSize", + "page" + ], + "getEntityGroupEntityInfosHierarchyByOwnerAndTypeAndPageLink": [ + "pageSize", + "page" + ], + "getEntityGroupsByOwnerAndTypeAndPageLink": [ + "pageSize", + "page" + ], + "getEntityGroupsByTypeAndPageLink": [ + "pageSize", + "page" + ], + "getEntityGroupsHierarchyByOwnerAndTypeAndPageLink": [ + "pageSize", + "page" + ], + "getEntityViewsByEntityGroupId": [ + "pageSize", + "page" + ], + "getIntegrationInfos": [ + "pageSize", + "page" + ], + "getIntegrations": [ + "pageSize", + "page" + ], + "getOwnerInfos": [ + "pageSize", + "page" + ], + "getOwners": [ + "pageSize", + "page" + ], + "getRoles": [ + "pageSize", + "page" + ], + "getScheduledReportEvents": [ + "pageSize", + "page" + ], + "getSharedEntityGroupEntityInfosByTypeAndPageLink": [ + "pageSize", + "page" + ], + "getSharedEntityGroupsByTypeAndPageLink": [ + "pageSize", + "page" + ], + "getUserAssets": [ + "pageSize", + "page" + ], + "getUserCustomers": [ + "pageSize", + "page" + ], + "getUserDevices": [ + "pageSize", + "page" + ], + "getUserEdges": [ + "pageSize", + "page" + ], + "getUserEntityViews": [ + "pageSize", + "page" + ] + } +} diff --git a/openapi/pojo.mustache b/openapi/pojo.mustache index 2bab2654..2f36970e 100644 --- a/openapi/pojo.mustache +++ b/openapi/pojo.mustache @@ -288,6 +288,24 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens return this; } + {{^vendorExtensions.x-is-jackson-optional-nullable}} + {{#isArray}} + @Override + public {{classname}} add{{nameInPascalCase}}Item({{{items.datatypeWithEnum}}} {{name}}Item) { + super.add{{nameInPascalCase}}Item({{name}}Item); + return this; + } + + {{/isArray}} + {{#isMap}} + @Override + public {{classname}} put{{nameInPascalCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) { + super.put{{nameInPascalCase}}Item(key, {{name}}Item); + return this; + } + + {{/isMap}} + {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/isDiscriminator}} {{/isOverridden}} {{/allVars}} diff --git a/paas/src/main/java/org/thingsboard/client/model/AiModelExportData.java b/paas/src/main/java/org/thingsboard/client/model/AiModelExportData.java index d39124f7..7ede2458 100644 --- a/paas/src/main/java/org/thingsboard/client/model/AiModelExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/AiModelExportData.java @@ -75,18 +75,36 @@ public AiModelExportData relations(@Nullable List relations) { return this; } + @Override + public AiModelExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AiModelExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AiModelExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AiModelExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AiModelExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AiModelExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/AlarmInfo.java b/paas/src/main/java/org/thingsboard/client/model/AlarmInfo.java index a94dc041..afce687a 100644 --- a/paas/src/main/java/org/thingsboard/client/model/AlarmInfo.java +++ b/paas/src/main/java/org/thingsboard/client/model/AlarmInfo.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.thingsboard.client.model.Alarm; import org.thingsboard.client.model.AlarmAssignee; import org.thingsboard.client.model.AlarmId; import org.thingsboard.client.model.AlarmSeverity; @@ -48,27 +49,9 @@ * AlarmInfo */ @JsonPropertyOrder({ - AlarmInfo.JSON_PROPERTY_ID, AlarmInfo.JSON_PROPERTY_CREATED_TIME, AlarmInfo.JSON_PROPERTY_TENANT_ID, AlarmInfo.JSON_PROPERTY_CUSTOMER_ID, - AlarmInfo.JSON_PROPERTY_TYPE, - AlarmInfo.JSON_PROPERTY_ORIGINATOR, - AlarmInfo.JSON_PROPERTY_SEVERITY, - AlarmInfo.JSON_PROPERTY_ACKNOWLEDGED, - AlarmInfo.JSON_PROPERTY_CLEARED, - AlarmInfo.JSON_PROPERTY_ASSIGNEE_ID, - AlarmInfo.JSON_PROPERTY_START_TS, - AlarmInfo.JSON_PROPERTY_END_TS, - AlarmInfo.JSON_PROPERTY_ACK_TS, - AlarmInfo.JSON_PROPERTY_CLEAR_TS, - AlarmInfo.JSON_PROPERTY_ASSIGN_TS, - AlarmInfo.JSON_PROPERTY_DETAILS, - AlarmInfo.JSON_PROPERTY_PROPAGATE, - AlarmInfo.JSON_PROPERTY_PROPAGATE_TO_OWNER, - AlarmInfo.JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY, - AlarmInfo.JSON_PROPERTY_PROPAGATE_TO_TENANT, - AlarmInfo.JSON_PROPERTY_PROPAGATE_RELATION_TYPES, AlarmInfo.JSON_PROPERTY_ORIGINATOR_NAME, AlarmInfo.JSON_PROPERTY_ORIGINATOR_LABEL, AlarmInfo.JSON_PROPERTY_ORIGINATOR_DISPLAY_NAME, @@ -77,11 +60,7 @@ AlarmInfo.JSON_PROPERTY_STATUS }) @Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.20.0") -public class AlarmInfo { - public static final String JSON_PROPERTY_ID = "id"; - @Nullable - private AlarmId id; - +public class AlarmInfo extends Alarm { public static final String JSON_PROPERTY_CREATED_TIME = "createdTime"; @Nullable private Long createdTime; @@ -94,74 +73,6 @@ public class AlarmInfo { @Nullable private CustomerId customerId; - public static final String JSON_PROPERTY_TYPE = "type"; - @Nonnull - private String type; - - public static final String JSON_PROPERTY_ORIGINATOR = "originator"; - @Nonnull - private EntityId originator; - - public static final String JSON_PROPERTY_SEVERITY = "severity"; - @Nonnull - private AlarmSeverity severity; - - public static final String JSON_PROPERTY_ACKNOWLEDGED = "acknowledged"; - @Nonnull - private Boolean acknowledged; - - public static final String JSON_PROPERTY_CLEARED = "cleared"; - @Nonnull - private Boolean cleared; - - public static final String JSON_PROPERTY_ASSIGNEE_ID = "assigneeId"; - @Nullable - private UserId assigneeId; - - public static final String JSON_PROPERTY_START_TS = "startTs"; - @Nullable - private Long startTs; - - public static final String JSON_PROPERTY_END_TS = "endTs"; - @Nullable - private Long endTs; - - public static final String JSON_PROPERTY_ACK_TS = "ackTs"; - @Nullable - private Long ackTs; - - public static final String JSON_PROPERTY_CLEAR_TS = "clearTs"; - @Nullable - private Long clearTs; - - public static final String JSON_PROPERTY_ASSIGN_TS = "assignTs"; - @Nullable - private Long assignTs; - - public static final String JSON_PROPERTY_DETAILS = "details"; - @Nullable - private com.fasterxml.jackson.databind.JsonNode details; - - public static final String JSON_PROPERTY_PROPAGATE = "propagate"; - @Nullable - private Boolean propagate; - - public static final String JSON_PROPERTY_PROPAGATE_TO_OWNER = "propagateToOwner"; - @Nullable - private Boolean propagateToOwner; - - public static final String JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY = "propagateToOwnerHierarchy"; - @Nullable - private Boolean propagateToOwnerHierarchy; - - public static final String JSON_PROPERTY_PROPAGATE_TO_TENANT = "propagateToTenant"; - @Nullable - private Boolean propagateToTenant; - - public static final String JSON_PROPERTY_PROPAGATE_RELATION_TYPES = "propagateRelationTypes"; - @Nullable - private List propagateRelationTypes = new ArrayList<>(); - public static final String JSON_PROPERTY_ORIGINATOR_NAME = "originatorName"; @Nullable private String originatorName; @@ -205,30 +116,6 @@ public AlarmInfo( this.status = status; } - public AlarmInfo id(@Nullable AlarmId id) { - this.id = id; - return this; - } - - /** - * JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. - * @return id - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public AlarmId getId() { - return id; - } - - - @JsonProperty(value = JSON_PROPERTY_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setId(@Nullable AlarmId id) { - this.id = id; - } - - /** * Timestamp of the alarm creation, in milliseconds * @return createdTime @@ -271,422 +158,6 @@ public CustomerId getCustomerId() { - public AlarmInfo type(@Nonnull String type) { - this.type = type; - return this; - } - - /** - * representing type of the Alarm - * @return type - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getType() { - return type; - } - - - @JsonProperty(value = JSON_PROPERTY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setType(@Nonnull String type) { - this.type = type; - } - - - public AlarmInfo originator(@Nonnull EntityId originator) { - this.originator = originator; - return this; - } - - /** - * JSON object with alarm originator id - * @return originator - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ORIGINATOR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public EntityId getOriginator() { - return originator; - } - - - @JsonProperty(value = JSON_PROPERTY_ORIGINATOR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setOriginator(@Nonnull EntityId originator) { - this.originator = originator; - } - - - public AlarmInfo severity(@Nonnull AlarmSeverity severity) { - this.severity = severity; - return this; - } - - /** - * Alarm severity - * @return severity - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_SEVERITY, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public AlarmSeverity getSeverity() { - return severity; - } - - - @JsonProperty(value = JSON_PROPERTY_SEVERITY, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setSeverity(@Nonnull AlarmSeverity severity) { - this.severity = severity; - } - - - public AlarmInfo acknowledged(@Nonnull Boolean acknowledged) { - this.acknowledged = acknowledged; - return this; - } - - /** - * Acknowledged - * @return acknowledged - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ACKNOWLEDGED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Boolean getAcknowledged() { - return acknowledged; - } - - - @JsonProperty(value = JSON_PROPERTY_ACKNOWLEDGED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setAcknowledged(@Nonnull Boolean acknowledged) { - this.acknowledged = acknowledged; - } - - - public AlarmInfo cleared(@Nonnull Boolean cleared) { - this.cleared = cleared; - return this; - } - - /** - * Cleared - * @return cleared - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_CLEARED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Boolean getCleared() { - return cleared; - } - - - @JsonProperty(value = JSON_PROPERTY_CLEARED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCleared(@Nonnull Boolean cleared) { - this.cleared = cleared; - } - - - public AlarmInfo assigneeId(@Nullable UserId assigneeId) { - this.assigneeId = assigneeId; - return this; - } - - /** - * Alarm assignee user id - * @return assigneeId - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ASSIGNEE_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public UserId getAssigneeId() { - return assigneeId; - } - - - @JsonProperty(value = JSON_PROPERTY_ASSIGNEE_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAssigneeId(@Nullable UserId assigneeId) { - this.assigneeId = assigneeId; - } - - - public AlarmInfo startTs(@Nullable Long startTs) { - this.startTs = startTs; - return this; - } - - /** - * Timestamp of the alarm start time, in milliseconds - * @return startTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_START_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getStartTs() { - return startTs; - } - - - @JsonProperty(value = JSON_PROPERTY_START_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setStartTs(@Nullable Long startTs) { - this.startTs = startTs; - } - - - public AlarmInfo endTs(@Nullable Long endTs) { - this.endTs = endTs; - return this; - } - - /** - * Timestamp of the alarm end time(last time update), in milliseconds - * @return endTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_END_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getEndTs() { - return endTs; - } - - - @JsonProperty(value = JSON_PROPERTY_END_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setEndTs(@Nullable Long endTs) { - this.endTs = endTs; - } - - - public AlarmInfo ackTs(@Nullable Long ackTs) { - this.ackTs = ackTs; - return this; - } - - /** - * Timestamp of the alarm acknowledgement, in milliseconds - * @return ackTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ACK_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getAckTs() { - return ackTs; - } - - - @JsonProperty(value = JSON_PROPERTY_ACK_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAckTs(@Nullable Long ackTs) { - this.ackTs = ackTs; - } - - - public AlarmInfo clearTs(@Nullable Long clearTs) { - this.clearTs = clearTs; - return this; - } - - /** - * Timestamp of the alarm clearing, in milliseconds - * @return clearTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_CLEAR_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getClearTs() { - return clearTs; - } - - - @JsonProperty(value = JSON_PROPERTY_CLEAR_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setClearTs(@Nullable Long clearTs) { - this.clearTs = clearTs; - } - - - public AlarmInfo assignTs(@Nullable Long assignTs) { - this.assignTs = assignTs; - return this; - } - - /** - * Timestamp of the alarm assignment, in milliseconds - * @return assignTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ASSIGN_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getAssignTs() { - return assignTs; - } - - - @JsonProperty(value = JSON_PROPERTY_ASSIGN_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAssignTs(@Nullable Long assignTs) { - this.assignTs = assignTs; - } - - - public AlarmInfo details(@Nullable com.fasterxml.jackson.databind.JsonNode details) { - this.details = details; - return this; - } - - /** - * JSON object with alarm details - * @return details - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_DETAILS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public com.fasterxml.jackson.databind.JsonNode getDetails() { - return details; - } - - - @JsonProperty(value = JSON_PROPERTY_DETAILS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDetails(@Nullable com.fasterxml.jackson.databind.JsonNode details) { - this.details = details; - } - - - public AlarmInfo propagate(@Nullable Boolean propagate) { - this.propagate = propagate; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to parent entities of alarm originator - * @return propagate - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagate() { - return propagate; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagate(@Nullable Boolean propagate) { - this.propagate = propagate; - } - - - public AlarmInfo propagateToOwner(@Nullable Boolean propagateToOwner) { - this.propagateToOwner = propagateToOwner; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator - * @return propagateToOwner - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagateToOwner() { - return propagateToOwner; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateToOwner(@Nullable Boolean propagateToOwner) { - this.propagateToOwner = propagateToOwner; - } - - - public AlarmInfo propagateToOwnerHierarchy(@Nullable Boolean propagateToOwnerHierarchy) { - this.propagateToOwnerHierarchy = propagateToOwnerHierarchy; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy - * @return propagateToOwnerHierarchy - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagateToOwnerHierarchy() { - return propagateToOwnerHierarchy; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateToOwnerHierarchy(@Nullable Boolean propagateToOwnerHierarchy) { - this.propagateToOwnerHierarchy = propagateToOwnerHierarchy; - } - - - public AlarmInfo propagateToTenant(@Nullable Boolean propagateToTenant) { - this.propagateToTenant = propagateToTenant; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to the tenant entity - * @return propagateToTenant - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_TENANT, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagateToTenant() { - return propagateToTenant; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_TENANT, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateToTenant(@Nullable Boolean propagateToTenant) { - this.propagateToTenant = propagateToTenant; - } - - - public AlarmInfo propagateRelationTypes(@Nullable List propagateRelationTypes) { - this.propagateRelationTypes = propagateRelationTypes; - return this; - } - - public AlarmInfo addPropagateRelationTypesItem(String propagateRelationTypesItem) { - if (this.propagateRelationTypes == null) { - this.propagateRelationTypes = new ArrayList<>(); - } - this.propagateRelationTypes.add(propagateRelationTypesItem); - return this; - } - - /** - * JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored. - * @return propagateRelationTypes - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_RELATION_TYPES, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public List getPropagateRelationTypes() { - return propagateRelationTypes; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_RELATION_TYPES, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateRelationTypes(@Nullable List propagateRelationTypes) { - this.propagateRelationTypes = propagateRelationTypes; - } - - public AlarmInfo originatorName(@Nullable String originatorName) { this.originatorName = originatorName; return this; @@ -811,6 +282,120 @@ public AlarmStatus getStatus() { + @Override + public AlarmInfo id(@Nullable AlarmId id) { + this.setId(id); + return this; + } + + @Override + public AlarmInfo type(@Nonnull String type) { + this.setType(type); + return this; + } + + @Override + public AlarmInfo originator(@Nonnull EntityId originator) { + this.setOriginator(originator); + return this; + } + + @Override + public AlarmInfo severity(@Nonnull AlarmSeverity severity) { + this.setSeverity(severity); + return this; + } + + @Override + public AlarmInfo acknowledged(@Nonnull Boolean acknowledged) { + this.setAcknowledged(acknowledged); + return this; + } + + @Override + public AlarmInfo cleared(@Nonnull Boolean cleared) { + this.setCleared(cleared); + return this; + } + + @Override + public AlarmInfo assigneeId(@Nullable UserId assigneeId) { + this.setAssigneeId(assigneeId); + return this; + } + + @Override + public AlarmInfo startTs(@Nullable Long startTs) { + this.setStartTs(startTs); + return this; + } + + @Override + public AlarmInfo endTs(@Nullable Long endTs) { + this.setEndTs(endTs); + return this; + } + + @Override + public AlarmInfo ackTs(@Nullable Long ackTs) { + this.setAckTs(ackTs); + return this; + } + + @Override + public AlarmInfo clearTs(@Nullable Long clearTs) { + this.setClearTs(clearTs); + return this; + } + + @Override + public AlarmInfo assignTs(@Nullable Long assignTs) { + this.setAssignTs(assignTs); + return this; + } + + @Override + public AlarmInfo details(@Nullable com.fasterxml.jackson.databind.JsonNode details) { + this.setDetails(details); + return this; + } + + @Override + public AlarmInfo propagate(@Nullable Boolean propagate) { + this.setPropagate(propagate); + return this; + } + + @Override + public AlarmInfo propagateToOwner(@Nullable Boolean propagateToOwner) { + this.setPropagateToOwner(propagateToOwner); + return this; + } + + @Override + public AlarmInfo propagateToOwnerHierarchy(@Nullable Boolean propagateToOwnerHierarchy) { + this.setPropagateToOwnerHierarchy(propagateToOwnerHierarchy); + return this; + } + + @Override + public AlarmInfo propagateToTenant(@Nullable Boolean propagateToTenant) { + this.setPropagateToTenant(propagateToTenant); + return this; + } + + @Override + public AlarmInfo propagateRelationTypes(@Nullable List propagateRelationTypes) { + this.setPropagateRelationTypes(propagateRelationTypes); + return this; + } + + @Override + public AlarmInfo addPropagateRelationTypesItem(String propagateRelationTypesItem) { + super.addPropagateRelationTypesItem(propagateRelationTypesItem); + return this; + } + /** * Return true if this AlarmInfo object is equal to o. */ @@ -823,65 +408,31 @@ public boolean equals(Object o) { return false; } AlarmInfo alarmInfo = (AlarmInfo) o; - return Objects.equals(this.id, alarmInfo.id) && - Objects.equals(this.createdTime, alarmInfo.createdTime) && + return Objects.equals(this.createdTime, alarmInfo.createdTime) && Objects.equals(this.tenantId, alarmInfo.tenantId) && Objects.equals(this.customerId, alarmInfo.customerId) && - Objects.equals(this.type, alarmInfo.type) && - Objects.equals(this.originator, alarmInfo.originator) && - Objects.equals(this.severity, alarmInfo.severity) && - Objects.equals(this.acknowledged, alarmInfo.acknowledged) && - Objects.equals(this.cleared, alarmInfo.cleared) && - Objects.equals(this.assigneeId, alarmInfo.assigneeId) && - Objects.equals(this.startTs, alarmInfo.startTs) && - Objects.equals(this.endTs, alarmInfo.endTs) && - Objects.equals(this.ackTs, alarmInfo.ackTs) && - Objects.equals(this.clearTs, alarmInfo.clearTs) && - Objects.equals(this.assignTs, alarmInfo.assignTs) && - Objects.equals(this.details, alarmInfo.details) && - Objects.equals(this.propagate, alarmInfo.propagate) && - Objects.equals(this.propagateToOwner, alarmInfo.propagateToOwner) && - Objects.equals(this.propagateToOwnerHierarchy, alarmInfo.propagateToOwnerHierarchy) && - Objects.equals(this.propagateToTenant, alarmInfo.propagateToTenant) && - Objects.equals(this.propagateRelationTypes, alarmInfo.propagateRelationTypes) && Objects.equals(this.originatorName, alarmInfo.originatorName) && Objects.equals(this.originatorLabel, alarmInfo.originatorLabel) && Objects.equals(this.originatorDisplayName, alarmInfo.originatorDisplayName) && Objects.equals(this.assignee, alarmInfo.assignee) && Objects.equals(this.name, alarmInfo.name) && - Objects.equals(this.status, alarmInfo.status); + Objects.equals(this.status, alarmInfo.status) && + super.equals(o); } @Override public int hashCode() { - return Objects.hash(id, createdTime, tenantId, customerId, type, originator, severity, acknowledged, cleared, assigneeId, startTs, endTs, ackTs, clearTs, assignTs, details, propagate, propagateToOwner, propagateToOwnerHierarchy, propagateToTenant, propagateRelationTypes, originatorName, originatorLabel, originatorDisplayName, assignee, name, status); + return Objects.hash(createdTime, tenantId, customerId, originatorName, originatorLabel, originatorDisplayName, assignee, name, status, super.hashCode()); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class AlarmInfo {\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); sb.append(" createdTime: ").append(toIndentedString(createdTime)).append("\n"); sb.append(" tenantId: ").append(toIndentedString(tenantId)).append("\n"); sb.append(" customerId: ").append(toIndentedString(customerId)).append("\n"); - sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" originator: ").append(toIndentedString(originator)).append("\n"); - sb.append(" severity: ").append(toIndentedString(severity)).append("\n"); - sb.append(" acknowledged: ").append(toIndentedString(acknowledged)).append("\n"); - sb.append(" cleared: ").append(toIndentedString(cleared)).append("\n"); - sb.append(" assigneeId: ").append(toIndentedString(assigneeId)).append("\n"); - sb.append(" startTs: ").append(toIndentedString(startTs)).append("\n"); - sb.append(" endTs: ").append(toIndentedString(endTs)).append("\n"); - sb.append(" ackTs: ").append(toIndentedString(ackTs)).append("\n"); - sb.append(" clearTs: ").append(toIndentedString(clearTs)).append("\n"); - sb.append(" assignTs: ").append(toIndentedString(assignTs)).append("\n"); - sb.append(" details: ").append(toIndentedString(details)).append("\n"); - sb.append(" propagate: ").append(toIndentedString(propagate)).append("\n"); - sb.append(" propagateToOwner: ").append(toIndentedString(propagateToOwner)).append("\n"); - sb.append(" propagateToOwnerHierarchy: ").append(toIndentedString(propagateToOwnerHierarchy)).append("\n"); - sb.append(" propagateToTenant: ").append(toIndentedString(propagateToTenant)).append("\n"); - sb.append(" propagateRelationTypes: ").append(toIndentedString(propagateRelationTypes)).append("\n"); sb.append(" originatorName: ").append(toIndentedString(originatorName)).append("\n"); sb.append(" originatorLabel: ").append(toIndentedString(originatorLabel)).append("\n"); sb.append(" originatorDisplayName: ").append(toIndentedString(originatorDisplayName)).append("\n"); @@ -1044,6 +595,16 @@ public String toUrlQueryString(String prefix) { } } + // add `name` to the URL query string + if (getName() != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sname%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getName())))); + } + + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sstatus%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + // add `originatorName` to the URL query string if (getOriginatorName() != null) { joiner.add(String.format(java.util.Locale.ROOT, "%soriginatorName%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getOriginatorName())))); @@ -1064,16 +625,6 @@ public String toUrlQueryString(String prefix) { joiner.add(getAssignee().toUrlQueryString(prefix + "assignee" + suffix)); } - // add `name` to the URL query string - if (getName() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sname%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getName())))); - } - - // add `status` to the URL query string - if (getStatus() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sstatus%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); - } - return joiner.toString(); } } diff --git a/paas/src/main/java/org/thingsboard/client/model/AliasEntityId.java b/paas/src/main/java/org/thingsboard/client/model/AliasEntityId.java index 1d77a664..16f8feb4 100644 --- a/paas/src/main/java/org/thingsboard/client/model/AliasEntityId.java +++ b/paas/src/main/java/org/thingsboard/client/model/AliasEntityId.java @@ -15,128 +15,159 @@ */ package org.thingsboard.client.model; -import javax.annotation.Generated; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.StringJoiner; -import java.util.Objects; -import java.util.Map; -import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; -import java.util.UUID; -import org.thingsboard.client.model.AliasEntityType; -import org.thingsboard.client.model.EntityType; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.thingsboard.client.ApiClient; +import javax.annotation.Nullable; +import java.util.Objects; +import java.util.StringJoiner; +import java.util.UUID; -import org.thingsboard.client.ApiClient; /** - * AliasEntityId + * Entity ID used by entity filters: either an entity of a given {@link EntityType}, or an alias + * ({@link AliasEntityType}) that the server resolves for the current user. + *

+ * Hand-written: it replaces the generated model (see generate-client.sh). The server writes both + * kinds in one {@code entityType} field, e.g. {@code {"entityType": "DEVICE", "id": "..."}} or + * {@code {"entityType": "CURRENT_USER"}}, so the spec documents {@code entityType} as a string. + * This class keeps the typed accessors of earlier client versions on top of that field. */ @JsonPropertyOrder({ - AliasEntityId.JSON_PROPERTY_ALIAS_ENTITY_TYPE, AliasEntityId.JSON_PROPERTY_ENTITY_TYPE, AliasEntityId.JSON_PROPERTY_ID }) -@Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.20.0") +@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, + getterVisibility = JsonAutoDetect.Visibility.NONE, + isGetterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE) public class AliasEntityId { - public static final String JSON_PROPERTY_ALIAS_ENTITY_TYPE = "aliasEntityType"; - @Nullable - private AliasEntityType aliasEntityType; - public static final String JSON_PROPERTY_ENTITY_TYPE = "entityType"; - @Nonnull - private EntityType entityType; + @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + private String entityType; + + /** + * @deprecated The server never writes {@code aliasEntityType}; an alias is sent in {@code entityType}. + */ + @Deprecated + public static final String JSON_PROPERTY_ALIAS_ENTITY_TYPE = "aliasEntityType"; public static final String JSON_PROPERTY_ID = "id"; - @Nonnull + // Omitted when null: the server rejects "id": null for an alias. + @JsonProperty(value = JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.NON_NULL) private UUID id; - public AliasEntityId() { + public AliasEntityId() { } - public AliasEntityId aliasEntityType(@Nullable AliasEntityType aliasEntityType) { - this.aliasEntityType = aliasEntityType; + /** + * Sets the entity type of an entity ID; {@link #id(UUID)} is required with it. + */ + public AliasEntityId entityType(@Nullable EntityType entityType) { + setEntityType(entityType); return this; } /** - * Get aliasEntityType - * @return aliasEntityType + * @return the entity type, or {@code null} if this is an alias */ @Nullable - @JsonProperty(value = JSON_PROPERTY_ALIAS_ENTITY_TYPE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public AliasEntityType getAliasEntityType() { - return aliasEntityType; + public EntityType getEntityType() { + if (entityType != null) { + for (EntityType type : EntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; } - - @JsonProperty(value = JSON_PROPERTY_ALIAS_ENTITY_TYPE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAliasEntityType(@Nullable AliasEntityType aliasEntityType) { - this.aliasEntityType = aliasEntityType; + /** + * Sets the entity type of an entity ID. {@code null} clears the value only if it is an entity type, + * so it does not clear an alias (e.g. when properties are copied one by one). + */ + public void setEntityType(@Nullable EntityType entityType) { + if (entityType != null) { + this.entityType = entityType.getValue(); + } else if (getEntityType() != null) { + this.entityType = null; + } } - - public AliasEntityId entityType(@Nonnull EntityType entityType) { - this.entityType = entityType; + /** + * Sets an alias that the server resolves for the current user; the ID is optional. + */ + public AliasEntityId aliasEntityType(@Nullable AliasEntityType aliasEntityType) { + setAliasEntityType(aliasEntityType); return this; } /** - * Get entityType - * @return entityType + * @return the alias, or {@code null} if this is an entity ID */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public EntityType getEntityType() { - return entityType; + @Nullable + public AliasEntityType getAliasEntityType() { + if (entityType != null) { + for (AliasEntityType type : AliasEntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; } + /** + * Sets an alias. {@code null} clears the value only if it is an alias, so it does not clear + * an entity type (e.g. when properties are copied one by one). + */ + public void setAliasEntityType(@Nullable AliasEntityType aliasEntityType) { + if (aliasEntityType != null) { + this.entityType = aliasEntityType.getValue(); + } else if (getAliasEntityType() != null) { + this.entityType = null; + } + } - @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setEntityType(@Nonnull EntityType entityType) { + /** + * Sets the raw {@code entityType} value: an {@link EntityType} or {@link AliasEntityType} name. + */ + public AliasEntityId entityTypeValue(@Nullable String entityType) { this.entityType = entityType; + return this; } + /** + * @return the raw {@code entityType} value as the server sent it + */ + @Nullable + public String getEntityTypeValue() { + return entityType; + } - public AliasEntityId id(@Nonnull UUID id) { + public AliasEntityId id(@Nullable UUID id) { this.id = id; return this; } /** - * ID of the entity, time-based UUID v1 + * ID of the entity, time-based UUID v1; required for an entity ID, optional for an alias. * @return id */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ID, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @Nullable public UUID getId() { return id; } - - @JsonProperty(value = JSON_PROPERTY_ID, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setId(@Nonnull UUID id) { + public void setId(@Nullable UUID id) { this.id = id; } - - /** - * Return true if this AliasEntityId object is equal to o. - */ @Override public boolean equals(Object o) { if (this == o) { @@ -146,36 +177,21 @@ public boolean equals(Object o) { return false; } AliasEntityId aliasEntityId = (AliasEntityId) o; - return Objects.equals(this.aliasEntityType, aliasEntityId.aliasEntityType) && - Objects.equals(this.entityType, aliasEntityId.entityType) && + return Objects.equals(this.entityType, aliasEntityId.entityType) && Objects.equals(this.id, aliasEntityId.id); } @Override public int hashCode() { - return Objects.hash(aliasEntityType, entityType, id); + return Objects.hash(entityType, id); } @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class AliasEntityId {\n"); - sb.append(" aliasEntityType: ").append(toIndentedString(aliasEntityType)).append("\n"); - sb.append(" entityType: ").append(toIndentedString(entityType)).append("\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); + return "class AliasEntityId {\n" + + " entityType: " + entityType + "\n" + + " id: " + id + "\n" + + "}"; } /** @@ -195,37 +211,19 @@ public String toUrlQueryString() { */ public String toUrlQueryString(String prefix) { String suffix = ""; - String containerSuffix = ""; - String containerPrefix = ""; if (prefix == null) { - // style=form, explode=true, e.g. /pet?name=cat&type=manx prefix = ""; } else { - // deepObject style e.g. /pet?id[name]=cat&id[type]=manx prefix = prefix + "["; suffix = "]"; - containerSuffix = "]"; - containerPrefix = "["; } - StringJoiner joiner = new StringJoiner("&"); - - // add `aliasEntityType` to the URL query string - if (getAliasEntityType() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%saliasEntityType%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getAliasEntityType())))); + if (entityType != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sentityType%s=%s", prefix, suffix, ApiClient.urlEncode(entityType))); } - - // add `entityType` to the URL query string - if (getEntityType() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sentityType%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getEntityType())))); + if (id != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sid%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(id)))); } - - // add `id` to the URL query string - if (getId() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sid%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getId())))); - } - return joiner.toString(); } } - diff --git a/paas/src/main/java/org/thingsboard/client/model/AssetExportData.java b/paas/src/main/java/org/thingsboard/client/model/AssetExportData.java index 4344224a..46031dbb 100644 --- a/paas/src/main/java/org/thingsboard/client/model/AssetExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/AssetExportData.java @@ -75,18 +75,36 @@ public AssetExportData relations(@Nullable List relations) { return this; } + @Override + public AssetExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AssetExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AssetExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AssetExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AssetExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AssetExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java b/paas/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java index 8c60bba0..96ac759c 100644 --- a/paas/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java @@ -75,18 +75,36 @@ public AssetProfileExportData relations(@Nullable List relations return this; } + @Override + public AssetProfileExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AssetProfileExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AssetProfileExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AssetProfileExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AssetProfileExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AssetProfileExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java b/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java index ca6b61d8..5112d16b 100644 --- a/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java +++ b/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java @@ -187,6 +187,12 @@ public CfReprocessingJobConfiguration toReprocess(@Nullable List toR return this; } + @Override + public CfReprocessingJobConfiguration addToReprocessItem(TaskResult toReprocessItem) { + super.addToReprocessItem(toReprocessItem); + return this; + } + /** * Return true if this CfReprocessingJobConfiguration object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java b/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java index ffea196b..f1a2980d 100644 --- a/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java +++ b/paas/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java @@ -87,6 +87,12 @@ public CfReprocessingJobResult results(@Nullable List results) { return this; } + @Override + public CfReprocessingJobResult addResultsItem(TaskResult resultsItem) { + super.addResultsItem(resultsItem); + return this; + } + @Override public CfReprocessingJobResult generalError(@Nullable String generalError) { this.setGeneralError(generalError); diff --git a/paas/src/main/java/org/thingsboard/client/model/ConverterExportData.java b/paas/src/main/java/org/thingsboard/client/model/ConverterExportData.java index 5ebcfe67..4b298a89 100644 --- a/paas/src/main/java/org/thingsboard/client/model/ConverterExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/ConverterExportData.java @@ -75,18 +75,36 @@ public ConverterExportData relations(@Nullable List relations) { return this; } + @Override + public ConverterExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public ConverterExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public ConverterExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public ConverterExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public ConverterExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this ConverterExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java b/paas/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java index 6006b0cf..a51cb4d7 100644 --- a/paas/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java +++ b/paas/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java @@ -78,18 +78,36 @@ public CsvReportTemplateConfig entityAliases(@Nullable List entityA return this; } + @Override + public CsvReportTemplateConfig addEntityAliasesItem(EntityAlias entityAliasesItem) { + super.addEntityAliasesItem(entityAliasesItem); + return this; + } + @Override public CsvReportTemplateConfig filters(@Nullable List filters) { this.setFilters(filters); return this; } + @Override + public CsvReportTemplateConfig addFiltersItem(Filter filtersItem) { + super.addFiltersItem(filtersItem); + return this; + } + @Override public CsvReportTemplateConfig components(@Nullable List components) { this.setComponents(components); return this; } + @Override + public CsvReportTemplateConfig addComponentsItem(ReportComponent componentsItem) { + super.addComponentsItem(componentsItem); + return this; + } + /** * Return true if this CsvReportTemplateConfig object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/CustomerExportData.java b/paas/src/main/java/org/thingsboard/client/model/CustomerExportData.java index 0352193d..c7bba6f6 100644 --- a/paas/src/main/java/org/thingsboard/client/model/CustomerExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/CustomerExportData.java @@ -75,18 +75,36 @@ public CustomerExportData relations(@Nullable List relations) { return this; } + @Override + public CustomerExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public CustomerExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public CustomerExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public CustomerExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public CustomerExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this CustomerExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/DashboardExportData.java b/paas/src/main/java/org/thingsboard/client/model/DashboardExportData.java index 3a6e8cb3..e5b664a9 100644 --- a/paas/src/main/java/org/thingsboard/client/model/DashboardExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/DashboardExportData.java @@ -75,18 +75,36 @@ public DashboardExportData relations(@Nullable List relations) { return this; } + @Override + public DashboardExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DashboardExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DashboardExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DashboardExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DashboardExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DashboardExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/DeviceExportData.java b/paas/src/main/java/org/thingsboard/client/model/DeviceExportData.java index ad16a57b..cf007b20 100644 --- a/paas/src/main/java/org/thingsboard/client/model/DeviceExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/DeviceExportData.java @@ -105,18 +105,36 @@ public DeviceExportData relations(@Nullable List relations) { return this; } + @Override + public DeviceExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DeviceExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DeviceExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DeviceExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DeviceExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DeviceExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java b/paas/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java index e6f2dda9..46e91d95 100644 --- a/paas/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java @@ -75,18 +75,36 @@ public DeviceProfileExportData relations(@Nullable List relation return this; } + @Override + public DeviceProfileExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DeviceProfileExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DeviceProfileExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DeviceProfileExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DeviceProfileExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DeviceProfileExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java b/paas/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java index c47664eb..791792ea 100644 --- a/paas/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java +++ b/paas/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java @@ -122,6 +122,12 @@ public DockerComposeConfig arguments(@Nullable List arguments) return this; } + @Override + public DockerComposeConfig addArgumentsItem(AgentAppArgument argumentsItem) { + super.addArgumentsItem(argumentsItem); + return this; + } + @Override public DockerComposeConfig edgeRoutingKey(@Nullable String edgeRoutingKey) { this.setEdgeRoutingKey(edgeRoutingKey); diff --git a/paas/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java b/paas/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java index a7ebac2b..fcb91cc1 100644 --- a/paas/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java +++ b/paas/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java @@ -339,6 +339,12 @@ public DummyJobConfiguration toReprocess(@Nullable List toReprocess) return this; } + @Override + public DummyJobConfiguration addToReprocessItem(TaskResult toReprocessItem) { + super.addToReprocessItem(toReprocessItem); + return this; + } + /** * Return true if this DummyJobConfiguration object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/DummyJobResult.java b/paas/src/main/java/org/thingsboard/client/model/DummyJobResult.java index 02392ef9..bcb2506a 100644 --- a/paas/src/main/java/org/thingsboard/client/model/DummyJobResult.java +++ b/paas/src/main/java/org/thingsboard/client/model/DummyJobResult.java @@ -87,6 +87,12 @@ public DummyJobResult results(@Nullable List results) { return this; } + @Override + public DummyJobResult addResultsItem(TaskResult resultsItem) { + super.addResultsItem(resultsItem); + return this; + } + @Override public DummyJobResult generalError(@Nullable String generalError) { this.setGeneralError(generalError); diff --git a/paas/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java b/paas/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java index cf3a138b..6bf7ee9e 100644 --- a/paas/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java @@ -218,18 +218,36 @@ public EntityGroupExportData relations(@Nullable List relations) return this; } + @Override + public EntityGroupExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public EntityGroupExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public EntityGroupExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public EntityGroupExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public EntityGroupExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this EntityGroupExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/EntityViewExportData.java b/paas/src/main/java/org/thingsboard/client/model/EntityViewExportData.java index 31049a04..68e9a4df 100644 --- a/paas/src/main/java/org/thingsboard/client/model/EntityViewExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/EntityViewExportData.java @@ -75,18 +75,36 @@ public EntityViewExportData relations(@Nullable List relations) return this; } + @Override + public EntityViewExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public EntityViewExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public EntityViewExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public EntityViewExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public EntityViewExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this EntityViewExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/IntegrationExportData.java b/paas/src/main/java/org/thingsboard/client/model/IntegrationExportData.java index cf1bb334..6345a2f6 100644 --- a/paas/src/main/java/org/thingsboard/client/model/IntegrationExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/IntegrationExportData.java @@ -75,18 +75,36 @@ public IntegrationExportData relations(@Nullable List relations) return this; } + @Override + public IntegrationExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public IntegrationExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public IntegrationExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public IntegrationExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public IntegrationExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this IntegrationExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java b/paas/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java index 6a6396f0..c5ca8968 100644 --- a/paas/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java +++ b/paas/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java @@ -172,6 +172,12 @@ public MobileSelfRegistrationParams permissions(@Nullable List return this; } + @Override + public MobileSelfRegistrationParams addPermissionsItem(GroupPermission permissionsItem) { + super.addPermissionsItem(permissionsItem); + return this; + } + @Override public MobileSelfRegistrationParams notificationRecipient(@Nullable NotificationTargetId notificationRecipient) { this.setNotificationRecipient(notificationRecipient); @@ -184,6 +190,12 @@ public MobileSelfRegistrationParams signUpFields(@Nullable List sig return this; } + @Override + public MobileSelfRegistrationParams addSignUpFieldsItem(SignUpField signUpFieldsItem) { + super.addSignUpFieldsItem(signUpFieldsItem); + return this; + } + @Override public MobileSelfRegistrationParams customerTitlePrefix(@Nullable String customerTitlePrefix) { this.setCustomerTitlePrefix(customerTitlePrefix); diff --git a/paas/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java b/paas/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java index 8533fd35..54c8a43e 100644 --- a/paas/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java @@ -75,18 +75,36 @@ public NotificationRuleExportData relations(@Nullable List relat return this; } + @Override + public NotificationRuleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationRuleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationRuleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationRuleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationRuleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationRuleExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java b/paas/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java index 49b7bc5b..e535c934 100644 --- a/paas/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java @@ -75,18 +75,36 @@ public NotificationTargetExportData relations(@Nullable List rel return this; } + @Override + public NotificationTargetExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationTargetExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationTargetExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationTargetExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationTargetExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationTargetExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java b/paas/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java index 4c869f7a..608fb50f 100644 --- a/paas/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java @@ -75,18 +75,36 @@ public NotificationTemplateExportData relations(@Nullable List r return this; } + @Override + public NotificationTemplateExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationTemplateExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationTemplateExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationTemplateExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationTemplateExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationTemplateExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java b/paas/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java index 760cc4ae..72bb4510 100644 --- a/paas/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java @@ -75,18 +75,36 @@ public OtaPackageExportData relations(@Nullable List relations) return this; } + @Override + public OtaPackageExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public OtaPackageExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public OtaPackageExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public OtaPackageExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public OtaPackageExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this OtaPackageExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java b/paas/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java index 5ae61d1d..129d78eb 100644 --- a/paas/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java +++ b/paas/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java @@ -256,18 +256,36 @@ public PdfReportTemplateConfig entityAliases(@Nullable List entityA return this; } + @Override + public PdfReportTemplateConfig addEntityAliasesItem(EntityAlias entityAliasesItem) { + super.addEntityAliasesItem(entityAliasesItem); + return this; + } + @Override public PdfReportTemplateConfig filters(@Nullable List filters) { this.setFilters(filters); return this; } + @Override + public PdfReportTemplateConfig addFiltersItem(Filter filtersItem) { + super.addFiltersItem(filtersItem); + return this; + } + @Override public PdfReportTemplateConfig components(@Nullable List components) { this.setComponents(components); return this; } + @Override + public PdfReportTemplateConfig addComponentsItem(ReportComponent componentsItem) { + super.addComponentsItem(componentsItem); + return this; + } + /** * Return true if this PdfReportTemplateConfig object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java b/paas/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java index afb8e511..f30b647a 100644 --- a/paas/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java +++ b/paas/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java @@ -442,6 +442,12 @@ public ReportJobConfiguration toReprocess(@Nullable List toReprocess return this; } + @Override + public ReportJobConfiguration addToReprocessItem(TaskResult toReprocessItem) { + super.addToReprocessItem(toReprocessItem); + return this; + } + /** * Return true if this ReportJobConfiguration object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/ReportJobResult.java b/paas/src/main/java/org/thingsboard/client/model/ReportJobResult.java index 7bfe5db9..be1bbc25 100644 --- a/paas/src/main/java/org/thingsboard/client/model/ReportJobResult.java +++ b/paas/src/main/java/org/thingsboard/client/model/ReportJobResult.java @@ -117,6 +117,12 @@ public ReportJobResult results(@Nullable List results) { return this; } + @Override + public ReportJobResult addResultsItem(TaskResult resultsItem) { + super.addResultsItem(resultsItem); + return this; + } + @Override public ReportJobResult generalError(@Nullable String generalError) { this.setGeneralError(generalError); diff --git a/paas/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java b/paas/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java index 6524b903..dae2bed2 100644 --- a/paas/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java @@ -75,18 +75,36 @@ public ReportTemplateExportData relations(@Nullable List relatio return this; } + @Override + public ReportTemplateExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public ReportTemplateExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public ReportTemplateExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public ReportTemplateExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public ReportTemplateExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this ReportTemplateExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/RoleExportData.java b/paas/src/main/java/org/thingsboard/client/model/RoleExportData.java index 6f6efd5b..c329afb4 100644 --- a/paas/src/main/java/org/thingsboard/client/model/RoleExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/RoleExportData.java @@ -75,18 +75,36 @@ public RoleExportData relations(@Nullable List relations) { return this; } + @Override + public RoleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public RoleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public RoleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public RoleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public RoleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this RoleExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/RuleChainExportData.java b/paas/src/main/java/org/thingsboard/client/model/RuleChainExportData.java index abc0ec84..a1346a26 100644 --- a/paas/src/main/java/org/thingsboard/client/model/RuleChainExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/RuleChainExportData.java @@ -105,18 +105,36 @@ public RuleChainExportData relations(@Nullable List relations) { return this; } + @Override + public RuleChainExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public RuleChainExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public RuleChainExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public RuleChainExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public RuleChainExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this RuleChainExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java b/paas/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java index 022d3eba..c2c5ac04 100644 --- a/paas/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java @@ -75,18 +75,36 @@ public SchedulerEventExportData relations(@Nullable List relatio return this; } + @Override + public SchedulerEventExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public SchedulerEventExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public SchedulerEventExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public SchedulerEventExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public SchedulerEventExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this SchedulerEventExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/TbResourceExportData.java b/paas/src/main/java/org/thingsboard/client/model/TbResourceExportData.java index 14711026..5e200c5d 100644 --- a/paas/src/main/java/org/thingsboard/client/model/TbResourceExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/TbResourceExportData.java @@ -75,18 +75,36 @@ public TbResourceExportData relations(@Nullable List relations) return this; } + @Override + public TbResourceExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public TbResourceExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public TbResourceExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public TbResourceExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public TbResourceExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this TbResourceExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/UserExportData.java b/paas/src/main/java/org/thingsboard/client/model/UserExportData.java index c8227359..27af44a6 100644 --- a/paas/src/main/java/org/thingsboard/client/model/UserExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/UserExportData.java @@ -75,18 +75,36 @@ public UserExportData relations(@Nullable List relations) { return this; } + @Override + public UserExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public UserExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public UserExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public UserExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public UserExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this UserExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java b/paas/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java index 7ec19483..a7e4cf6f 100644 --- a/paas/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java +++ b/paas/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java @@ -172,6 +172,12 @@ public WebSelfRegistrationParams permissions(@Nullable List per return this; } + @Override + public WebSelfRegistrationParams addPermissionsItem(GroupPermission permissionsItem) { + super.addPermissionsItem(permissionsItem); + return this; + } + @Override public WebSelfRegistrationParams notificationRecipient(@Nullable NotificationTargetId notificationRecipient) { this.setNotificationRecipient(notificationRecipient); @@ -184,6 +190,12 @@ public WebSelfRegistrationParams signUpFields(@Nullable List signUp return this; } + @Override + public WebSelfRegistrationParams addSignUpFieldsItem(SignUpField signUpFieldsItem) { + super.addSignUpFieldsItem(signUpFieldsItem); + return this; + } + @Override public WebSelfRegistrationParams customerTitlePrefix(@Nullable String customerTitlePrefix) { this.setCustomerTitlePrefix(customerTitlePrefix); diff --git a/paas/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java b/paas/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java index 51136af7..4a5d8ec1 100644 --- a/paas/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java @@ -75,18 +75,36 @@ public WidgetTypeExportData relations(@Nullable List relations) return this; } + @Override + public WidgetTypeExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public WidgetTypeExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public WidgetTypeExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public WidgetTypeExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public WidgetTypeExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this WidgetTypeExportData object is equal to o. */ diff --git a/paas/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java b/paas/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java index de785786..cbd78ed7 100644 --- a/paas/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java +++ b/paas/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java @@ -149,18 +149,36 @@ public WidgetsBundleExportData relations(@Nullable List relation return this; } + @Override + public WidgetsBundleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public WidgetsBundleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public WidgetsBundleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public WidgetsBundleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public WidgetsBundleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this WidgetsBundleExportData object is equal to o. */ diff --git a/paas/src/test/java/org/thingsboard/client/ClientCompatibilityTest.java b/paas/src/test/java/org/thingsboard/client/ClientCompatibilityTest.java new file mode 100644 index 00000000..7e074966 --- /dev/null +++ b/paas/src/test/java/org/thingsboard/client/ClientCompatibilityTest.java @@ -0,0 +1,110 @@ +/** + * Copyright © 2026-2026 ThingsBoard, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.client; + +import org.junit.jupiter.api.Test; +import org.thingsboard.client.api.ThingsboardApi; +import org.thingsboard.client.api.ThingsboardApi.GetUserAssetsArgs; +import org.thingsboard.client.model.Alarm; +import org.thingsboard.client.model.AlarmInfo; +import org.thingsboard.client.model.AliasEntityId; +import org.thingsboard.client.model.AliasEntityType; +import org.thingsboard.client.model.EntityType; +import org.thingsboard.client.model.PageDataAsset; + +import java.time.Duration; +import java.util.Map; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * Code written against the 4.4.0 client. It must keep compiling when the client is regenerated + * from a spec with corrected types (see openapi/client-compat.json); do not update it to a newer API. + * The API calls go to a closed port, so they only check that the calls compile and reach the HTTP client. + */ +@SuppressWarnings({"deprecation", "removal"}) +class ClientCompatibilityTest { + + private final ThingsboardApi api = new ThingsboardApi(new ApiClient() + .setScheme("http").setHost("127.0.0.1").setPort(1) + .setConnectTimeout(Duration.ofSeconds(5))); + + @Test + void pageParametersAcceptStrings() { + Map headers = Map.of(); + GetUserAssetsArgs args = GetUserAssetsArgs.builder().pageSize("10").page("0").textSearch("a").build(); + + assertThrows(ApiException.class, () -> { + PageDataAsset assets = api.getUserAssets(args); + }); + assertThrows(ApiException.class, () -> { + PageDataAsset assets = api.getUserAssets("10", "0", null, null, null, null, null); + }); + assertThrows(ApiException.class, () -> { + ApiResponse response = api.getUserAssetsWithHttpInfo("10", "0", null, null, null, null, null, headers); + }); + } + + @Test + void assignAlarmReturnsAlarm() { + String id = UUID.randomUUID().toString(); + assertThrows(ApiException.class, () -> { + Alarm alarm = api.assignAlarm(id, id); + }); + assertThrows(ApiException.class, () -> { + Alarm alarm = api.unassignAlarm(id); + }); + } + + @Test + void alarmInfoFluentSettersReturnAlarmInfo() { + AlarmInfo info = new AlarmInfo() + .addPropagateRelationTypesItem("Contains") + .originatorName("Device A"); + + assertEquals("Contains", info.getPropagateRelationTypes().get(0)); + assertEquals("Device A", info.getOriginatorName()); + } + + @Test + void aliasEntityIdKeepsTypedAccessors() { + UUID id = UUID.randomUUID(); + AliasEntityId entityId = new AliasEntityId().entityType(EntityType.DEVICE).id(id); + EntityType entityType = entityId.getEntityType(); + UUID entityUuid = entityId.getId(); + assertSame(EntityType.DEVICE, entityType); + assertEquals(id, entityUuid); + assertNull(entityId.getAliasEntityType()); + + AliasEntityId alias = new AliasEntityId().aliasEntityType(AliasEntityType.CURRENT_USER); + AliasEntityType aliasType = alias.getAliasEntityType(); + assertSame(AliasEntityType.CURRENT_USER, aliasType); + + AliasEntityId copy = new AliasEntityId(); + copy.setAliasEntityType(alias.getAliasEntityType()); + copy.setEntityType(alias.getEntityType()); + copy.setId(alias.getId()); + assertEquals(alias, copy); + + assertEquals("entityType", AliasEntityId.JSON_PROPERTY_ENTITY_TYPE); + assertEquals("aliasEntityType", AliasEntityId.JSON_PROPERTY_ALIAS_ENTITY_TYPE); + assertEquals("id", AliasEntityId.JSON_PROPERTY_ID); + } +} diff --git a/pe/src/main/java/org/thingsboard/client/model/AiModelExportData.java b/pe/src/main/java/org/thingsboard/client/model/AiModelExportData.java index d39124f7..7ede2458 100644 --- a/pe/src/main/java/org/thingsboard/client/model/AiModelExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/AiModelExportData.java @@ -75,18 +75,36 @@ public AiModelExportData relations(@Nullable List relations) { return this; } + @Override + public AiModelExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AiModelExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AiModelExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AiModelExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AiModelExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AiModelExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/AlarmInfo.java b/pe/src/main/java/org/thingsboard/client/model/AlarmInfo.java index a94dc041..afce687a 100644 --- a/pe/src/main/java/org/thingsboard/client/model/AlarmInfo.java +++ b/pe/src/main/java/org/thingsboard/client/model/AlarmInfo.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.thingsboard.client.model.Alarm; import org.thingsboard.client.model.AlarmAssignee; import org.thingsboard.client.model.AlarmId; import org.thingsboard.client.model.AlarmSeverity; @@ -48,27 +49,9 @@ * AlarmInfo */ @JsonPropertyOrder({ - AlarmInfo.JSON_PROPERTY_ID, AlarmInfo.JSON_PROPERTY_CREATED_TIME, AlarmInfo.JSON_PROPERTY_TENANT_ID, AlarmInfo.JSON_PROPERTY_CUSTOMER_ID, - AlarmInfo.JSON_PROPERTY_TYPE, - AlarmInfo.JSON_PROPERTY_ORIGINATOR, - AlarmInfo.JSON_PROPERTY_SEVERITY, - AlarmInfo.JSON_PROPERTY_ACKNOWLEDGED, - AlarmInfo.JSON_PROPERTY_CLEARED, - AlarmInfo.JSON_PROPERTY_ASSIGNEE_ID, - AlarmInfo.JSON_PROPERTY_START_TS, - AlarmInfo.JSON_PROPERTY_END_TS, - AlarmInfo.JSON_PROPERTY_ACK_TS, - AlarmInfo.JSON_PROPERTY_CLEAR_TS, - AlarmInfo.JSON_PROPERTY_ASSIGN_TS, - AlarmInfo.JSON_PROPERTY_DETAILS, - AlarmInfo.JSON_PROPERTY_PROPAGATE, - AlarmInfo.JSON_PROPERTY_PROPAGATE_TO_OWNER, - AlarmInfo.JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY, - AlarmInfo.JSON_PROPERTY_PROPAGATE_TO_TENANT, - AlarmInfo.JSON_PROPERTY_PROPAGATE_RELATION_TYPES, AlarmInfo.JSON_PROPERTY_ORIGINATOR_NAME, AlarmInfo.JSON_PROPERTY_ORIGINATOR_LABEL, AlarmInfo.JSON_PROPERTY_ORIGINATOR_DISPLAY_NAME, @@ -77,11 +60,7 @@ AlarmInfo.JSON_PROPERTY_STATUS }) @Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.20.0") -public class AlarmInfo { - public static final String JSON_PROPERTY_ID = "id"; - @Nullable - private AlarmId id; - +public class AlarmInfo extends Alarm { public static final String JSON_PROPERTY_CREATED_TIME = "createdTime"; @Nullable private Long createdTime; @@ -94,74 +73,6 @@ public class AlarmInfo { @Nullable private CustomerId customerId; - public static final String JSON_PROPERTY_TYPE = "type"; - @Nonnull - private String type; - - public static final String JSON_PROPERTY_ORIGINATOR = "originator"; - @Nonnull - private EntityId originator; - - public static final String JSON_PROPERTY_SEVERITY = "severity"; - @Nonnull - private AlarmSeverity severity; - - public static final String JSON_PROPERTY_ACKNOWLEDGED = "acknowledged"; - @Nonnull - private Boolean acknowledged; - - public static final String JSON_PROPERTY_CLEARED = "cleared"; - @Nonnull - private Boolean cleared; - - public static final String JSON_PROPERTY_ASSIGNEE_ID = "assigneeId"; - @Nullable - private UserId assigneeId; - - public static final String JSON_PROPERTY_START_TS = "startTs"; - @Nullable - private Long startTs; - - public static final String JSON_PROPERTY_END_TS = "endTs"; - @Nullable - private Long endTs; - - public static final String JSON_PROPERTY_ACK_TS = "ackTs"; - @Nullable - private Long ackTs; - - public static final String JSON_PROPERTY_CLEAR_TS = "clearTs"; - @Nullable - private Long clearTs; - - public static final String JSON_PROPERTY_ASSIGN_TS = "assignTs"; - @Nullable - private Long assignTs; - - public static final String JSON_PROPERTY_DETAILS = "details"; - @Nullable - private com.fasterxml.jackson.databind.JsonNode details; - - public static final String JSON_PROPERTY_PROPAGATE = "propagate"; - @Nullable - private Boolean propagate; - - public static final String JSON_PROPERTY_PROPAGATE_TO_OWNER = "propagateToOwner"; - @Nullable - private Boolean propagateToOwner; - - public static final String JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY = "propagateToOwnerHierarchy"; - @Nullable - private Boolean propagateToOwnerHierarchy; - - public static final String JSON_PROPERTY_PROPAGATE_TO_TENANT = "propagateToTenant"; - @Nullable - private Boolean propagateToTenant; - - public static final String JSON_PROPERTY_PROPAGATE_RELATION_TYPES = "propagateRelationTypes"; - @Nullable - private List propagateRelationTypes = new ArrayList<>(); - public static final String JSON_PROPERTY_ORIGINATOR_NAME = "originatorName"; @Nullable private String originatorName; @@ -205,30 +116,6 @@ public AlarmInfo( this.status = status; } - public AlarmInfo id(@Nullable AlarmId id) { - this.id = id; - return this; - } - - /** - * JSON object with the alarm Id. Specify this field to update the alarm. Referencing non-existing alarm Id will cause error. Omit this field to create new alarm. - * @return id - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public AlarmId getId() { - return id; - } - - - @JsonProperty(value = JSON_PROPERTY_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setId(@Nullable AlarmId id) { - this.id = id; - } - - /** * Timestamp of the alarm creation, in milliseconds * @return createdTime @@ -271,422 +158,6 @@ public CustomerId getCustomerId() { - public AlarmInfo type(@Nonnull String type) { - this.type = type; - return this; - } - - /** - * representing type of the Alarm - * @return type - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public String getType() { - return type; - } - - - @JsonProperty(value = JSON_PROPERTY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setType(@Nonnull String type) { - this.type = type; - } - - - public AlarmInfo originator(@Nonnull EntityId originator) { - this.originator = originator; - return this; - } - - /** - * JSON object with alarm originator id - * @return originator - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ORIGINATOR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public EntityId getOriginator() { - return originator; - } - - - @JsonProperty(value = JSON_PROPERTY_ORIGINATOR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setOriginator(@Nonnull EntityId originator) { - this.originator = originator; - } - - - public AlarmInfo severity(@Nonnull AlarmSeverity severity) { - this.severity = severity; - return this; - } - - /** - * Alarm severity - * @return severity - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_SEVERITY, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public AlarmSeverity getSeverity() { - return severity; - } - - - @JsonProperty(value = JSON_PROPERTY_SEVERITY, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setSeverity(@Nonnull AlarmSeverity severity) { - this.severity = severity; - } - - - public AlarmInfo acknowledged(@Nonnull Boolean acknowledged) { - this.acknowledged = acknowledged; - return this; - } - - /** - * Acknowledged - * @return acknowledged - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ACKNOWLEDGED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Boolean getAcknowledged() { - return acknowledged; - } - - - @JsonProperty(value = JSON_PROPERTY_ACKNOWLEDGED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setAcknowledged(@Nonnull Boolean acknowledged) { - this.acknowledged = acknowledged; - } - - - public AlarmInfo cleared(@Nonnull Boolean cleared) { - this.cleared = cleared; - return this; - } - - /** - * Cleared - * @return cleared - */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_CLEARED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Boolean getCleared() { - return cleared; - } - - - @JsonProperty(value = JSON_PROPERTY_CLEARED, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setCleared(@Nonnull Boolean cleared) { - this.cleared = cleared; - } - - - public AlarmInfo assigneeId(@Nullable UserId assigneeId) { - this.assigneeId = assigneeId; - return this; - } - - /** - * Alarm assignee user id - * @return assigneeId - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ASSIGNEE_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public UserId getAssigneeId() { - return assigneeId; - } - - - @JsonProperty(value = JSON_PROPERTY_ASSIGNEE_ID, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAssigneeId(@Nullable UserId assigneeId) { - this.assigneeId = assigneeId; - } - - - public AlarmInfo startTs(@Nullable Long startTs) { - this.startTs = startTs; - return this; - } - - /** - * Timestamp of the alarm start time, in milliseconds - * @return startTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_START_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getStartTs() { - return startTs; - } - - - @JsonProperty(value = JSON_PROPERTY_START_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setStartTs(@Nullable Long startTs) { - this.startTs = startTs; - } - - - public AlarmInfo endTs(@Nullable Long endTs) { - this.endTs = endTs; - return this; - } - - /** - * Timestamp of the alarm end time(last time update), in milliseconds - * @return endTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_END_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getEndTs() { - return endTs; - } - - - @JsonProperty(value = JSON_PROPERTY_END_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setEndTs(@Nullable Long endTs) { - this.endTs = endTs; - } - - - public AlarmInfo ackTs(@Nullable Long ackTs) { - this.ackTs = ackTs; - return this; - } - - /** - * Timestamp of the alarm acknowledgement, in milliseconds - * @return ackTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ACK_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getAckTs() { - return ackTs; - } - - - @JsonProperty(value = JSON_PROPERTY_ACK_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAckTs(@Nullable Long ackTs) { - this.ackTs = ackTs; - } - - - public AlarmInfo clearTs(@Nullable Long clearTs) { - this.clearTs = clearTs; - return this; - } - - /** - * Timestamp of the alarm clearing, in milliseconds - * @return clearTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_CLEAR_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getClearTs() { - return clearTs; - } - - - @JsonProperty(value = JSON_PROPERTY_CLEAR_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setClearTs(@Nullable Long clearTs) { - this.clearTs = clearTs; - } - - - public AlarmInfo assignTs(@Nullable Long assignTs) { - this.assignTs = assignTs; - return this; - } - - /** - * Timestamp of the alarm assignment, in milliseconds - * @return assignTs - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_ASSIGN_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Long getAssignTs() { - return assignTs; - } - - - @JsonProperty(value = JSON_PROPERTY_ASSIGN_TS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAssignTs(@Nullable Long assignTs) { - this.assignTs = assignTs; - } - - - public AlarmInfo details(@Nullable com.fasterxml.jackson.databind.JsonNode details) { - this.details = details; - return this; - } - - /** - * JSON object with alarm details - * @return details - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_DETAILS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public com.fasterxml.jackson.databind.JsonNode getDetails() { - return details; - } - - - @JsonProperty(value = JSON_PROPERTY_DETAILS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDetails(@Nullable com.fasterxml.jackson.databind.JsonNode details) { - this.details = details; - } - - - public AlarmInfo propagate(@Nullable Boolean propagate) { - this.propagate = propagate; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to parent entities of alarm originator - * @return propagate - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagate() { - return propagate; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagate(@Nullable Boolean propagate) { - this.propagate = propagate; - } - - - public AlarmInfo propagateToOwner(@Nullable Boolean propagateToOwner) { - this.propagateToOwner = propagateToOwner; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) of alarm originator - * @return propagateToOwner - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagateToOwner() { - return propagateToOwner; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateToOwner(@Nullable Boolean propagateToOwner) { - this.propagateToOwner = propagateToOwner; - } - - - public AlarmInfo propagateToOwnerHierarchy(@Nullable Boolean propagateToOwnerHierarchy) { - this.propagateToOwnerHierarchy = propagateToOwnerHierarchy; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to the owner (tenant or customer) and all parent owners in the customer hierarchy - * @return propagateToOwnerHierarchy - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagateToOwnerHierarchy() { - return propagateToOwnerHierarchy; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_OWNER_HIERARCHY, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateToOwnerHierarchy(@Nullable Boolean propagateToOwnerHierarchy) { - this.propagateToOwnerHierarchy = propagateToOwnerHierarchy; - } - - - public AlarmInfo propagateToTenant(@Nullable Boolean propagateToTenant) { - this.propagateToTenant = propagateToTenant; - return this; - } - - /** - * Propagation flag to specify if alarm should be propagated to the tenant entity - * @return propagateToTenant - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_TENANT, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public Boolean getPropagateToTenant() { - return propagateToTenant; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_TO_TENANT, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateToTenant(@Nullable Boolean propagateToTenant) { - this.propagateToTenant = propagateToTenant; - } - - - public AlarmInfo propagateRelationTypes(@Nullable List propagateRelationTypes) { - this.propagateRelationTypes = propagateRelationTypes; - return this; - } - - public AlarmInfo addPropagateRelationTypesItem(String propagateRelationTypesItem) { - if (this.propagateRelationTypes == null) { - this.propagateRelationTypes = new ArrayList<>(); - } - this.propagateRelationTypes.add(propagateRelationTypesItem); - return this; - } - - /** - * JSON array of relation types that should be used for propagation. By default, 'propagateRelationTypes' array is empty which means that the alarm will be propagated based on any relation type to parent entities. This parameter should be used only in case when 'propagate' parameter is set to true, otherwise, 'propagateRelationTypes' array will be ignored. - * @return propagateRelationTypes - */ - @Nullable - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_RELATION_TYPES, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public List getPropagateRelationTypes() { - return propagateRelationTypes; - } - - - @JsonProperty(value = JSON_PROPERTY_PROPAGATE_RELATION_TYPES, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPropagateRelationTypes(@Nullable List propagateRelationTypes) { - this.propagateRelationTypes = propagateRelationTypes; - } - - public AlarmInfo originatorName(@Nullable String originatorName) { this.originatorName = originatorName; return this; @@ -811,6 +282,120 @@ public AlarmStatus getStatus() { + @Override + public AlarmInfo id(@Nullable AlarmId id) { + this.setId(id); + return this; + } + + @Override + public AlarmInfo type(@Nonnull String type) { + this.setType(type); + return this; + } + + @Override + public AlarmInfo originator(@Nonnull EntityId originator) { + this.setOriginator(originator); + return this; + } + + @Override + public AlarmInfo severity(@Nonnull AlarmSeverity severity) { + this.setSeverity(severity); + return this; + } + + @Override + public AlarmInfo acknowledged(@Nonnull Boolean acknowledged) { + this.setAcknowledged(acknowledged); + return this; + } + + @Override + public AlarmInfo cleared(@Nonnull Boolean cleared) { + this.setCleared(cleared); + return this; + } + + @Override + public AlarmInfo assigneeId(@Nullable UserId assigneeId) { + this.setAssigneeId(assigneeId); + return this; + } + + @Override + public AlarmInfo startTs(@Nullable Long startTs) { + this.setStartTs(startTs); + return this; + } + + @Override + public AlarmInfo endTs(@Nullable Long endTs) { + this.setEndTs(endTs); + return this; + } + + @Override + public AlarmInfo ackTs(@Nullable Long ackTs) { + this.setAckTs(ackTs); + return this; + } + + @Override + public AlarmInfo clearTs(@Nullable Long clearTs) { + this.setClearTs(clearTs); + return this; + } + + @Override + public AlarmInfo assignTs(@Nullable Long assignTs) { + this.setAssignTs(assignTs); + return this; + } + + @Override + public AlarmInfo details(@Nullable com.fasterxml.jackson.databind.JsonNode details) { + this.setDetails(details); + return this; + } + + @Override + public AlarmInfo propagate(@Nullable Boolean propagate) { + this.setPropagate(propagate); + return this; + } + + @Override + public AlarmInfo propagateToOwner(@Nullable Boolean propagateToOwner) { + this.setPropagateToOwner(propagateToOwner); + return this; + } + + @Override + public AlarmInfo propagateToOwnerHierarchy(@Nullable Boolean propagateToOwnerHierarchy) { + this.setPropagateToOwnerHierarchy(propagateToOwnerHierarchy); + return this; + } + + @Override + public AlarmInfo propagateToTenant(@Nullable Boolean propagateToTenant) { + this.setPropagateToTenant(propagateToTenant); + return this; + } + + @Override + public AlarmInfo propagateRelationTypes(@Nullable List propagateRelationTypes) { + this.setPropagateRelationTypes(propagateRelationTypes); + return this; + } + + @Override + public AlarmInfo addPropagateRelationTypesItem(String propagateRelationTypesItem) { + super.addPropagateRelationTypesItem(propagateRelationTypesItem); + return this; + } + /** * Return true if this AlarmInfo object is equal to o. */ @@ -823,65 +408,31 @@ public boolean equals(Object o) { return false; } AlarmInfo alarmInfo = (AlarmInfo) o; - return Objects.equals(this.id, alarmInfo.id) && - Objects.equals(this.createdTime, alarmInfo.createdTime) && + return Objects.equals(this.createdTime, alarmInfo.createdTime) && Objects.equals(this.tenantId, alarmInfo.tenantId) && Objects.equals(this.customerId, alarmInfo.customerId) && - Objects.equals(this.type, alarmInfo.type) && - Objects.equals(this.originator, alarmInfo.originator) && - Objects.equals(this.severity, alarmInfo.severity) && - Objects.equals(this.acknowledged, alarmInfo.acknowledged) && - Objects.equals(this.cleared, alarmInfo.cleared) && - Objects.equals(this.assigneeId, alarmInfo.assigneeId) && - Objects.equals(this.startTs, alarmInfo.startTs) && - Objects.equals(this.endTs, alarmInfo.endTs) && - Objects.equals(this.ackTs, alarmInfo.ackTs) && - Objects.equals(this.clearTs, alarmInfo.clearTs) && - Objects.equals(this.assignTs, alarmInfo.assignTs) && - Objects.equals(this.details, alarmInfo.details) && - Objects.equals(this.propagate, alarmInfo.propagate) && - Objects.equals(this.propagateToOwner, alarmInfo.propagateToOwner) && - Objects.equals(this.propagateToOwnerHierarchy, alarmInfo.propagateToOwnerHierarchy) && - Objects.equals(this.propagateToTenant, alarmInfo.propagateToTenant) && - Objects.equals(this.propagateRelationTypes, alarmInfo.propagateRelationTypes) && Objects.equals(this.originatorName, alarmInfo.originatorName) && Objects.equals(this.originatorLabel, alarmInfo.originatorLabel) && Objects.equals(this.originatorDisplayName, alarmInfo.originatorDisplayName) && Objects.equals(this.assignee, alarmInfo.assignee) && Objects.equals(this.name, alarmInfo.name) && - Objects.equals(this.status, alarmInfo.status); + Objects.equals(this.status, alarmInfo.status) && + super.equals(o); } @Override public int hashCode() { - return Objects.hash(id, createdTime, tenantId, customerId, type, originator, severity, acknowledged, cleared, assigneeId, startTs, endTs, ackTs, clearTs, assignTs, details, propagate, propagateToOwner, propagateToOwnerHierarchy, propagateToTenant, propagateRelationTypes, originatorName, originatorLabel, originatorDisplayName, assignee, name, status); + return Objects.hash(createdTime, tenantId, customerId, originatorName, originatorLabel, originatorDisplayName, assignee, name, status, super.hashCode()); } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class AlarmInfo {\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" ").append(toIndentedString(super.toString())).append("\n"); sb.append(" createdTime: ").append(toIndentedString(createdTime)).append("\n"); sb.append(" tenantId: ").append(toIndentedString(tenantId)).append("\n"); sb.append(" customerId: ").append(toIndentedString(customerId)).append("\n"); - sb.append(" type: ").append(toIndentedString(type)).append("\n"); - sb.append(" originator: ").append(toIndentedString(originator)).append("\n"); - sb.append(" severity: ").append(toIndentedString(severity)).append("\n"); - sb.append(" acknowledged: ").append(toIndentedString(acknowledged)).append("\n"); - sb.append(" cleared: ").append(toIndentedString(cleared)).append("\n"); - sb.append(" assigneeId: ").append(toIndentedString(assigneeId)).append("\n"); - sb.append(" startTs: ").append(toIndentedString(startTs)).append("\n"); - sb.append(" endTs: ").append(toIndentedString(endTs)).append("\n"); - sb.append(" ackTs: ").append(toIndentedString(ackTs)).append("\n"); - sb.append(" clearTs: ").append(toIndentedString(clearTs)).append("\n"); - sb.append(" assignTs: ").append(toIndentedString(assignTs)).append("\n"); - sb.append(" details: ").append(toIndentedString(details)).append("\n"); - sb.append(" propagate: ").append(toIndentedString(propagate)).append("\n"); - sb.append(" propagateToOwner: ").append(toIndentedString(propagateToOwner)).append("\n"); - sb.append(" propagateToOwnerHierarchy: ").append(toIndentedString(propagateToOwnerHierarchy)).append("\n"); - sb.append(" propagateToTenant: ").append(toIndentedString(propagateToTenant)).append("\n"); - sb.append(" propagateRelationTypes: ").append(toIndentedString(propagateRelationTypes)).append("\n"); sb.append(" originatorName: ").append(toIndentedString(originatorName)).append("\n"); sb.append(" originatorLabel: ").append(toIndentedString(originatorLabel)).append("\n"); sb.append(" originatorDisplayName: ").append(toIndentedString(originatorDisplayName)).append("\n"); @@ -1044,6 +595,16 @@ public String toUrlQueryString(String prefix) { } } + // add `name` to the URL query string + if (getName() != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sname%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getName())))); + } + + // add `status` to the URL query string + if (getStatus() != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sstatus%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); + } + // add `originatorName` to the URL query string if (getOriginatorName() != null) { joiner.add(String.format(java.util.Locale.ROOT, "%soriginatorName%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getOriginatorName())))); @@ -1064,16 +625,6 @@ public String toUrlQueryString(String prefix) { joiner.add(getAssignee().toUrlQueryString(prefix + "assignee" + suffix)); } - // add `name` to the URL query string - if (getName() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sname%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getName())))); - } - - // add `status` to the URL query string - if (getStatus() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sstatus%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getStatus())))); - } - return joiner.toString(); } } diff --git a/pe/src/main/java/org/thingsboard/client/model/AliasEntityId.java b/pe/src/main/java/org/thingsboard/client/model/AliasEntityId.java index 1d77a664..16f8feb4 100644 --- a/pe/src/main/java/org/thingsboard/client/model/AliasEntityId.java +++ b/pe/src/main/java/org/thingsboard/client/model/AliasEntityId.java @@ -15,128 +15,159 @@ */ package org.thingsboard.client.model; -import javax.annotation.Generated; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; -import java.util.StringJoiner; -import java.util.Objects; -import java.util.Map; -import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import java.util.Arrays; -import java.util.UUID; -import org.thingsboard.client.model.AliasEntityType; -import org.thingsboard.client.model.EntityType; import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import org.thingsboard.client.ApiClient; +import javax.annotation.Nullable; +import java.util.Objects; +import java.util.StringJoiner; +import java.util.UUID; -import org.thingsboard.client.ApiClient; /** - * AliasEntityId + * Entity ID used by entity filters: either an entity of a given {@link EntityType}, or an alias + * ({@link AliasEntityType}) that the server resolves for the current user. + *

+ * Hand-written: it replaces the generated model (see generate-client.sh). The server writes both + * kinds in one {@code entityType} field, e.g. {@code {"entityType": "DEVICE", "id": "..."}} or + * {@code {"entityType": "CURRENT_USER"}}, so the spec documents {@code entityType} as a string. + * This class keeps the typed accessors of earlier client versions on top of that field. */ @JsonPropertyOrder({ - AliasEntityId.JSON_PROPERTY_ALIAS_ENTITY_TYPE, AliasEntityId.JSON_PROPERTY_ENTITY_TYPE, AliasEntityId.JSON_PROPERTY_ID }) -@Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.20.0") +@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, + getterVisibility = JsonAutoDetect.Visibility.NONE, + isGetterVisibility = JsonAutoDetect.Visibility.NONE, + setterVisibility = JsonAutoDetect.Visibility.NONE) public class AliasEntityId { - public static final String JSON_PROPERTY_ALIAS_ENTITY_TYPE = "aliasEntityType"; - @Nullable - private AliasEntityType aliasEntityType; - public static final String JSON_PROPERTY_ENTITY_TYPE = "entityType"; - @Nonnull - private EntityType entityType; + @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + private String entityType; + + /** + * @deprecated The server never writes {@code aliasEntityType}; an alias is sent in {@code entityType}. + */ + @Deprecated + public static final String JSON_PROPERTY_ALIAS_ENTITY_TYPE = "aliasEntityType"; public static final String JSON_PROPERTY_ID = "id"; - @Nonnull + // Omitted when null: the server rejects "id": null for an alias. + @JsonProperty(value = JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.NON_NULL) private UUID id; - public AliasEntityId() { + public AliasEntityId() { } - public AliasEntityId aliasEntityType(@Nullable AliasEntityType aliasEntityType) { - this.aliasEntityType = aliasEntityType; + /** + * Sets the entity type of an entity ID; {@link #id(UUID)} is required with it. + */ + public AliasEntityId entityType(@Nullable EntityType entityType) { + setEntityType(entityType); return this; } /** - * Get aliasEntityType - * @return aliasEntityType + * @return the entity type, or {@code null} if this is an alias */ @Nullable - @JsonProperty(value = JSON_PROPERTY_ALIAS_ENTITY_TYPE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public AliasEntityType getAliasEntityType() { - return aliasEntityType; + public EntityType getEntityType() { + if (entityType != null) { + for (EntityType type : EntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; } - - @JsonProperty(value = JSON_PROPERTY_ALIAS_ENTITY_TYPE, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setAliasEntityType(@Nullable AliasEntityType aliasEntityType) { - this.aliasEntityType = aliasEntityType; + /** + * Sets the entity type of an entity ID. {@code null} clears the value only if it is an entity type, + * so it does not clear an alias (e.g. when properties are copied one by one). + */ + public void setEntityType(@Nullable EntityType entityType) { + if (entityType != null) { + this.entityType = entityType.getValue(); + } else if (getEntityType() != null) { + this.entityType = null; + } } - - public AliasEntityId entityType(@Nonnull EntityType entityType) { - this.entityType = entityType; + /** + * Sets an alias that the server resolves for the current user; the ID is optional. + */ + public AliasEntityId aliasEntityType(@Nullable AliasEntityType aliasEntityType) { + setAliasEntityType(aliasEntityType); return this; } /** - * Get entityType - * @return entityType + * @return the alias, or {@code null} if this is an entity ID */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public EntityType getEntityType() { - return entityType; + @Nullable + public AliasEntityType getAliasEntityType() { + if (entityType != null) { + for (AliasEntityType type : AliasEntityType.values()) { + if (type.getValue().equals(entityType)) { + return type; + } + } + } + return null; } + /** + * Sets an alias. {@code null} clears the value only if it is an alias, so it does not clear + * an entity type (e.g. when properties are copied one by one). + */ + public void setAliasEntityType(@Nullable AliasEntityType aliasEntityType) { + if (aliasEntityType != null) { + this.entityType = aliasEntityType.getValue(); + } else if (getAliasEntityType() != null) { + this.entityType = null; + } + } - @JsonProperty(value = JSON_PROPERTY_ENTITY_TYPE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setEntityType(@Nonnull EntityType entityType) { + /** + * Sets the raw {@code entityType} value: an {@link EntityType} or {@link AliasEntityType} name. + */ + public AliasEntityId entityTypeValue(@Nullable String entityType) { this.entityType = entityType; + return this; } + /** + * @return the raw {@code entityType} value as the server sent it + */ + @Nullable + public String getEntityTypeValue() { + return entityType; + } - public AliasEntityId id(@Nonnull UUID id) { + public AliasEntityId id(@Nullable UUID id) { this.id = id; return this; } /** - * ID of the entity, time-based UUID v1 + * ID of the entity, time-based UUID v1; required for an entity ID, optional for an alias. * @return id */ - @Nonnull - @JsonProperty(value = JSON_PROPERTY_ID, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @Nullable public UUID getId() { return id; } - - @JsonProperty(value = JSON_PROPERTY_ID, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setId(@Nonnull UUID id) { + public void setId(@Nullable UUID id) { this.id = id; } - - /** - * Return true if this AliasEntityId object is equal to o. - */ @Override public boolean equals(Object o) { if (this == o) { @@ -146,36 +177,21 @@ public boolean equals(Object o) { return false; } AliasEntityId aliasEntityId = (AliasEntityId) o; - return Objects.equals(this.aliasEntityType, aliasEntityId.aliasEntityType) && - Objects.equals(this.entityType, aliasEntityId.entityType) && + return Objects.equals(this.entityType, aliasEntityId.entityType) && Objects.equals(this.id, aliasEntityId.id); } @Override public int hashCode() { - return Objects.hash(aliasEntityType, entityType, id); + return Objects.hash(entityType, id); } @Override public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class AliasEntityId {\n"); - sb.append(" aliasEntityType: ").append(toIndentedString(aliasEntityType)).append("\n"); - sb.append(" entityType: ").append(toIndentedString(entityType)).append("\n"); - sb.append(" id: ").append(toIndentedString(id)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); + return "class AliasEntityId {\n" + + " entityType: " + entityType + "\n" + + " id: " + id + "\n" + + "}"; } /** @@ -195,37 +211,19 @@ public String toUrlQueryString() { */ public String toUrlQueryString(String prefix) { String suffix = ""; - String containerSuffix = ""; - String containerPrefix = ""; if (prefix == null) { - // style=form, explode=true, e.g. /pet?name=cat&type=manx prefix = ""; } else { - // deepObject style e.g. /pet?id[name]=cat&id[type]=manx prefix = prefix + "["; suffix = "]"; - containerSuffix = "]"; - containerPrefix = "["; } - StringJoiner joiner = new StringJoiner("&"); - - // add `aliasEntityType` to the URL query string - if (getAliasEntityType() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%saliasEntityType%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getAliasEntityType())))); + if (entityType != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sentityType%s=%s", prefix, suffix, ApiClient.urlEncode(entityType))); } - - // add `entityType` to the URL query string - if (getEntityType() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sentityType%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getEntityType())))); + if (id != null) { + joiner.add(String.format(java.util.Locale.ROOT, "%sid%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(id)))); } - - // add `id` to the URL query string - if (getId() != null) { - joiner.add(String.format(java.util.Locale.ROOT, "%sid%s=%s", prefix, suffix, ApiClient.urlEncode(ApiClient.valueToString(getId())))); - } - return joiner.toString(); } } - diff --git a/pe/src/main/java/org/thingsboard/client/model/AssetExportData.java b/pe/src/main/java/org/thingsboard/client/model/AssetExportData.java index 4344224a..46031dbb 100644 --- a/pe/src/main/java/org/thingsboard/client/model/AssetExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/AssetExportData.java @@ -75,18 +75,36 @@ public AssetExportData relations(@Nullable List relations) { return this; } + @Override + public AssetExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AssetExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AssetExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AssetExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AssetExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AssetExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java b/pe/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java index 8c60bba0..96ac759c 100644 --- a/pe/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/AssetProfileExportData.java @@ -75,18 +75,36 @@ public AssetProfileExportData relations(@Nullable List relations return this; } + @Override + public AssetProfileExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public AssetProfileExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public AssetProfileExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public AssetProfileExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public AssetProfileExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this AssetProfileExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java b/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java index ca6b61d8..5112d16b 100644 --- a/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java +++ b/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobConfiguration.java @@ -187,6 +187,12 @@ public CfReprocessingJobConfiguration toReprocess(@Nullable List toR return this; } + @Override + public CfReprocessingJobConfiguration addToReprocessItem(TaskResult toReprocessItem) { + super.addToReprocessItem(toReprocessItem); + return this; + } + /** * Return true if this CfReprocessingJobConfiguration object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java b/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java index ffea196b..f1a2980d 100644 --- a/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java +++ b/pe/src/main/java/org/thingsboard/client/model/CfReprocessingJobResult.java @@ -87,6 +87,12 @@ public CfReprocessingJobResult results(@Nullable List results) { return this; } + @Override + public CfReprocessingJobResult addResultsItem(TaskResult resultsItem) { + super.addResultsItem(resultsItem); + return this; + } + @Override public CfReprocessingJobResult generalError(@Nullable String generalError) { this.setGeneralError(generalError); diff --git a/pe/src/main/java/org/thingsboard/client/model/ConverterExportData.java b/pe/src/main/java/org/thingsboard/client/model/ConverterExportData.java index 5ebcfe67..4b298a89 100644 --- a/pe/src/main/java/org/thingsboard/client/model/ConverterExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/ConverterExportData.java @@ -75,18 +75,36 @@ public ConverterExportData relations(@Nullable List relations) { return this; } + @Override + public ConverterExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public ConverterExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public ConverterExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public ConverterExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public ConverterExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this ConverterExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java b/pe/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java index 6006b0cf..a51cb4d7 100644 --- a/pe/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java +++ b/pe/src/main/java/org/thingsboard/client/model/CsvReportTemplateConfig.java @@ -78,18 +78,36 @@ public CsvReportTemplateConfig entityAliases(@Nullable List entityA return this; } + @Override + public CsvReportTemplateConfig addEntityAliasesItem(EntityAlias entityAliasesItem) { + super.addEntityAliasesItem(entityAliasesItem); + return this; + } + @Override public CsvReportTemplateConfig filters(@Nullable List filters) { this.setFilters(filters); return this; } + @Override + public CsvReportTemplateConfig addFiltersItem(Filter filtersItem) { + super.addFiltersItem(filtersItem); + return this; + } + @Override public CsvReportTemplateConfig components(@Nullable List components) { this.setComponents(components); return this; } + @Override + public CsvReportTemplateConfig addComponentsItem(ReportComponent componentsItem) { + super.addComponentsItem(componentsItem); + return this; + } + /** * Return true if this CsvReportTemplateConfig object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/CustomerExportData.java b/pe/src/main/java/org/thingsboard/client/model/CustomerExportData.java index 0352193d..c7bba6f6 100644 --- a/pe/src/main/java/org/thingsboard/client/model/CustomerExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/CustomerExportData.java @@ -75,18 +75,36 @@ public CustomerExportData relations(@Nullable List relations) { return this; } + @Override + public CustomerExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public CustomerExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public CustomerExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public CustomerExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public CustomerExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this CustomerExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/DashboardExportData.java b/pe/src/main/java/org/thingsboard/client/model/DashboardExportData.java index 3a6e8cb3..e5b664a9 100644 --- a/pe/src/main/java/org/thingsboard/client/model/DashboardExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/DashboardExportData.java @@ -75,18 +75,36 @@ public DashboardExportData relations(@Nullable List relations) { return this; } + @Override + public DashboardExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DashboardExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DashboardExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DashboardExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DashboardExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DashboardExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/DeviceExportData.java b/pe/src/main/java/org/thingsboard/client/model/DeviceExportData.java index ad16a57b..cf007b20 100644 --- a/pe/src/main/java/org/thingsboard/client/model/DeviceExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/DeviceExportData.java @@ -105,18 +105,36 @@ public DeviceExportData relations(@Nullable List relations) { return this; } + @Override + public DeviceExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DeviceExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DeviceExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DeviceExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DeviceExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DeviceExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java b/pe/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java index e6f2dda9..46e91d95 100644 --- a/pe/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/DeviceProfileExportData.java @@ -75,18 +75,36 @@ public DeviceProfileExportData relations(@Nullable List relation return this; } + @Override + public DeviceProfileExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public DeviceProfileExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public DeviceProfileExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public DeviceProfileExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public DeviceProfileExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this DeviceProfileExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java b/pe/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java index c47664eb..791792ea 100644 --- a/pe/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java +++ b/pe/src/main/java/org/thingsboard/client/model/DockerComposeConfig.java @@ -122,6 +122,12 @@ public DockerComposeConfig arguments(@Nullable List arguments) return this; } + @Override + public DockerComposeConfig addArgumentsItem(AgentAppArgument argumentsItem) { + super.addArgumentsItem(argumentsItem); + return this; + } + @Override public DockerComposeConfig edgeRoutingKey(@Nullable String edgeRoutingKey) { this.setEdgeRoutingKey(edgeRoutingKey); diff --git a/pe/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java b/pe/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java index a7ebac2b..fcb91cc1 100644 --- a/pe/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java +++ b/pe/src/main/java/org/thingsboard/client/model/DummyJobConfiguration.java @@ -339,6 +339,12 @@ public DummyJobConfiguration toReprocess(@Nullable List toReprocess) return this; } + @Override + public DummyJobConfiguration addToReprocessItem(TaskResult toReprocessItem) { + super.addToReprocessItem(toReprocessItem); + return this; + } + /** * Return true if this DummyJobConfiguration object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/DummyJobResult.java b/pe/src/main/java/org/thingsboard/client/model/DummyJobResult.java index 02392ef9..bcb2506a 100644 --- a/pe/src/main/java/org/thingsboard/client/model/DummyJobResult.java +++ b/pe/src/main/java/org/thingsboard/client/model/DummyJobResult.java @@ -87,6 +87,12 @@ public DummyJobResult results(@Nullable List results) { return this; } + @Override + public DummyJobResult addResultsItem(TaskResult resultsItem) { + super.addResultsItem(resultsItem); + return this; + } + @Override public DummyJobResult generalError(@Nullable String generalError) { this.setGeneralError(generalError); diff --git a/pe/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java b/pe/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java index cf3a138b..6bf7ee9e 100644 --- a/pe/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/EntityGroupExportData.java @@ -218,18 +218,36 @@ public EntityGroupExportData relations(@Nullable List relations) return this; } + @Override + public EntityGroupExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public EntityGroupExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public EntityGroupExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public EntityGroupExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public EntityGroupExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this EntityGroupExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/EntityViewExportData.java b/pe/src/main/java/org/thingsboard/client/model/EntityViewExportData.java index 31049a04..68e9a4df 100644 --- a/pe/src/main/java/org/thingsboard/client/model/EntityViewExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/EntityViewExportData.java @@ -75,18 +75,36 @@ public EntityViewExportData relations(@Nullable List relations) return this; } + @Override + public EntityViewExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public EntityViewExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public EntityViewExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public EntityViewExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public EntityViewExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this EntityViewExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/IntegrationExportData.java b/pe/src/main/java/org/thingsboard/client/model/IntegrationExportData.java index cf1bb334..6345a2f6 100644 --- a/pe/src/main/java/org/thingsboard/client/model/IntegrationExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/IntegrationExportData.java @@ -75,18 +75,36 @@ public IntegrationExportData relations(@Nullable List relations) return this; } + @Override + public IntegrationExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public IntegrationExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public IntegrationExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public IntegrationExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public IntegrationExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this IntegrationExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java b/pe/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java index 6a6396f0..c5ca8968 100644 --- a/pe/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java +++ b/pe/src/main/java/org/thingsboard/client/model/MobileSelfRegistrationParams.java @@ -172,6 +172,12 @@ public MobileSelfRegistrationParams permissions(@Nullable List return this; } + @Override + public MobileSelfRegistrationParams addPermissionsItem(GroupPermission permissionsItem) { + super.addPermissionsItem(permissionsItem); + return this; + } + @Override public MobileSelfRegistrationParams notificationRecipient(@Nullable NotificationTargetId notificationRecipient) { this.setNotificationRecipient(notificationRecipient); @@ -184,6 +190,12 @@ public MobileSelfRegistrationParams signUpFields(@Nullable List sig return this; } + @Override + public MobileSelfRegistrationParams addSignUpFieldsItem(SignUpField signUpFieldsItem) { + super.addSignUpFieldsItem(signUpFieldsItem); + return this; + } + @Override public MobileSelfRegistrationParams customerTitlePrefix(@Nullable String customerTitlePrefix) { this.setCustomerTitlePrefix(customerTitlePrefix); diff --git a/pe/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java b/pe/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java index 8533fd35..54c8a43e 100644 --- a/pe/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/NotificationRuleExportData.java @@ -75,18 +75,36 @@ public NotificationRuleExportData relations(@Nullable List relat return this; } + @Override + public NotificationRuleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationRuleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationRuleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationRuleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationRuleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationRuleExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java b/pe/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java index 49b7bc5b..e535c934 100644 --- a/pe/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/NotificationTargetExportData.java @@ -75,18 +75,36 @@ public NotificationTargetExportData relations(@Nullable List rel return this; } + @Override + public NotificationTargetExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationTargetExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationTargetExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationTargetExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationTargetExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationTargetExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java b/pe/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java index 4c869f7a..608fb50f 100644 --- a/pe/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/NotificationTemplateExportData.java @@ -75,18 +75,36 @@ public NotificationTemplateExportData relations(@Nullable List r return this; } + @Override + public NotificationTemplateExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public NotificationTemplateExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public NotificationTemplateExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public NotificationTemplateExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public NotificationTemplateExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this NotificationTemplateExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java b/pe/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java index 760cc4ae..72bb4510 100644 --- a/pe/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/OtaPackageExportData.java @@ -75,18 +75,36 @@ public OtaPackageExportData relations(@Nullable List relations) return this; } + @Override + public OtaPackageExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public OtaPackageExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public OtaPackageExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public OtaPackageExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public OtaPackageExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this OtaPackageExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java b/pe/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java index 5ae61d1d..129d78eb 100644 --- a/pe/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java +++ b/pe/src/main/java/org/thingsboard/client/model/PdfReportTemplateConfig.java @@ -256,18 +256,36 @@ public PdfReportTemplateConfig entityAliases(@Nullable List entityA return this; } + @Override + public PdfReportTemplateConfig addEntityAliasesItem(EntityAlias entityAliasesItem) { + super.addEntityAliasesItem(entityAliasesItem); + return this; + } + @Override public PdfReportTemplateConfig filters(@Nullable List filters) { this.setFilters(filters); return this; } + @Override + public PdfReportTemplateConfig addFiltersItem(Filter filtersItem) { + super.addFiltersItem(filtersItem); + return this; + } + @Override public PdfReportTemplateConfig components(@Nullable List components) { this.setComponents(components); return this; } + @Override + public PdfReportTemplateConfig addComponentsItem(ReportComponent componentsItem) { + super.addComponentsItem(componentsItem); + return this; + } + /** * Return true if this PdfReportTemplateConfig object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java b/pe/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java index afb8e511..f30b647a 100644 --- a/pe/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java +++ b/pe/src/main/java/org/thingsboard/client/model/ReportJobConfiguration.java @@ -442,6 +442,12 @@ public ReportJobConfiguration toReprocess(@Nullable List toReprocess return this; } + @Override + public ReportJobConfiguration addToReprocessItem(TaskResult toReprocessItem) { + super.addToReprocessItem(toReprocessItem); + return this; + } + /** * Return true if this ReportJobConfiguration object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/ReportJobResult.java b/pe/src/main/java/org/thingsboard/client/model/ReportJobResult.java index 7bfe5db9..be1bbc25 100644 --- a/pe/src/main/java/org/thingsboard/client/model/ReportJobResult.java +++ b/pe/src/main/java/org/thingsboard/client/model/ReportJobResult.java @@ -117,6 +117,12 @@ public ReportJobResult results(@Nullable List results) { return this; } + @Override + public ReportJobResult addResultsItem(TaskResult resultsItem) { + super.addResultsItem(resultsItem); + return this; + } + @Override public ReportJobResult generalError(@Nullable String generalError) { this.setGeneralError(generalError); diff --git a/pe/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java b/pe/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java index 6524b903..dae2bed2 100644 --- a/pe/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/ReportTemplateExportData.java @@ -75,18 +75,36 @@ public ReportTemplateExportData relations(@Nullable List relatio return this; } + @Override + public ReportTemplateExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public ReportTemplateExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public ReportTemplateExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public ReportTemplateExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public ReportTemplateExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this ReportTemplateExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/RoleExportData.java b/pe/src/main/java/org/thingsboard/client/model/RoleExportData.java index 6f6efd5b..c329afb4 100644 --- a/pe/src/main/java/org/thingsboard/client/model/RoleExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/RoleExportData.java @@ -75,18 +75,36 @@ public RoleExportData relations(@Nullable List relations) { return this; } + @Override + public RoleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public RoleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public RoleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public RoleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public RoleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this RoleExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/RuleChainExportData.java b/pe/src/main/java/org/thingsboard/client/model/RuleChainExportData.java index abc0ec84..a1346a26 100644 --- a/pe/src/main/java/org/thingsboard/client/model/RuleChainExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/RuleChainExportData.java @@ -105,18 +105,36 @@ public RuleChainExportData relations(@Nullable List relations) { return this; } + @Override + public RuleChainExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public RuleChainExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public RuleChainExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public RuleChainExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public RuleChainExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this RuleChainExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java b/pe/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java index 022d3eba..c2c5ac04 100644 --- a/pe/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/SchedulerEventExportData.java @@ -75,18 +75,36 @@ public SchedulerEventExportData relations(@Nullable List relatio return this; } + @Override + public SchedulerEventExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public SchedulerEventExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public SchedulerEventExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public SchedulerEventExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public SchedulerEventExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this SchedulerEventExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/TbResourceExportData.java b/pe/src/main/java/org/thingsboard/client/model/TbResourceExportData.java index 14711026..5e200c5d 100644 --- a/pe/src/main/java/org/thingsboard/client/model/TbResourceExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/TbResourceExportData.java @@ -75,18 +75,36 @@ public TbResourceExportData relations(@Nullable List relations) return this; } + @Override + public TbResourceExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public TbResourceExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public TbResourceExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public TbResourceExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public TbResourceExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this TbResourceExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/UserExportData.java b/pe/src/main/java/org/thingsboard/client/model/UserExportData.java index c8227359..27af44a6 100644 --- a/pe/src/main/java/org/thingsboard/client/model/UserExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/UserExportData.java @@ -75,18 +75,36 @@ public UserExportData relations(@Nullable List relations) { return this; } + @Override + public UserExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public UserExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public UserExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public UserExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public UserExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this UserExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java b/pe/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java index 7ec19483..a7e4cf6f 100644 --- a/pe/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java +++ b/pe/src/main/java/org/thingsboard/client/model/WebSelfRegistrationParams.java @@ -172,6 +172,12 @@ public WebSelfRegistrationParams permissions(@Nullable List per return this; } + @Override + public WebSelfRegistrationParams addPermissionsItem(GroupPermission permissionsItem) { + super.addPermissionsItem(permissionsItem); + return this; + } + @Override public WebSelfRegistrationParams notificationRecipient(@Nullable NotificationTargetId notificationRecipient) { this.setNotificationRecipient(notificationRecipient); @@ -184,6 +190,12 @@ public WebSelfRegistrationParams signUpFields(@Nullable List signUp return this; } + @Override + public WebSelfRegistrationParams addSignUpFieldsItem(SignUpField signUpFieldsItem) { + super.addSignUpFieldsItem(signUpFieldsItem); + return this; + } + @Override public WebSelfRegistrationParams customerTitlePrefix(@Nullable String customerTitlePrefix) { this.setCustomerTitlePrefix(customerTitlePrefix); diff --git a/pe/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java b/pe/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java index 51136af7..4a5d8ec1 100644 --- a/pe/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/WidgetTypeExportData.java @@ -75,18 +75,36 @@ public WidgetTypeExportData relations(@Nullable List relations) return this; } + @Override + public WidgetTypeExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public WidgetTypeExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public WidgetTypeExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public WidgetTypeExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public WidgetTypeExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this WidgetTypeExportData object is equal to o. */ diff --git a/pe/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java b/pe/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java index de785786..cbd78ed7 100644 --- a/pe/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java +++ b/pe/src/main/java/org/thingsboard/client/model/WidgetsBundleExportData.java @@ -149,18 +149,36 @@ public WidgetsBundleExportData relations(@Nullable List relation return this; } + @Override + public WidgetsBundleExportData addRelationsItem(EntityRelation relationsItem) { + super.addRelationsItem(relationsItem); + return this; + } + @Override public WidgetsBundleExportData attributes(@Nullable Map> attributes) { this.setAttributes(attributes); return this; } + @Override + public WidgetsBundleExportData putAttributesItem(String key, List attributesItem) { + super.putAttributesItem(key, attributesItem); + return this; + } + @Override public WidgetsBundleExportData calculatedFields(@Nullable List calculatedFields) { this.setCalculatedFields(calculatedFields); return this; } + @Override + public WidgetsBundleExportData addCalculatedFieldsItem(CalculatedField calculatedFieldsItem) { + super.addCalculatedFieldsItem(calculatedFieldsItem); + return this; + } + /** * Return true if this WidgetsBundleExportData object is equal to o. */ diff --git a/pe/src/test/java/org/thingsboard/client/ClientCompatibilityTest.java b/pe/src/test/java/org/thingsboard/client/ClientCompatibilityTest.java new file mode 100644 index 00000000..7e074966 --- /dev/null +++ b/pe/src/test/java/org/thingsboard/client/ClientCompatibilityTest.java @@ -0,0 +1,110 @@ +/** + * Copyright © 2026-2026 ThingsBoard, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.client; + +import org.junit.jupiter.api.Test; +import org.thingsboard.client.api.ThingsboardApi; +import org.thingsboard.client.api.ThingsboardApi.GetUserAssetsArgs; +import org.thingsboard.client.model.Alarm; +import org.thingsboard.client.model.AlarmInfo; +import org.thingsboard.client.model.AliasEntityId; +import org.thingsboard.client.model.AliasEntityType; +import org.thingsboard.client.model.EntityType; +import org.thingsboard.client.model.PageDataAsset; + +import java.time.Duration; +import java.util.Map; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * Code written against the 4.4.0 client. It must keep compiling when the client is regenerated + * from a spec with corrected types (see openapi/client-compat.json); do not update it to a newer API. + * The API calls go to a closed port, so they only check that the calls compile and reach the HTTP client. + */ +@SuppressWarnings({"deprecation", "removal"}) +class ClientCompatibilityTest { + + private final ThingsboardApi api = new ThingsboardApi(new ApiClient() + .setScheme("http").setHost("127.0.0.1").setPort(1) + .setConnectTimeout(Duration.ofSeconds(5))); + + @Test + void pageParametersAcceptStrings() { + Map headers = Map.of(); + GetUserAssetsArgs args = GetUserAssetsArgs.builder().pageSize("10").page("0").textSearch("a").build(); + + assertThrows(ApiException.class, () -> { + PageDataAsset assets = api.getUserAssets(args); + }); + assertThrows(ApiException.class, () -> { + PageDataAsset assets = api.getUserAssets("10", "0", null, null, null, null, null); + }); + assertThrows(ApiException.class, () -> { + ApiResponse response = api.getUserAssetsWithHttpInfo("10", "0", null, null, null, null, null, headers); + }); + } + + @Test + void assignAlarmReturnsAlarm() { + String id = UUID.randomUUID().toString(); + assertThrows(ApiException.class, () -> { + Alarm alarm = api.assignAlarm(id, id); + }); + assertThrows(ApiException.class, () -> { + Alarm alarm = api.unassignAlarm(id); + }); + } + + @Test + void alarmInfoFluentSettersReturnAlarmInfo() { + AlarmInfo info = new AlarmInfo() + .addPropagateRelationTypesItem("Contains") + .originatorName("Device A"); + + assertEquals("Contains", info.getPropagateRelationTypes().get(0)); + assertEquals("Device A", info.getOriginatorName()); + } + + @Test + void aliasEntityIdKeepsTypedAccessors() { + UUID id = UUID.randomUUID(); + AliasEntityId entityId = new AliasEntityId().entityType(EntityType.DEVICE).id(id); + EntityType entityType = entityId.getEntityType(); + UUID entityUuid = entityId.getId(); + assertSame(EntityType.DEVICE, entityType); + assertEquals(id, entityUuid); + assertNull(entityId.getAliasEntityType()); + + AliasEntityId alias = new AliasEntityId().aliasEntityType(AliasEntityType.CURRENT_USER); + AliasEntityType aliasType = alias.getAliasEntityType(); + assertSame(AliasEntityType.CURRENT_USER, aliasType); + + AliasEntityId copy = new AliasEntityId(); + copy.setAliasEntityType(alias.getAliasEntityType()); + copy.setEntityType(alias.getEntityType()); + copy.setId(alias.getId()); + assertEquals(alias, copy); + + assertEquals("entityType", AliasEntityId.JSON_PROPERTY_ENTITY_TYPE); + assertEquals("aliasEntityType", AliasEntityId.JSON_PROPERTY_ALIAS_ENTITY_TYPE); + assertEquals("id", AliasEntityId.JSON_PROPERTY_ID); + } +} diff --git a/scripts/apply_client_compat.py b/scripts/apply_client_compat.py new file mode 100644 index 00000000..9c6b992a --- /dev/null +++ b/scripts/apply_client_compat.py @@ -0,0 +1,208 @@ +#!/usr/bin/env python3 +# +# Copyright © 2026-2026 ThingsBoard, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +"""Copy the spec with vendor extensions that keep the Java client backward compatible. + +When ThingsBoard corrects a type in its spec, the regenerated client can stop +compiling for code written against an earlier client version. The config file +(openapi/client-compat.json) lists such cases: + + subtypes + {child: parent} for classes that extend another class on the server + while the spec describes them as two unrelated schemas, e.g. AlarmInfo + and Alarm. The child becomes allOf [parent, its own properties] and the + parent gets x-parent, so the generated child extends the parent, and a + method that now returns AlarmInfo stays assignable to Alarm. The spec + itself stays flat because other generators (e.g. dart-dio) turn an + allOf parent into an abstract interface. + + legacyStringParams + {operationId: [parameter names]} that earlier spec versions documented + as strings and the spec now documents as int32 integers. They get + x-legacy-string, and their operation x-legacy-string-params, so + api.mustache generates deprecated String overloads that delegate to the + Integer ones. A parameter that is still a string is counted as pending. + +The script fails, naming the config entry, when the spec no longer matches the +config, so that a spec change cannot silently drop a compatibility overload: + - a subtype child or parent schema is missing; + - the child does not have every parent property with the same definition; + - the child already uses allOf in a shape other than the one this script + produces (re-running the script on its own output is accepted); + - an operationId is not in the spec, or a listed parameter is not a query + parameter of that operation, or is neither a string nor an int32 integer. + +Usage: apply_client_compat.py [--edition