diff --git a/common/actor/src/main/java/org/thingsboard/server/actors/TbActorMailbox.java b/common/actor/src/main/java/org/thingsboard/server/actors/TbActorMailbox.java index 4b822e0030..6cd28fa98d 100644 --- a/common/actor/src/main/java/org/thingsboard/server/actors/TbActorMailbox.java +++ b/common/actor/src/main/java/org/thingsboard/server/actors/TbActorMailbox.java @@ -237,8 +237,14 @@ public final class TbActorMailbox implements TbActorCtx { try { ready.set(NOT_READY); actor.destroy(stopReason, cause); - highPriorityMsgs.forEach(msg -> msg.onTbActorStopped(stopReason)); - normalPriorityMsgs.forEach(msg -> msg.onTbActorStopped(stopReason)); + highPriorityMsgs.removeIf(msg -> { + msg.onTbActorStopped(stopReason); + return true; + }); + normalPriorityMsgs.removeIf(msg -> { + msg.onTbActorStopped(stopReason); + return true; + }); } catch (Throwable t) { log.warn("[{}] Failed to destroy actor: ", selfId, t); } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/AdminSettings.java b/common/data/src/main/java/org/thingsboard/server/common/data/AdminSettings.java index ea3297e621..6092e65648 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/AdminSettings.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/AdminSettings.java @@ -32,8 +32,8 @@ public class AdminSettings extends BaseData implements HasTenan @NoXss @Length(fieldName = "key") private String key; - private transient JsonNode jsonValue; - + private JsonNode jsonValue; + public AdminSettings() { super(); } @@ -41,7 +41,7 @@ public class AdminSettings extends BaseData implements HasTenan public AdminSettings(AdminSettingsId id) { super(id); } - + public AdminSettings(AdminSettings adminSettings) { super(adminSettings); this.tenantId = adminSettings.getTenantId(); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/BaseData.java b/common/data/src/main/java/org/thingsboard/server/common/data/BaseData.java index 10ea83397b..2ac78b04b6 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/BaseData.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/BaseData.java @@ -25,9 +25,9 @@ public abstract class BaseData extends IdBased implement private static final long serialVersionUID = 5422817607129962637L; public static final ObjectMapper mapper = new ObjectMapper(); - + protected long createdTime; - + public BaseData() { super(); } @@ -35,7 +35,7 @@ public abstract class BaseData extends IdBased implement public BaseData(I id) { super(id); } - + public BaseData(BaseData data) { super(data.getId()); this.createdTime = data.getCreatedTime(); @@ -53,7 +53,7 @@ public abstract class BaseData extends IdBased implement public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + (int) (createdTime ^ (createdTime >>> 32)); + result = prime * result + Long.hashCode(createdTime); return result; } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java b/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java index 1deb322d39..b5ec74c2d3 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/Dashboard.java @@ -68,8 +68,8 @@ public class Dashboard extends DashboardInfo implements ExportableEntity implements @Schema(description = "Version of rule node configuration. ", example = "0") private int configurationVersion; @Schema(description = "JSON with the rule node configuration. Structure depends on the rule node implementation.", implementation = JsonNode.class) - private transient JsonNode configuration; - @JsonIgnore - private byte[] configurationBytes; + private JsonNode configuration; private RuleNodeId externalId; @@ -92,14 +90,6 @@ public class RuleNode extends BaseDataWithAdditionalInfo implements return name; } - public JsonNode getConfiguration() { - return BaseDataWithAdditionalInfo.getJson(() -> configuration, () -> configurationBytes); - } - - public void setConfiguration(JsonNode data) { - setJson(data, json -> this.configuration = json, bytes -> this.configurationBytes = bytes); - } - @Schema(description = "JSON object with the Rule Node Id. " + "Specify this field to update the Rule Node. " + "Referencing non-existing Rule Node Id will cause error. " + diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/settings/UserSettings.java b/common/data/src/main/java/org/thingsboard/server/common/data/settings/UserSettings.java index 5c9ef8fd1f..733d7fc041 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/settings/UserSettings.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/settings/UserSettings.java @@ -15,20 +15,15 @@ */ package org.thingsboard.server.common.data.settings; -import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.JsonNode; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.ToString; import org.thingsboard.server.common.data.id.UserId; import org.thingsboard.server.common.data.validation.Length; import org.thingsboard.server.common.data.validation.NoXss; import java.io.Serializable; -import static org.thingsboard.server.common.data.BaseDataWithAdditionalInfo.getJson; -import static org.thingsboard.server.common.data.BaseDataWithAdditionalInfo.setJson; - @Schema @Data public class UserSettings implements Serializable { @@ -43,20 +38,9 @@ public class UserSettings implements Serializable { @Length(fieldName = "type", max = 50) private UserSettingsType type; - @Schema(description = "JSON object with user settings.",implementation = com.fasterxml.jackson.databind.JsonNode.class) + @Schema(description = "JSON object with user settings.", implementation = com.fasterxml.jackson.databind.JsonNode.class) @NoXss @Length(fieldName = "settings", max = 100000) - private transient JsonNode settings; + private JsonNode settings; - @JsonIgnore - @ToString.Exclude - private byte[] settingsBytes; - - public JsonNode getSettings() { - return getJson(() -> settings, () -> settingsBytes); - } - - public void setSettings(JsonNode settings) { - setJson(settings, json -> this.settings = json, bytes -> this.settingsBytes = bytes); - } } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/widget/WidgetType.java b/common/data/src/main/java/org/thingsboard/server/common/data/widget/WidgetType.java index bdac430ce1..5385a54f74 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/widget/WidgetType.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/widget/WidgetType.java @@ -21,15 +21,17 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; import org.thingsboard.server.common.data.id.WidgetTypeId; import java.util.Optional; +@EqualsAndHashCode(callSuper = true) @Data public class WidgetType extends BaseWidgetType { @Schema(description = "Complex JSON object that describes the widget type", accessMode = Schema.AccessMode.READ_ONLY) - private transient JsonNode descriptor; + private JsonNode descriptor; public WidgetType() { super(); diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/KeystoreSslCredentials.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/KeystoreSslCredentials.java index edb1e4694b..97f438a8e1 100644 --- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/KeystoreSslCredentials.java +++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/KeystoreSslCredentials.java @@ -26,7 +26,7 @@ import java.security.GeneralSecurityException; import java.security.KeyStore; @Data -@EqualsAndHashCode(callSuper = false) +@EqualsAndHashCode(callSuper = true) public class KeystoreSslCredentials extends AbstractSslCredentials { private String type; diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/PemSslCredentials.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/PemSslCredentials.java index 6c7e0cf842..4d269f6964 100644 --- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/PemSslCredentials.java +++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/config/ssl/PemSslCredentials.java @@ -46,7 +46,7 @@ import java.util.List; import java.util.stream.Collectors; @Data -@EqualsAndHashCode(callSuper = false) +@EqualsAndHashCode(callSuper = true) public class PemSslCredentials extends AbstractSslCredentials { private static final String DEFAULT_KEY_ALIAS = "server"; @@ -72,7 +72,7 @@ public class PemSslCredentials extends AbstractSslCredentials { try (InputStream inStream = ResourceUtils.getInputStream(this, this.certFile)) { try (PEMParser pemParser = new PEMParser(new InputStreamReader(inStream))) { Object object; - while((object = pemParser.readObject()) != null) { + while ((object = pemParser.readObject()) != null) { if (object instanceof X509CertificateHolder) { X509Certificate x509Cert = certConverter.getCertificate((X509CertificateHolder) object); certificates.add(x509Cert);