diff --git a/application/src/main/java/org/thingsboard/server/service/security/model/token/JwtTokenFactory.java b/application/src/main/java/org/thingsboard/server/service/security/model/token/JwtTokenFactory.java index 051e061857..026673a1ed 100644 --- a/application/src/main/java/org/thingsboard/server/service/security/model/token/JwtTokenFactory.java +++ b/application/src/main/java/org/thingsboard/server/service/security/model/token/JwtTokenFactory.java @@ -23,9 +23,9 @@ import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.JwtParser; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.MalformedJwtException; -import io.jsonwebtoken.SignatureException; import io.jsonwebtoken.UnsupportedJwtException; import io.jsonwebtoken.security.Keys; +import io.jsonwebtoken.security.SignatureException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; diff --git a/application/src/test/java/org/thingsboard/server/service/sync/vc/VersionControlTest.java b/application/src/test/java/org/thingsboard/server/service/sync/vc/VersionControlTest.java index 994f326627..bc4dcfc1b0 100644 --- a/application/src/test/java/org/thingsboard/server/service/sync/vc/VersionControlTest.java +++ b/application/src/test/java/org/thingsboard/server/service/sync/vc/VersionControlTest.java @@ -477,7 +477,7 @@ public class VersionControlTest extends AbstractControllerTest { Dashboard importedOtherDashboard = findDashboard(otherDashboard.getName()); Dashboard importedDashboard = findDashboard(dashboard.getName()); - Map.Entry entityAlias = importedDashboard.getConfiguration().get("entityAliases").fields().next(); + Map.Entry entityAlias = importedDashboard.getConfiguration().get("entityAliases").properties().iterator().next(); assertThat(entityAlias.getKey()).isEqualTo(aliasId); assertThat(entityAlias.getValue().get("id").asText()).isEqualTo(aliasId); diff --git a/application/src/test/java/org/thingsboard/server/transport/lwm2m/AbstractLwM2MIntegrationTest.java b/application/src/test/java/org/thingsboard/server/transport/lwm2m/AbstractLwM2MIntegrationTest.java index 4d5114425f..258a173451 100644 --- a/application/src/test/java/org/thingsboard/server/transport/lwm2m/AbstractLwM2MIntegrationTest.java +++ b/application/src/test/java/org/thingsboard/server/transport/lwm2m/AbstractLwM2MIntegrationTest.java @@ -102,10 +102,10 @@ import java.util.concurrent.atomic.AtomicLong; import static org.awaitility.Awaitility.await; import static org.eclipse.leshan.client.object.Security.noSec; +import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsInstanceOf.instanceOf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.timeout; diff --git a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java index 397ea791c6..fcdb2b04ea 100644 --- a/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java +++ b/common/transport/http/src/test/java/org/thingsboard/server/transport/http/DeviceApiControllerTest.java @@ -18,6 +18,7 @@ package org.thingsboard.server.transport.http; import com.google.gson.JsonParseException; import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import org.springframework.http.HttpInputMessage; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.web.context.request.async.DeferredResult; @@ -37,7 +38,7 @@ class DeviceApiControllerTest { }; var callback = new DeviceApiController.DeviceAuthCallback(transportContext, responseWriter, onSuccess); - callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); + callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax", (HttpInputMessage) null)); callback.onError(new JsonParseException("Json ; expected")); @@ -51,7 +52,7 @@ class DeviceApiControllerTest { DeferredResult responseWriter = Mockito.mock(DeferredResult.class); var callback = new DeviceApiController.DeviceProvisionCallback(responseWriter); - callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); + callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax", (HttpInputMessage) null)); callback.onError(new JsonParseException("Json ; expected")); @@ -71,7 +72,7 @@ class DeviceApiControllerTest { var callback = new DeviceApiController.GetOtaPackageCallback(transportContext, responseWriter, title, version, chunkSize, chunk); - callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax")); + callback.onError(new HttpMessageNotReadableException("JSON incorrect syntax", (HttpInputMessage) null)); callback.onError(new JsonParseException("Json ; expected")); diff --git a/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java b/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java index cf547cb9d4..ee57d31129 100644 --- a/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java +++ b/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java @@ -447,10 +447,8 @@ public class JacksonUtil { private static void toFlatMap(JsonNode node, String currentPath, Map map) { if (node.isObject()) { - Iterator> fields = node.fields(); currentPath = currentPath.isEmpty() ? "" : currentPath + "."; - while (fields.hasNext()) { - Map.Entry entry = fields.next(); + for (Map.Entry entry : node.properties()) { toFlatMap(entry.getValue(), currentPath + entry.getKey(), map); } } else if (node.isValueNode()) { @@ -554,8 +552,7 @@ public class JacksonUtil { } } else if (node.isObject()) { ObjectNode on = (ObjectNode) node; - for (Iterator> it = on.fields(); it.hasNext(); ) { - var kv = it.next(); + for (Map.Entry kv : on.properties()) { if (variableName != null) { tasks.add(task.next(kv.getValue(), variableName, kv.getKey())); } else { diff --git a/common/util/src/main/java/org/thingsboard/common/util/TbStopWatch.java b/common/util/src/main/java/org/thingsboard/common/util/TbStopWatch.java index 3a8b94c56e..fab0a72d3d 100644 --- a/common/util/src/main/java/org/thingsboard/common/util/TbStopWatch.java +++ b/common/util/src/main/java/org/thingsboard/common/util/TbStopWatch.java @@ -52,17 +52,17 @@ public class TbStopWatch extends StopWatch { public long stopAndGetTotalTimeNanos(){ stop(); - return getLastTaskTimeNanos(); + return lastTaskInfo().getTimeNanos(); } public long stopAndGetLastTaskTimeMillis(){ stop(); - return getLastTaskTimeMillis(); + return lastTaskInfo().getTimeMillis(); } public long stopAndGetLastTaskTimeNanos(){ stop(); - return getLastTaskTimeNanos(); + return lastTaskInfo().getTimeNanos(); } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/ai/Langchain4jJsonSchemaAdapter.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/ai/Langchain4jJsonSchemaAdapter.java index afe4372101..a6d1c60730 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/ai/Langchain4jJsonSchemaAdapter.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/ai/Langchain4jJsonSchemaAdapter.java @@ -94,7 +94,7 @@ final class Langchain4jJsonSchemaAdapter { JsonNode propertiesNode = objectSchema.get("properties"); if (propertiesNode != null) { - propertiesNode.fields().forEachRemaining(entry -> { + propertiesNode.properties().forEach(entry -> { String key = entry.getKey(); JsonNode value = entry.getValue(); builder.addProperty(key, parse(value)); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java index 08919f37fe..f9e732a53d 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/transform/TbCopyKeysNode.java @@ -29,7 +29,6 @@ import org.thingsboard.server.common.data.plugin.ComponentType; import org.thingsboard.server.common.msg.TbMsg; import java.util.Arrays; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -87,9 +86,7 @@ public class TbCopyKeysNode extends TbAbstractTransformNodeWithTbMsgSource { msgData = JacksonUtil.toString(msgDataNode); break; case DATA: - Iterator> iteratorNode = dataNode.fields(); - while (iteratorNode.hasNext()) { - Map.Entry entry = iteratorNode.next(); + for (Map.Entry entry : dataNode.properties()) { String msgKey = entry.getKey(); JsonNode msgValue = entry.getValue(); if (matches(msgKey)) { diff --git a/tools/src/main/java/org/thingsboard/client/tools/i18n/TranslationPruner.java b/tools/src/main/java/org/thingsboard/client/tools/i18n/TranslationPruner.java index 4181180521..6467c72114 100644 --- a/tools/src/main/java/org/thingsboard/client/tools/i18n/TranslationPruner.java +++ b/tools/src/main/java/org/thingsboard/client/tools/i18n/TranslationPruner.java @@ -25,7 +25,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.File; import java.io.IOException; import java.util.HashSet; -import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -37,9 +36,7 @@ public class TranslationPruner { */ private static void collectKeys(JsonNode node, String prefix, Set keys) { if (!node.isObject()) return; - Iterator> fields = node.fields(); - while (fields.hasNext()) { - Map.Entry entry = fields.next(); + for (Map.Entry entry : node.properties()) { String key = entry.getKey(); String fullKey = prefix.isEmpty() ? key : prefix + "." + key; keys.add(fullKey); @@ -52,9 +49,7 @@ public class TranslationPruner { */ private static ObjectNode pruneNode(ObjectNode node, Set keys, String prefix, ObjectMapper mapper) { ObjectNode pruned = mapper.createObjectNode(); - Iterator> fields = node.fields(); - while (fields.hasNext()) { - Map.Entry entry = fields.next(); + for (Map.Entry entry : node.properties()) { String key = entry.getKey(); JsonNode value = entry.getValue(); String fullKey = prefix.isEmpty() ? key : prefix + "." + key;