Commit 436d37ff42a1d01d5ed5a5db68d83889de777623

Authored by Andrii Shvaika
1 parent 416c3fd1

Refactoring and backward-compatiblity improvements

... ... @@ -69,6 +69,7 @@ import org.thingsboard.server.service.rpc.FromDeviceRpcResponse;
69 69 import org.thingsboard.server.service.rpc.ToDeviceRpcRequestActorMsg;
70 70 import org.thingsboard.server.service.rpc.ToServerRpcResponseActorMsg;
71 71 import org.thingsboard.server.service.transport.msg.TransportToDeviceActorMsgWrapper;
  72 +import org.thingsboard.server.utils.JsonUtils;
72 73
73 74 import javax.annotation.Nullable;
74 75 import java.util.ArrayList;
... ... @@ -102,7 +103,6 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
102 103 private final Map<Integer, ToServerRpcRequestMetadata> toServerRpcPendingMap;
103 104
104 105 private final Gson gson = new Gson();
105   - private final JsonParser jsonParser = new JsonParser();
106 106
107 107 private int rpcSeq = 0;
108 108 private String deviceName;
... ... @@ -327,7 +327,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
327 327 }
328 328
329 329 private void handlePostAttributesRequest(ActorContext context, SessionInfoProto sessionInfo, PostAttributeMsg postAttributes) {
330   - JsonObject json = getJsonObject(postAttributes.getKvList());
  330 + JsonObject json = JsonUtils.getJsonObject(postAttributes.getKvList());
331 331 TbMsg tbMsg = new TbMsg(UUIDs.timeBased(), SessionMsgType.POST_ATTRIBUTES_REQUEST.name(), deviceId, defaultMetaData.copy(),
332 332 TbMsgDataType.JSON, gson.toJson(json), null, null, 0L);
333 333 pushToRuleEngine(context, tbMsg);
... ... @@ -335,7 +335,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
335 335
336 336 private void handlePostTelemetryRequest(ActorContext context, SessionInfoProto sessionInfo, PostTelemetryMsg postTelemetry) {
337 337 for (TsKvListProto tsKv : postTelemetry.getTsKvListList()) {
338   - JsonObject json = getJsonObject(tsKv.getKvList());
  338 + JsonObject json = JsonUtils.getJsonObject(tsKv.getKvList());
339 339 TbMsgMetaData metaData = defaultMetaData.copy();
340 340 metaData.putValue("ts", tsKv.getTs() + "");
341 341 TbMsg tbMsg = new TbMsg(UUIDs.timeBased(), SessionMsgType.POST_TELEMETRY_REQUEST.name(), deviceId, metaData, TbMsgDataType.JSON, gson.toJson(json), null, null, 0L);
... ... @@ -347,7 +347,7 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
347 347 UUID sessionId = getSessionId(sessionInfo);
348 348 JsonObject json = new JsonObject();
349 349 json.addProperty("method", request.getMethodName());
350   - json.add("params", jsonParser.parse(request.getParams()));
  350 + json.add("params", JsonUtils.parse(request.getParams()));
351 351
352 352 TbMsgMetaData requestMetaData = defaultMetaData.copy();
353 353 requestMetaData.putValue("requestId", Integer.toString(request.getRequestId()));
... ... @@ -551,30 +551,6 @@ class DeviceActorMessageProcessor extends AbstractContextAwareMsgProcessor {
551 551 this.defaultMetaData.putValue("deviceType", deviceType);
552 552 }
553 553
554   - private JsonObject getJsonObject(List<KeyValueProto> tsKv) {
555   - JsonObject json = new JsonObject();
556   - for (KeyValueProto kv : tsKv) {
557   - switch (kv.getType()) {
558   - case BOOLEAN_V:
559   - json.addProperty(kv.getKey(), kv.getBoolV());
560   - break;
561   - case LONG_V:
562   - json.addProperty(kv.getKey(), kv.getLongV());
563   - break;
564   - case DOUBLE_V:
565   - json.addProperty(kv.getKey(), kv.getDoubleV());
566   - break;
567   - case STRING_V:
568   - json.addProperty(kv.getKey(), kv.getStringV());
569   - break;
570   - case JSON_V:
571   - json.add(kv.getKey(), jsonParser.parse(kv.getJsonV()));
572   - break;
573   - }
574   - }
575   - return json;
576   - }
577   -
578 554 private void sendToTransport(GetAttributeResponseMsg responseMsg, SessionInfoProto sessionInfo) {
579 555 DeviceActorToTransportMsg msg = DeviceActorToTransportMsg.newBuilder()
580 556 .setSessionIdMSB(sessionInfo.getSessionIdMSB())
... ...
... ... @@ -103,7 +103,14 @@ public class DefaultMailService implements MailService {
103 103 javaMailProperties.put(MAIL_PROP + protocol + ".port", jsonConfig.get("smtpPort").asText());
104 104 javaMailProperties.put(MAIL_PROP + protocol + ".timeout", jsonConfig.get("timeout").asText());
105 105 javaMailProperties.put(MAIL_PROP + protocol + ".auth", String.valueOf(StringUtils.isNotEmpty(jsonConfig.get("username").asText())));
106   - boolean enableTls = jsonConfig.has("enableTls") && jsonConfig.get("enableTls").booleanValue();
  106 + boolean enableTls = false;
  107 + if (jsonConfig.has("enableTls")) {
  108 + if (jsonConfig.get("enableTls").isBoolean() && jsonConfig.get("enableTls").booleanValue()) {
  109 + enableTls = true;
  110 + } else if (jsonConfig.get("enableTls").isTextual()) {
  111 + enableTls = "true".equalsIgnoreCase(jsonConfig.get("enableTls").asText());
  112 + }
  113 + }
107 114 javaMailProperties.put(MAIL_PROP + protocol + ".starttls.enable", enableTls);
108 115 if (enableTls && jsonConfig.has("tlsVersion") && StringUtils.isNoneEmpty(jsonConfig.get("tlsVersion").asText())) {
109 116 javaMailProperties.put(MAIL_PROP + protocol + ".ssl.protocols", jsonConfig.get("tlsVersion").asText());
... ...
  1 +/**
  2 + * Copyright © 2016-2020 The Thingsboard Authors
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + */
  16 +package org.thingsboard.server.utils;
  17 +
  18 +import com.google.gson.JsonElement;
  19 +import com.google.gson.JsonObject;
  20 +import com.google.gson.JsonParser;
  21 +import org.thingsboard.server.gen.transport.TransportProtos.KeyValueProto;
  22 +import java.util.List;
  23 +
  24 +public class JsonUtils {
  25 +
  26 + private static final JsonParser jsonParser = new JsonParser();
  27 +
  28 + public static JsonObject getJsonObject(List<KeyValueProto> tsKv) {
  29 + JsonObject json = new JsonObject();
  30 + for (KeyValueProto kv : tsKv) {
  31 + switch (kv.getType()) {
  32 + case BOOLEAN_V:
  33 + json.addProperty(kv.getKey(), kv.getBoolV());
  34 + break;
  35 + case LONG_V:
  36 + json.addProperty(kv.getKey(), kv.getLongV());
  37 + break;
  38 + case DOUBLE_V:
  39 + json.addProperty(kv.getKey(), kv.getDoubleV());
  40 + break;
  41 + case STRING_V:
  42 + json.addProperty(kv.getKey(), kv.getStringV());
  43 + break;
  44 + case JSON_V:
  45 + json.add(kv.getKey(), jsonParser.parse(kv.getJsonV()));
  46 + break;
  47 + }
  48 + }
  49 + return json;
  50 + }
  51 +
  52 + public static JsonElement parse(String params) {
  53 + return jsonParser.parse(params);
  54 + }
  55 +}
... ...