diff --git a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptor.java b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptor.java index 72fd38aef4..934acbb2d6 100644 --- a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptor.java +++ b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptor.java @@ -37,7 +37,6 @@ import org.thingsboard.server.transport.mqtt.session.MqttDeviceAwareSessionConte import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -244,11 +243,12 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor { } /** - * Three-state per-scope attribute selection shared by the device and gateway JSON request parsers: + * Three-state per-scope attribute selection shared by the device and gateway JSON request parsers, + * matching the comma-separated {@code clientKeys}/{@code sharedKeys} format of the device MQTT API: * */ public static void parseAttributeScope(JsonObject json, String field, @@ -256,24 +256,11 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor { if (!json.has(field) || json.get(field).isJsonNull()) { return; } - JsonElement element = json.get(field); - List names = new ArrayList<>(); - if (element.isJsonArray()) { - for (JsonElement e : element.getAsJsonArray()) { - names.add(e.getAsString()); - } - } else { - String value = element.getAsString(); - if (value.trim().isEmpty()) { - setAll.run(); - return; - } - names.addAll(Arrays.asList(value.split(","))); - } - if (names.isEmpty()) { + String value = json.get(field).getAsString(); + if (value.trim().isEmpty()) { setAll.run(); } else { - setNames.accept(names); + setNames.accept(Arrays.asList(value.split(","))); } } diff --git a/common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptorTest.java b/common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptorTest.java index 38c1f089f6..ca5059fc63 100644 --- a/common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptorTest.java +++ b/common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/adaptors/JsonMqttAdaptorTest.java @@ -15,7 +15,6 @@ */ package org.thingsboard.server.transport.mqtt.adaptors; -import com.google.gson.JsonArray; import com.google.gson.JsonNull; import com.google.gson.JsonObject; import org.junit.jupiter.api.Test; @@ -71,15 +70,6 @@ public class JsonMqttAdaptorTest { assertTrue(names.isEmpty()); } - @Test - public void emptyArray_setsAll() { - JsonObject json = new JsonObject(); - json.add("clientKeys", new JsonArray()); - parseClientKeys(json); - assertTrue(allInvoked.get()); - assertTrue(names.isEmpty()); - } - @Test public void commaSeparatedString_setsNames() { JsonObject json = new JsonObject(); @@ -88,16 +78,4 @@ public class JsonMqttAdaptorTest { assertFalse(allInvoked.get()); assertEquals(List.of("a", "b", "c"), names); } - - @Test - public void jsonArray_setsNames() { - JsonObject json = new JsonObject(); - JsonArray arr = new JsonArray(); - arr.add("a"); - arr.add("b"); - json.add("clientKeys", arr); - parseClientKeys(json); - assertFalse(allInvoked.get()); - assertEquals(List.of("a", "b"), names); - } }