Merge pull request #9091 from volodymyr-babak/edge-json-attr-fix

Edge Attribute Request processing - added support of JSON attributes
This commit is contained in:
Andrew Shvayka 2023-08-17 17:34:51 +03:00 committed by GitHub
commit 49aa60a934
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -167,6 +167,8 @@ public class DefaultEdgeRequestsService implements EdgeRequestsService {
attributes.put(attr.getKey(), attr.getDoubleValue().get()); attributes.put(attr.getKey(), attr.getDoubleValue().get());
} else if (attr.getDataType() == DataType.LONG && attr.getLongValue().isPresent()) { } else if (attr.getDataType() == DataType.LONG && attr.getLongValue().isPresent()) {
attributes.put(attr.getKey(), attr.getLongValue().get()); attributes.put(attr.getKey(), attr.getLongValue().get());
} else if (attr.getDataType() == DataType.JSON && attr.getJsonValue().isPresent()) {
attributes.set(attr.getKey(), JacksonUtil.toJsonNode(attr.getJsonValue().get()));
} else { } else {
attributes.put(attr.getKey(), attr.getValueAsString()); attributes.put(attr.getKey(), attr.getValueAsString());
} }

View File

@ -384,8 +384,10 @@ public class DeviceEdgeTest extends AbstractEdgeTest {
"inactivityTimeout", "3600000"); "inactivityTimeout", "3600000");
sendAttributesRequestAndVerify(device, DataConstants.SHARED_SCOPE, "{\"key2\":\"value2\"}", sendAttributesRequestAndVerify(device, DataConstants.SHARED_SCOPE, "{\"key2\":\"value2\"}",
"key2", "value2"); "key2", "value2");
sendAttributesRequestAndVerify(device, DataConstants.SERVER_SCOPE, "{\"jsonKey\":{\"nestedJsonKey\":\"nestedJsonValue\"}}",
"jsonKey", "{\"nestedJsonKey\":\"nestedJsonValue\"}");
doDelete("/api/plugins/telemetry/DEVICE/" + device.getUuidId() + "/" + DataConstants.SERVER_SCOPE, "keys", "key1, inactivityTimeout"); doDelete("/api/plugins/telemetry/DEVICE/" + device.getUuidId() + "/" + DataConstants.SERVER_SCOPE, "keys", "key1, inactivityTimeout, jsonKey");
doDelete("/api/plugins/telemetry/DEVICE/" + device.getUuidId() + "/" + DataConstants.SHARED_SCOPE, "keys", "key2"); doDelete("/api/plugins/telemetry/DEVICE/" + device.getUuidId() + "/" + DataConstants.SHARED_SCOPE, "keys", "key2");
} }
@ -650,6 +652,9 @@ public class DeviceEdgeTest extends AbstractEdgeTest {
case LONG_V: case LONG_V:
Assert.assertEquals(Long.parseLong(expectedValue), keyValueProto.getLongV()); Assert.assertEquals(Long.parseLong(expectedValue), keyValueProto.getLongV());
break; break;
case JSON_V:
Assert.assertEquals(JacksonUtil.toJsonNode(expectedValue), JacksonUtil.toJsonNode(keyValueProto.getJsonV()));
break;
default: default:
Assert.fail("Unexpected data type: " + keyValueProto.getType()); Assert.fail("Unexpected data type: " + keyValueProto.getType());
} }