Merge pull request #10607 from irynamatveieva/fix-json-parser-deprecated-method

Replaced deprecated JsonParser methods
This commit is contained in:
Andrew Shvayka 2024-04-22 13:21:42 +03:00 committed by GitHub
commit 91dbcf58ac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 49 additions and 59 deletions

View File

@ -647,7 +647,7 @@ public class TelemetryController extends BaseController {
Map<Long, List<KvEntry>> telemetryRequest; Map<Long, List<KvEntry>> telemetryRequest;
JsonElement telemetryJson; JsonElement telemetryJson;
try { try {
telemetryJson = new JsonParser().parse(requestBody); telemetryJson = JsonParser.parseString(requestBody);
} catch (Exception e) { } catch (Exception e) {
return getImmediateDeferredResult("Unable to parse timeseries payload: Invalid JSON body!", HttpStatus.BAD_REQUEST); return getImmediateDeferredResult("Unable to parse timeseries payload: Invalid JSON body!", HttpStatus.BAD_REQUEST);
} }

View File

@ -147,7 +147,7 @@ public class SequentialTimeseriesPersistenceTest extends AbstractControllerTest
void checkDiffBetweenLatestTsForDevicesAndAsset(List<Device> devices, Asset asset) throws ExecutionException, InterruptedException, TimeoutException { void checkDiffBetweenLatestTsForDevicesAndAsset(List<Device> devices, Asset asset) throws ExecutionException, InterruptedException, TimeoutException {
TsKvEntry assetTsKvEntry = getTsKvLatest(asset.getId(), GENERIC_CUMULATIVE_OBJ); TsKvEntry assetTsKvEntry = getTsKvLatest(asset.getId(), GENERIC_CUMULATIVE_OBJ);
Assert.assertTrue(assetTsKvEntry.getJsonValue().isPresent()); Assert.assertTrue(assetTsKvEntry.getJsonValue().isPresent());
JsonObject assetJsonObject = new JsonParser().parse(assetTsKvEntry.getJsonValue().get()).getAsJsonObject(); JsonObject assetJsonObject = JsonParser.parseString(assetTsKvEntry.getJsonValue().get()).getAsJsonObject();
for (Device device : devices) { for (Device device : devices) {
Long assetValue = assetJsonObject.get(device.getName()).getAsLong(); Long assetValue = assetJsonObject.get(device.getName()).getAsLong();
TsKvEntry deviceLatest = getTsKvLatest(device.getId(), TOTALIZER); TsKvEntry deviceLatest = getTsKvLatest(device.getId(), TOTALIZER);
@ -182,7 +182,7 @@ public class SequentialTimeseriesPersistenceTest extends AbstractControllerTest
JsonObject getJsonObject(String key, long value, Optional<String> tsKvEntryOpt) { JsonObject getJsonObject(String key, long value, Optional<String> tsKvEntryOpt) {
JsonObject jsonObject = new JsonObject(); JsonObject jsonObject = new JsonObject();
if (tsKvEntryOpt.isPresent()) { if (tsKvEntryOpt.isPresent()) {
jsonObject = new JsonParser().parse(tsKvEntryOpt.get()).getAsJsonObject(); jsonObject = JsonParser.parseString(tsKvEntryOpt.get()).getAsJsonObject();
} }
jsonObject.addProperty(key, value); jsonObject.addProperty(key, value);
return jsonObject; return jsonObject;

View File

@ -66,7 +66,6 @@ import java.util.stream.Collectors;
public class JsonConverter { public class JsonConverter {
private static final Gson GSON = new Gson(); private static final Gson GSON = new Gson();
private static final JsonParser JSON_PARSER = new JsonParser();
private static final String CAN_T_PARSE_VALUE = "Can't parse value: "; private static final String CAN_T_PARSE_VALUE = "Can't parse value: ";
private static final String DEVICE_PROPERTY = "device"; private static final String DEVICE_PROPERTY = "device";
@ -111,7 +110,7 @@ public class JsonConverter {
public static ClaimDeviceMsg convertToClaimDeviceProto(DeviceId deviceId, String json) { public static ClaimDeviceMsg convertToClaimDeviceProto(DeviceId deviceId, String json) {
long durationMs = 0L; long durationMs = 0L;
if (json != null && !json.isEmpty()) { if (json != null && !json.isEmpty()) {
return convertToClaimDeviceProto(deviceId, JSON_PARSER.parse(json)); return convertToClaimDeviceProto(deviceId, JsonParser.parseString(json));
} }
return buildClaimDeviceMsg(deviceId, DataConstants.DEFAULT_SECRET_KEY, durationMs); return buildClaimDeviceMsg(deviceId, DataConstants.DEFAULT_SECRET_KEY, durationMs);
} }
@ -160,7 +159,7 @@ public class JsonConverter {
result.addProperty("id", msg.getRequestId()); result.addProperty("id", msg.getRequestId());
} }
result.addProperty("method", msg.getMethodName()); result.addProperty("method", msg.getMethodName());
result.add("params", JSON_PARSER.parse(msg.getParams())); result.add("params", JsonParser.parseString(msg.getParams()));
return result; return result;
} }
@ -367,7 +366,7 @@ public class JsonConverter {
json.addProperty(name, entry.getLongV()); json.addProperty(name, entry.getLongV());
break; break;
case JSON_V: case JSON_V:
json.add(name, JSON_PARSER.parse(entry.getJsonV())); json.add(name, JsonParser.parseString(entry.getJsonV()));
break; break;
} }
} }
@ -388,7 +387,7 @@ public class JsonConverter {
result.add(de.getKv().getKey(), new JsonPrimitive(de.getKv().getStringV())); result.add(de.getKv().getKey(), new JsonPrimitive(de.getKv().getStringV()));
break; break;
case JSON_V: case JSON_V:
result.add(de.getKv().getKey(), JSON_PARSER.parse(de.getKv().getJsonV())); result.add(de.getKv().getKey(), JsonParser.parseString(de.getKv().getJsonV()));
break; break;
default: default:
throw new IllegalArgumentException("Unsupported data type: " + de.getKv().getType()); throw new IllegalArgumentException("Unsupported data type: " + de.getKv().getType());
@ -412,7 +411,7 @@ public class JsonConverter {
result.add(de.getKey(), new JsonPrimitive(de.getStrValue().get())); result.add(de.getKey(), new JsonPrimitive(de.getStrValue().get()));
break; break;
case JSON: case JSON:
result.add(de.getKey(), JSON_PARSER.parse(de.getJsonValue().get())); result.add(de.getKey(), JsonParser.parseString(de.getJsonValue().get()));
break; break;
default: default:
throw new IllegalArgumentException("Unsupported data type: " + de.getDataType()); throw new IllegalArgumentException("Unsupported data type: " + de.getDataType());
@ -422,7 +421,7 @@ public class JsonConverter {
public static JsonElement toJson(TransportProtos.ToServerRpcResponseMsg msg) { public static JsonElement toJson(TransportProtos.ToServerRpcResponseMsg msg) {
if (StringUtils.isEmpty(msg.getError())) { if (StringUtils.isEmpty(msg.getError())) {
return JSON_PARSER.parse(msg.getPayload()); return JsonParser.parseString(msg.getPayload());
} else { } else {
JsonObject errorMsg = new JsonObject(); JsonObject errorMsg = new JsonObject();
errorMsg.addProperty("error", msg.getError()); errorMsg.addProperty("error", msg.getError());
@ -456,7 +455,7 @@ public class JsonConverter {
result.addProperty("credentialsValue", payload.getCredentialsValue()); result.addProperty("credentialsValue", payload.getCredentialsValue());
break; break;
case MQTT_BASIC: case MQTT_BASIC:
result.add("credentialsValue", JSON_PARSER.parse(payload.getCredentialsValue()).getAsJsonObject()); result.add("credentialsValue", JsonParser.parseString(payload.getCredentialsValue()).getAsJsonObject());
break; break;
case LWM2M_CREDENTIALS: case LWM2M_CREDENTIALS:
break; break;
@ -572,7 +571,7 @@ public class JsonConverter {
} }
public static JsonElement parse(String json) { public static JsonElement parse(String json) {
return JSON_PARSER.parse(json); return JsonParser.parseString(json);
} }
public static <T> T parse(String json, Class<T> clazz) { public static <T> T parse(String json, Class<T> clazz) {
@ -600,7 +599,7 @@ public class JsonConverter {
} }
public static TransportProtos.ProvisionDeviceRequestMsg convertToProvisionRequestMsg(String json) { public static TransportProtos.ProvisionDeviceRequestMsg convertToProvisionRequestMsg(String json) {
JsonElement jsonElement = JSON_PARSER.parse(json); JsonElement jsonElement = JsonParser.parseString(json);
if (jsonElement.isJsonObject()) { if (jsonElement.isJsonObject()) {
return buildProvisionRequestMsg(jsonElement.getAsJsonObject()); return buildProvisionRequestMsg(jsonElement.getAsJsonObject());
} else { } else {

View File

@ -39,7 +39,6 @@ import java.util.List;
public class ProtoConverter { public class ProtoConverter {
public static final Gson GSON = new Gson(); public static final Gson GSON = new Gson();
public static final JsonParser JSON_PARSER = new JsonParser();
public static TransportProtos.PostTelemetryMsg convertToTelemetryProto(byte[] payload) throws InvalidProtocolBufferException, IllegalArgumentException { public static TransportProtos.PostTelemetryMsg convertToTelemetryProto(byte[] payload) throws InvalidProtocolBufferException, IllegalArgumentException {
TransportProtos.TsKvListProto protoPayload = TransportProtos.TsKvListProto.parseFrom(payload); TransportProtos.TsKvListProto protoPayload = TransportProtos.TsKvListProto.parseFrom(payload);
@ -165,7 +164,7 @@ public class ProtoConverter {
break; break;
case JSON_V: case JSON_V:
try { try {
JSON_PARSER.parse(keyValueProto.getJsonV()); JsonParser.parseString(keyValueProto.getJsonV());
} catch (Exception e) { } catch (Exception e) {
throw new IllegalArgumentException("Can't parse value: " + keyValueProto.getJsonV() + " for key: " + key + "!"); throw new IllegalArgumentException("Can't parse value: " + keyValueProto.getJsonV() + " for key: " + key + "!");
} }
@ -184,7 +183,7 @@ public class ProtoConverter {
rpcRequestJson.addProperty("requestId", toDeviceRpcRequestMsg.getRequestId()); rpcRequestJson.addProperty("requestId", toDeviceRpcRequestMsg.getRequestId());
String params = toDeviceRpcRequestMsg.getParams(); String params = toDeviceRpcRequestMsg.getParams();
try { try {
JsonElement paramsElement = JSON_PARSER.parse(params); JsonElement paramsElement = JsonParser.parseString(params);
rpcRequestJson.add("params", paramsElement); rpcRequestJson.add("params", paramsElement);
DynamicMessage dynamicRpcRequest = DynamicProtoUtils.jsonToDynamicMessage(rpcRequestDynamicMessageBuilder, GSON.toJson(rpcRequestJson)); DynamicMessage dynamicRpcRequest = DynamicProtoUtils.jsonToDynamicMessage(rpcRequestDynamicMessageBuilder, GSON.toJson(rpcRequestJson));
return dynamicRpcRequest.toByteArray(); return dynamicRpcRequest.toByteArray();

View File

@ -26,8 +26,6 @@ import java.util.ArrayList;
public class JsonConverterTest { public class JsonConverterTest {
private final JsonParser JSON_PARSER = new JsonParser();
@BeforeEach @BeforeEach
public void before() { public void before() {
JsonConverter.setTypeCastEnabled(true); JsonConverter.setTypeCastEnabled(true);
@ -35,55 +33,55 @@ public class JsonConverterTest {
@Test @Test
public void testParseBigDecimalAsLong() { public void testParseBigDecimalAsLong() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 1E+1}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 1E+1}"), 0L);
Assert.assertEquals(10L, result.get(0L).get(0).getLongValue().get().longValue()); Assert.assertEquals(10L, result.get(0L).get(0).getLongValue().get().longValue());
} }
@Test @Test
public void testParseBigDecimalAsDouble() { public void testParseBigDecimalAsDouble() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 101E-1}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 101E-1}"), 0L);
Assert.assertEquals(10.1, result.get(0L).get(0).getDoubleValue().get(), 0.0); Assert.assertEquals(10.1, result.get(0L).get(0).getDoubleValue().get(), 0.0);
} }
@Test @Test
public void testParseAttributesBigDecimalAsLong() { public void testParseAttributesBigDecimalAsLong() {
var result = new ArrayList<>(JsonConverter.convertToAttributes(JSON_PARSER.parse("{\"meterReadingDelta\": 1E1}"))); var result = new ArrayList<>(JsonConverter.convertToAttributes(JsonParser.parseString("{\"meterReadingDelta\": 1E1}")));
Assert.assertEquals(10L, result.get(0).getLongValue().get().longValue()); Assert.assertEquals(10L, result.get(0).getLongValue().get().longValue());
} }
@Test @Test
public void testParseAsDoubleWithZero() { public void testParseAsDoubleWithZero() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 42.0}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 42.0}"), 0L);
Assert.assertEquals(42.0, result.get(0L).get(0).getDoubleValue().get(), 0.0); Assert.assertEquals(42.0, result.get(0L).get(0).getDoubleValue().get(), 0.0);
} }
@Test @Test
public void testParseAsDouble() { public void testParseAsDouble() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 1.1}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 1.1}"), 0L);
Assert.assertEquals(1.1, result.get(0L).get(0).getDoubleValue().get(), 0.0); Assert.assertEquals(1.1, result.get(0L).get(0).getDoubleValue().get(), 0.0);
} }
@Test @Test
public void testParseAsLong() { public void testParseAsLong() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 11}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 11}"), 0L);
Assert.assertEquals(11L, result.get(0L).get(0).getLongValue().get().longValue()); Assert.assertEquals(11L, result.get(0L).get(0).getLongValue().get().longValue());
} }
@Test @Test
public void testParseBigDecimalAsStringOutOfLongRange() { public void testParseBigDecimalAsStringOutOfLongRange() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 9.9701010061400066E19}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 9.9701010061400066E19}"), 0L);
Assert.assertEquals("99701010061400066000", result.get(0L).get(0).getStrValue().get()); Assert.assertEquals("99701010061400066000", result.get(0L).get(0).getStrValue().get());
} }
@Test @Test
public void testParseBigDecimalAsStringOutOfLongRange2() { public void testParseBigDecimalAsStringOutOfLongRange2() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 99701010061400066001}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 99701010061400066001}"), 0L);
Assert.assertEquals("99701010061400066001", result.get(0L).get(0).getStrValue().get()); Assert.assertEquals("99701010061400066001", result.get(0L).get(0).getStrValue().get());
} }
@Test @Test
public void testParseBigDecimalAsStringOutOfLongRange3() { public void testParseBigDecimalAsStringOutOfLongRange3() {
var result = JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 1E19}"), 0L); var result = JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 1E19}"), 0L);
Assert.assertEquals("10000000000000000000", result.get(0L).get(0).getStrValue().get()); Assert.assertEquals("10000000000000000000", result.get(0L).get(0).getStrValue().get());
} }
@ -91,7 +89,7 @@ public class JsonConverterTest {
public void testParseBigDecimalOutOfLongRangeWithoutParsing() { public void testParseBigDecimalOutOfLongRangeWithoutParsing() {
JsonConverter.setTypeCastEnabled(false); JsonConverter.setTypeCastEnabled(false);
Assertions.assertThrows(JsonSyntaxException.class, () -> { Assertions.assertThrows(JsonSyntaxException.class, () -> {
JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 89701010051400054084}"), 0L); JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 89701010051400054084}"), 0L);
}); });
} }
@ -99,7 +97,7 @@ public class JsonConverterTest {
public void testParseBigDecimalOutOfLongRangeWithoutParsing2() { public void testParseBigDecimalOutOfLongRangeWithoutParsing2() {
JsonConverter.setTypeCastEnabled(false); JsonConverter.setTypeCastEnabled(false);
Assertions.assertThrows(JsonSyntaxException.class, () -> { Assertions.assertThrows(JsonSyntaxException.class, () -> {
JsonConverter.convertToTelemetry(JSON_PARSER.parse("{\"meterReadingDelta\": 9.9701010061400066E19}"), 0L); JsonConverter.convertToTelemetry(JsonParser.parseString("{\"meterReadingDelta\": 9.9701010061400066E19}"), 0L);
}); });
} }
} }

View File

@ -45,7 +45,7 @@ public class JsonCoapAdaptor implements CoapTransportAdaptor {
public TransportProtos.PostTelemetryMsg convertToPostTelemetry(UUID sessionId, Request inbound, Descriptors.Descriptor telemetryMsgDescriptor) throws AdaptorException { public TransportProtos.PostTelemetryMsg convertToPostTelemetry(UUID sessionId, Request inbound, Descriptors.Descriptor telemetryMsgDescriptor) throws AdaptorException {
String payload = validatePayload(sessionId, inbound, false); String payload = validatePayload(sessionId, inbound, false);
try { try {
return JsonConverter.convertToTelemetryProto(new JsonParser().parse(payload)); return JsonConverter.convertToTelemetryProto(JsonParser.parseString(payload));
} catch (IllegalStateException | JsonSyntaxException ex) { } catch (IllegalStateException | JsonSyntaxException ex) {
throw new AdaptorException(ex); throw new AdaptorException(ex);
} }
@ -55,7 +55,7 @@ public class JsonCoapAdaptor implements CoapTransportAdaptor {
public TransportProtos.PostAttributeMsg convertToPostAttributes(UUID sessionId, Request inbound, Descriptors.Descriptor attributesMsgDescriptor) throws AdaptorException { public TransportProtos.PostAttributeMsg convertToPostAttributes(UUID sessionId, Request inbound, Descriptors.Descriptor attributesMsgDescriptor) throws AdaptorException {
String payload = validatePayload(sessionId, inbound, false); String payload = validatePayload(sessionId, inbound, false);
try { try {
return JsonConverter.convertToAttributesProto(new JsonParser().parse(payload)); return JsonConverter.convertToAttributesProto(JsonParser.parseString(payload));
} catch (IllegalStateException | JsonSyntaxException ex) { } catch (IllegalStateException | JsonSyntaxException ex) {
throw new AdaptorException(ex); throw new AdaptorException(ex);
} }
@ -70,7 +70,7 @@ public class JsonCoapAdaptor implements CoapTransportAdaptor {
public TransportProtos.ToDeviceRpcResponseMsg convertToDeviceRpcResponse(UUID sessionId, Request inbound, Descriptors.Descriptor rpcResponseMsgDescriptor) throws AdaptorException { public TransportProtos.ToDeviceRpcResponseMsg convertToDeviceRpcResponse(UUID sessionId, Request inbound, Descriptors.Descriptor rpcResponseMsgDescriptor) throws AdaptorException {
Optional<Integer> requestId = CoapTransportResource.getRequestId(inbound); Optional<Integer> requestId = CoapTransportResource.getRequestId(inbound);
String payload = validatePayload(sessionId, inbound, false); String payload = validatePayload(sessionId, inbound, false);
JsonObject response = new JsonParser().parse(payload).getAsJsonObject(); JsonObject response = JsonParser.parseString(payload).getAsJsonObject();
return TransportProtos.ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId.orElseThrow(() -> new AdaptorException("Request id is missing!"))) return TransportProtos.ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId.orElseThrow(() -> new AdaptorException("Request id is missing!")))
.setPayload(response.toString()).build(); .setPayload(response.toString()).build();
} }
@ -78,7 +78,7 @@ public class JsonCoapAdaptor implements CoapTransportAdaptor {
@Override @Override
public TransportProtos.ToServerRpcRequestMsg convertToServerRpcRequest(UUID sessionId, Request inbound) throws AdaptorException { public TransportProtos.ToServerRpcRequestMsg convertToServerRpcRequest(UUID sessionId, Request inbound) throws AdaptorException {
String payload = validatePayload(sessionId, inbound, false); String payload = validatePayload(sessionId, inbound, false);
return JsonConverter.convertToServerRpcRequest(new JsonParser().parse(payload), 0); return JsonConverter.convertToServerRpcRequest(JsonParser.parseString(payload), 0);
} }
@Override @Override

View File

@ -45,7 +45,7 @@ public class ProtoCoapAdaptor implements CoapTransportAdaptor {
public TransportProtos.PostTelemetryMsg convertToPostTelemetry(UUID sessionId, Request inbound, Descriptors.Descriptor telemetryMsgDescriptor) throws AdaptorException { public TransportProtos.PostTelemetryMsg convertToPostTelemetry(UUID sessionId, Request inbound, Descriptors.Descriptor telemetryMsgDescriptor) throws AdaptorException {
ProtoConverter.validateDescriptor(telemetryMsgDescriptor); ProtoConverter.validateDescriptor(telemetryMsgDescriptor);
try { try {
return JsonConverter.convertToTelemetryProto(new JsonParser().parse(ProtoConverter.dynamicMsgToJson(inbound.getPayload(), telemetryMsgDescriptor))); return JsonConverter.convertToTelemetryProto(JsonParser.parseString(ProtoConverter.dynamicMsgToJson(inbound.getPayload(), telemetryMsgDescriptor)));
} catch (Exception e) { } catch (Exception e) {
throw new AdaptorException(e); throw new AdaptorException(e);
} }
@ -55,7 +55,7 @@ public class ProtoCoapAdaptor implements CoapTransportAdaptor {
public TransportProtos.PostAttributeMsg convertToPostAttributes(UUID sessionId, Request inbound, Descriptors.Descriptor attributesMsgDescriptor) throws AdaptorException { public TransportProtos.PostAttributeMsg convertToPostAttributes(UUID sessionId, Request inbound, Descriptors.Descriptor attributesMsgDescriptor) throws AdaptorException {
ProtoConverter.validateDescriptor(attributesMsgDescriptor); ProtoConverter.validateDescriptor(attributesMsgDescriptor);
try { try {
return JsonConverter.convertToAttributesProto(new JsonParser().parse(ProtoConverter.dynamicMsgToJson(inbound.getPayload(), attributesMsgDescriptor))); return JsonConverter.convertToAttributesProto(JsonParser.parseString(ProtoConverter.dynamicMsgToJson(inbound.getPayload(), attributesMsgDescriptor)));
} catch (Exception e) { } catch (Exception e) {
throw new AdaptorException(e); throw new AdaptorException(e);
} }
@ -74,7 +74,7 @@ public class ProtoCoapAdaptor implements CoapTransportAdaptor {
} else { } else {
ProtoConverter.validateDescriptor(rpcResponseMsgDescriptor); ProtoConverter.validateDescriptor(rpcResponseMsgDescriptor);
try { try {
JsonElement response = new JsonParser().parse(ProtoConverter.dynamicMsgToJson(inbound.getPayload(), rpcResponseMsgDescriptor)); JsonElement response = JsonParser.parseString(ProtoConverter.dynamicMsgToJson(inbound.getPayload(), rpcResponseMsgDescriptor));
return TransportProtos.ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId.orElseThrow(() -> new AdaptorException("Request id is missing!"))) return TransportProtos.ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId.orElseThrow(() -> new AdaptorException("Request id is missing!")))
.setPayload(response.toString()).build(); .setPayload(response.toString()).build();
} catch (Exception e) { } catch (Exception e) {

View File

@ -185,7 +185,7 @@ public class DeviceApiController implements TbTransportService {
transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
TransportService transportService = transportContext.getTransportService(); TransportService transportService = transportContext.getTransportService();
transportService.process(sessionInfo, JsonConverter.convertToAttributesProto(new JsonParser().parse(json)), transportService.process(sessionInfo, JsonConverter.convertToAttributesProto(JsonParser.parseString(json)),
new HttpOkCallback(responseWriter)); new HttpOkCallback(responseWriter));
})); }));
return responseWriter; return responseWriter;
@ -205,7 +205,7 @@ public class DeviceApiController implements TbTransportService {
transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
TransportService transportService = transportContext.getTransportService(); TransportService transportService = transportContext.getTransportService();
transportService.process(sessionInfo, JsonConverter.convertToTelemetryProto(new JsonParser().parse(json)), transportService.process(sessionInfo, JsonConverter.convertToTelemetryProto(JsonParser.parseString(json)),
new HttpOkCallback(responseWriter)); new HttpOkCallback(responseWriter));
})); }));
return responseWriter; return responseWriter;
@ -301,7 +301,7 @@ public class DeviceApiController implements TbTransportService {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>(); DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>();
transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(), transportContext.getTransportService().process(DeviceTransportType.DEFAULT, ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> { new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
JsonObject request = new JsonParser().parse(json).getAsJsonObject(); JsonObject request = JsonParser.parseString(json).getAsJsonObject();
TransportService transportService = transportContext.getTransportService(); TransportService transportService = transportContext.getTransportService();
transportService.registerSyncSession(sessionInfo, transportService.registerSyncSession(sessionInfo,
new HttpSessionListener(responseWriter, transportContext.getTransportService(), sessionInfo), new HttpSessionListener(responseWriter, transportContext.getTransportService(), sessionInfo),

View File

@ -50,7 +50,6 @@ import static org.thingsboard.server.gen.transport.TransportProtos.KeyValueType.
public class LwM2mTransportServerHelper { public class LwM2mTransportServerHelper {
private final LwM2mTransportContext context; private final LwM2mTransportContext context;
private final static JsonParser JSON_PARSER = new JsonParser();
public void sendParametersOnThingsboardAttribute(List<TransportProtos.KeyValueProto> result, SessionInfoProto sessionInfo) { public void sendParametersOnThingsboardAttribute(List<TransportProtos.KeyValueProto> result, SessionInfoProto sessionInfo) {
PostAttributeMsg.Builder request = PostAttributeMsg.newBuilder(); PostAttributeMsg.Builder request = PostAttributeMsg.newBuilder();
@ -231,7 +230,7 @@ public class LwM2mTransportServerHelper {
return kv.getStringV(); return kv.getStringV();
case JSON_V: case JSON_V:
try { try {
return JSON_PARSER.parse(kv.getJsonV()); return JsonParser.parseString(kv.getJsonV());
} catch (Exception e) { } catch (Exception e) {
return null; return null;
} }

View File

@ -59,7 +59,7 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor {
public TransportProtos.PostTelemetryMsg convertToPostTelemetry(MqttDeviceAwareSessionContext ctx, MqttPublishMessage inbound) throws AdaptorException { public TransportProtos.PostTelemetryMsg convertToPostTelemetry(MqttDeviceAwareSessionContext ctx, MqttPublishMessage inbound) throws AdaptorException {
String payload = validatePayload(ctx.getSessionId(), inbound.payload(), false); String payload = validatePayload(ctx.getSessionId(), inbound.payload(), false);
try { try {
return JsonConverter.convertToTelemetryProto(new JsonParser().parse(payload)); return JsonConverter.convertToTelemetryProto(JsonParser.parseString(payload));
} catch (IllegalStateException | JsonSyntaxException ex) { } catch (IllegalStateException | JsonSyntaxException ex) {
log.debug("Failed to decode post telemetry request", ex); log.debug("Failed to decode post telemetry request", ex);
throw new AdaptorException(ex); throw new AdaptorException(ex);
@ -70,7 +70,7 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor {
public TransportProtos.PostAttributeMsg convertToPostAttributes(MqttDeviceAwareSessionContext ctx, MqttPublishMessage inbound) throws AdaptorException { public TransportProtos.PostAttributeMsg convertToPostAttributes(MqttDeviceAwareSessionContext ctx, MqttPublishMessage inbound) throws AdaptorException {
String payload = validatePayload(ctx.getSessionId(), inbound.payload(), false); String payload = validatePayload(ctx.getSessionId(), inbound.payload(), false);
try { try {
return JsonConverter.convertToAttributesProto(new JsonParser().parse(payload)); return JsonConverter.convertToAttributesProto(JsonParser.parseString(payload));
} catch (IllegalStateException | JsonSyntaxException ex) { } catch (IllegalStateException | JsonSyntaxException ex) {
log.debug("Failed to decode post attributes request", ex); log.debug("Failed to decode post attributes request", ex);
throw new AdaptorException(ex); throw new AdaptorException(ex);
@ -162,7 +162,7 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor {
public static JsonElement validateJsonPayload(UUID sessionId, ByteBuf payloadData) throws AdaptorException { public static JsonElement validateJsonPayload(UUID sessionId, ByteBuf payloadData) throws AdaptorException {
String payload = validatePayload(sessionId, payloadData, false); String payload = validatePayload(sessionId, payloadData, false);
try { try {
return new JsonParser().parse(payload); return JsonParser.parseString(payload);
} catch (JsonSyntaxException ex) { } catch (JsonSyntaxException ex) {
log.debug("Payload is in incorrect format: {}", payload); log.debug("Payload is in incorrect format: {}", payload);
throw new AdaptorException(ex); throw new AdaptorException(ex);
@ -175,7 +175,7 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor {
TransportProtos.GetAttributeRequestMsg.Builder result = TransportProtos.GetAttributeRequestMsg.newBuilder(); TransportProtos.GetAttributeRequestMsg.Builder result = TransportProtos.GetAttributeRequestMsg.newBuilder();
result.setRequestId(getRequestId(topicName, topicBase)); result.setRequestId(getRequestId(topicName, topicBase));
String payload = inbound.payload().toString(UTF8); String payload = inbound.payload().toString(UTF8);
JsonElement requestBody = new JsonParser().parse(payload); JsonElement requestBody = JsonParser.parseString(payload);
Set<String> clientKeys = toStringSet(requestBody, "clientKeys"); Set<String> clientKeys = toStringSet(requestBody, "clientKeys");
Set<String> sharedKeys = toStringSet(requestBody, "sharedKeys"); Set<String> sharedKeys = toStringSet(requestBody, "sharedKeys");
if (clientKeys != null) { if (clientKeys != null) {
@ -208,7 +208,7 @@ public class JsonMqttAdaptor implements MqttTransportAdaptor {
String payload = validatePayload(ctx.getSessionId(), inbound.payload(), false); String payload = validatePayload(ctx.getSessionId(), inbound.payload(), false);
try { try {
int requestId = getRequestId(topicName, topicBase); int requestId = getRequestId(topicName, topicBase);
return JsonConverter.convertToServerRpcRequest(new JsonParser().parse(payload), requestId); return JsonConverter.convertToServerRpcRequest(JsonParser.parseString(payload), requestId);
} catch (IllegalStateException | JsonSyntaxException ex) { } catch (IllegalStateException | JsonSyntaxException ex) {
log.debug("Failed to decode to server rpc request", ex); log.debug("Failed to decode to server rpc request", ex);
throw new AdaptorException(ex); throw new AdaptorException(ex);

View File

@ -50,7 +50,7 @@ public class ProtoMqttAdaptor implements MqttTransportAdaptor {
byte[] bytes = toBytes(inbound.payload()); byte[] bytes = toBytes(inbound.payload());
Descriptors.Descriptor telemetryDynamicMsgDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getTelemetryDynamicMsgDescriptor()); Descriptors.Descriptor telemetryDynamicMsgDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getTelemetryDynamicMsgDescriptor());
try { try {
return JsonConverter.convertToTelemetryProto(new JsonParser().parse(ProtoConverter.dynamicMsgToJson(bytes, telemetryDynamicMsgDescriptor))); return JsonConverter.convertToTelemetryProto(JsonParser.parseString(ProtoConverter.dynamicMsgToJson(bytes, telemetryDynamicMsgDescriptor)));
} catch (Exception e) { } catch (Exception e) {
log.debug("Failed to decode post telemetry request", e); log.debug("Failed to decode post telemetry request", e);
throw new AdaptorException(e); throw new AdaptorException(e);
@ -63,7 +63,7 @@ public class ProtoMqttAdaptor implements MqttTransportAdaptor {
byte[] bytes = toBytes(inbound.payload()); byte[] bytes = toBytes(inbound.payload());
Descriptors.Descriptor attributesDynamicMessageDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getAttributesDynamicMessageDescriptor()); Descriptors.Descriptor attributesDynamicMessageDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getAttributesDynamicMessageDescriptor());
try { try {
return JsonConverter.convertToAttributesProto(new JsonParser().parse(ProtoConverter.dynamicMsgToJson(bytes, attributesDynamicMessageDescriptor))); return JsonConverter.convertToAttributesProto(JsonParser.parseString(ProtoConverter.dynamicMsgToJson(bytes, attributesDynamicMessageDescriptor)));
} catch (Exception e) { } catch (Exception e) {
log.debug("Failed to decode post attributes request", e); log.debug("Failed to decode post attributes request", e);
throw new AdaptorException(e); throw new AdaptorException(e);
@ -102,7 +102,7 @@ public class ProtoMqttAdaptor implements MqttTransportAdaptor {
Descriptors.Descriptor rpcResponseDynamicMessageDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getRpcResponseDynamicMessageDescriptor()); Descriptors.Descriptor rpcResponseDynamicMessageDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getRpcResponseDynamicMessageDescriptor());
try { try {
int requestId = getRequestId(topicName, topicBase); int requestId = getRequestId(topicName, topicBase);
JsonElement response = new JsonParser().parse(ProtoConverter.dynamicMsgToJson(bytes, rpcResponseDynamicMessageDescriptor)); JsonElement response = JsonParser.parseString(ProtoConverter.dynamicMsgToJson(bytes, rpcResponseDynamicMessageDescriptor));
return TransportProtos.ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId).setPayload(response.toString()).build(); return TransportProtos.ToDeviceRpcResponseMsg.newBuilder().setRequestId(requestId).setPayload(response.toString()).build();
} catch (Exception e) { } catch (Exception e) {
log.debug("Failed to decode rpc response", e); log.debug("Failed to decode rpc response", e);

View File

@ -94,7 +94,7 @@ public class SparkplugNodeSessionHandler extends AbstractGatewaySessionHandler<S
byte[] bytes = getBytes(inbound.payload()); byte[] bytes = getBytes(inbound.payload());
Descriptors.Descriptor telemetryDynamicMsgDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getTelemetryDynamicMsgDescriptor()); Descriptors.Descriptor telemetryDynamicMsgDescriptor = ProtoConverter.validateDescriptor(deviceSessionCtx.getTelemetryDynamicMsgDescriptor());
try { try {
return JsonConverter.convertToTelemetryProto(new JsonParser().parse(ProtoConverter.dynamicMsgToJson(bytes, telemetryDynamicMsgDescriptor))); return JsonConverter.convertToTelemetryProto(JsonParser.parseString(ProtoConverter.dynamicMsgToJson(bytes, telemetryDynamicMsgDescriptor)));
} catch (Exception e) { } catch (Exception e) {
log.debug("Failed to decode post telemetry request", e); log.debug("Failed to decode post telemetry request", e);
throw new AdaptorException(e); throw new AdaptorException(e);

View File

@ -24,8 +24,6 @@ import java.util.List;
public class JsonUtils { public class JsonUtils {
private static final JsonParser jsonParser = new JsonParser();
public static JsonObject getJsonObject(List<KeyValueProto> tsKv) { public static JsonObject getJsonObject(List<KeyValueProto> tsKv) {
JsonObject json = new JsonObject(); JsonObject json = new JsonObject();
for (KeyValueProto kv : tsKv) { for (KeyValueProto kv : tsKv) {
@ -43,7 +41,7 @@ public class JsonUtils {
json.addProperty(kv.getKey(), kv.getStringV()); json.addProperty(kv.getKey(), kv.getStringV());
break; break;
case JSON_V: case JSON_V:
json.add(kv.getKey(), jsonParser.parse(kv.getJsonV())); json.add(kv.getKey(), JsonParser.parseString(kv.getJsonV()));
break; break;
} }
} }
@ -51,7 +49,7 @@ public class JsonUtils {
} }
public static JsonElement parse(String params) { public static JsonElement parse(String params) {
return jsonParser.parse(params); return JsonParser.parseString(params);
} }
} }

View File

@ -72,7 +72,6 @@ import static org.thingsboard.common.util.DonAsynchron.withCallback;
public class TbSaveToCustomCassandraTableNode implements TbNode { public class TbSaveToCustomCassandraTableNode implements TbNode {
private static final String TABLE_PREFIX = "cs_tb_"; private static final String TABLE_PREFIX = "cs_tb_";
private static final JsonParser parser = new JsonParser();
private static final String ENTITY_ID = "$entityId"; private static final String ENTITY_ID = "$entityId";
private TbSaveToCustomCassandraTableNodeConfiguration config; private TbSaveToCustomCassandraTableNodeConfiguration config;
@ -168,7 +167,7 @@ public class TbSaveToCustomCassandraTableNode implements TbNode {
} }
private ListenableFuture<Void> save(TbMsg msg, TbContext ctx) { private ListenableFuture<Void> save(TbMsg msg, TbContext ctx) {
JsonElement data = parser.parse(msg.getData()); JsonElement data = JsonParser.parseString(msg.getData());
if (!data.isJsonObject()) { if (!data.isJsonObject()) {
throw new IllegalStateException("Invalid message structure, it is not a JSON Object:" + data); throw new IllegalStateException("Invalid message structure, it is not a JSON Object:" + data);
} else { } else {

View File

@ -25,7 +25,6 @@ import org.thingsboard.rule.engine.api.RuleNode;
import org.thingsboard.rule.engine.api.TbContext; import org.thingsboard.rule.engine.api.TbContext;
import org.thingsboard.rule.engine.api.TbNodeException; import org.thingsboard.rule.engine.api.TbNodeException;
import org.thingsboard.server.common.data.AttributeScope; import org.thingsboard.server.common.data.AttributeScope;
import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.kv.AttributeKvEntry; import org.thingsboard.server.common.data.kv.AttributeKvEntry;
import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry; import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
@ -75,7 +74,6 @@ public class TbGpsGeofencingActionNode extends AbstractGeofencingNode<TbGpsGeofe
private static final String REPORT_PRESENCE_STATUS_ON_EACH_MESSAGE = "reportPresenceStatusOnEachMessage"; private static final String REPORT_PRESENCE_STATUS_ON_EACH_MESSAGE = "reportPresenceStatusOnEachMessage";
private final Map<EntityId, EntityGeofencingState> entityStates = new HashMap<>(); private final Map<EntityId, EntityGeofencingState> entityStates = new HashMap<>();
private final Gson gson = new Gson(); private final Gson gson = new Gson();
private final JsonParser parser = new JsonParser();
@Override @Override
public void onMsg(TbContext ctx, TbMsg msg) throws TbNodeException { public void onMsg(TbContext ctx, TbMsg msg) throws TbNodeException {
@ -88,7 +86,7 @@ public class TbGpsGeofencingActionNode extends AbstractGeofencingNode<TbGpsGeofe
.find(ctx.getTenantId(), msg.getOriginator(), AttributeScope.SERVER_SCOPE, ctx.getServiceId()) .find(ctx.getTenantId(), msg.getOriginator(), AttributeScope.SERVER_SCOPE, ctx.getServiceId())
.get(1, TimeUnit.MINUTES); .get(1, TimeUnit.MINUTES);
if (entry.isPresent()) { if (entry.isPresent()) {
JsonObject element = parser.parse(entry.get().getValueAsString()).getAsJsonObject(); JsonObject element = JsonParser.parseString(entry.get().getValueAsString()).getAsJsonObject();
return new EntityGeofencingState(element.get("inside").getAsBoolean(), element.get("stateSwitchTime").getAsLong(), element.get("stayed").getAsBoolean()); return new EntityGeofencingState(element.get("inside").getAsBoolean(), element.get("stateSwitchTime").getAsLong(), element.get("stayed").getAsBoolean());
} else { } else {
return new EntityGeofencingState(false, 0L, false); return new EntityGeofencingState(false, 0L, false);