From eb97bd7db7d461949e861d44b53d54fd8af22b02 Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Wed, 28 May 2025 17:08:09 +0300 Subject: [PATCH] Refactor EdqsState serialization --- .../server/service/edqs/DefaultEdqsService.java | 4 ++-- .../controller/EdqsEntityQueryControllerTest.java | 11 ++++++++--- .../server/common/data/edqs/EdqsState.java | 5 ++++- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java b/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java index 92ae38f7e9..617902bd3d 100644 --- a/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java +++ b/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java @@ -140,7 +140,7 @@ public class DefaultEdqsService implements EdqsService { .filter(serviceInfo -> serviceInfo.getServiceTypesList().contains(ServiceType.EDQS.name())) .filter(ServiceInfo::getReady) .toList(); - boolean changed = state.setEdqsReady(!readyEdqsServers.isEmpty()); + boolean changed = state.updateEdqsReady(!readyEdqsServers.isEmpty()); if (changed) { broadcastEdqsReady(state.getEdqsReady()); } @@ -236,7 +236,7 @@ public class DefaultEdqsService implements EdqsService { } private void onEdqsReady(boolean ready) { - state.setEdqsReady(ready); + state.updateEdqsReady(ready); checkState(); } diff --git a/application/src/test/java/org/thingsboard/server/controller/EdqsEntityQueryControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/EdqsEntityQueryControllerTest.java index 1bea463159..89bbe5e499 100644 --- a/application/src/test/java/org/thingsboard/server/controller/EdqsEntityQueryControllerTest.java +++ b/application/src/test/java/org/thingsboard/server/controller/EdqsEntityQueryControllerTest.java @@ -77,8 +77,9 @@ public class EdqsEntityQueryControllerTest extends EntityQueryControllerTest { } @Test - public void testEdqsState() { - assertThat(edqsService.getState().getApiMode()).isEqualTo(EdqsApiMode.AUTO_ENABLED); + public void testEdqsState() throws Exception { + loginSysAdmin(); + assertThat(getEdqsState().getApiMode()).isEqualTo(EdqsApiMode.AUTO_ENABLED); // notifying EDQS is not ready: API should be auto-disabled discoveryService.setReady(false); @@ -129,8 +130,12 @@ public class EdqsEntityQueryControllerTest extends EntityQueryControllerTest { private void verifyState(ThrowingConsumer assertion) { await().atMost(TIMEOUT, TimeUnit.SECONDS).untilAsserted(() -> { - assertThat(edqsService.getState()).satisfies(assertion); + assertThat(getEdqsState()).satisfies(assertion); }); } + private EdqsState getEdqsState() throws Exception { + return doGet("/api/edqs/state", EdqsState.class); + } + } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/edqs/EdqsState.java b/common/data/src/main/java/org/thingsboard/server/common/data/edqs/EdqsState.java index 7c3b328022..3df7fc92fe 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/edqs/EdqsState.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/edqs/EdqsState.java @@ -15,6 +15,7 @@ */ package org.thingsboard.server.common.data.edqs; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Getter; import lombok.NoArgsConstructor; @@ -32,16 +33,18 @@ public class EdqsState { @Setter private EdqsApiMode apiMode; - public boolean setEdqsReady(boolean ready) { + public boolean updateEdqsReady(boolean ready) { boolean changed = BooleanUtils.toBooleanDefaultIfNull(this.edqsReady, false) != ready; this.edqsReady = ready; return changed; } + @JsonIgnore public boolean isApiReady() { return edqsReady && syncStatus == EdqsSyncStatus.FINISHED; } + @JsonIgnore public boolean isApiEnabled() { return apiMode != null && (apiMode == EdqsApiMode.ENABLED || apiMode == EdqsApiMode.AUTO_ENABLED); }