> result = new ArrayList<>();
try {
if (uplinkMsg.getEntityDataCount() > 0) {
for (EntityDataProto entityData : uplinkMsg.getEntityDataList()) {
- result.addAll(ctx.getTelemetryProcessor().processTelemetryFromEdge(edge.getTenantId(), edge.getCustomerId(), entityData));
+ result.addAll(ctx.getTelemetryProcessor().processTelemetryFromEdge(edge.getTenantId(), entityData));
}
}
if (uplinkMsg.getDeviceUpdateMsgCount() > 0) {
@@ -629,17 +611,7 @@ public final class EdgeGrpcSession implements Closeable {
}
if (uplinkMsg.getDeviceRpcCallMsgCount() > 0) {
for (DeviceRpcCallMsg deviceRpcCallMsg : uplinkMsg.getDeviceRpcCallMsgList()) {
- result.add(ctx.getDeviceProcessor().processDeviceRpcCallResponseFromEdge(edge.getTenantId(), deviceRpcCallMsg));
- }
- }
- if (uplinkMsg.getDeviceProfileDevicesRequestMsgCount() > 0) {
- for (DeviceProfileDevicesRequestMsg deviceProfileDevicesRequestMsg : uplinkMsg.getDeviceProfileDevicesRequestMsgList()) {
- result.add(ctx.getEdgeRequestsService().processDeviceProfileDevicesRequestMsg(edge.getTenantId(), edge, deviceProfileDevicesRequestMsg));
- }
- }
- if (uplinkMsg.getAssetProfileAssetsRequestMsgCount() > 0) {
- for (AssetProfileAssetsRequestMsg assetProfileAssetsRequestMsg : uplinkMsg.getAssetProfileAssetsRequestMsgList()) {
- result.add(ctx.getEdgeRequestsService().processAssetProfileAssetsRequestMsg(edge.getTenantId(), edge, assetProfileAssetsRequestMsg));
+ result.add(ctx.getDeviceProcessor().processDeviceRpcCallFromEdge(edge.getTenantId(), edge, deviceRpcCallMsg));
}
}
if (uplinkMsg.getWidgetBundleTypesRequestMsgCount() > 0) {
@@ -653,8 +625,7 @@ public final class EdgeGrpcSession implements Closeable {
}
}
} catch (Exception e) {
- String errMsg = String.format("[%s] Can't process uplink msg [%s]", this.sessionId, uplinkMsg);
- log.error(errMsg, e);
+ log.error("[{}] Can't process uplink msg [{}]", this.sessionId, uplinkMsg, e);
return Futures.immediateFailedFuture(e);
}
return Futures.allAsList(result);
@@ -672,7 +643,7 @@ public final class EdgeGrpcSession implements Closeable {
return ConnectResponseMsg.newBuilder()
.setResponseCode(ConnectResponseCode.ACCEPTED)
.setErrorMsg("")
- .setConfiguration(constructEdgeConfigProto(edge)).build();
+ .setConfiguration(ctx.getEdgeMsgConstructor().constructEdgeConfiguration(edge)).build();
}
return ConnectResponseMsg.newBuilder()
.setResponseCode(ConnectResponseCode.BAD_CREDENTIALS)
@@ -692,26 +663,6 @@ public final class EdgeGrpcSession implements Closeable {
.setConfiguration(EdgeConfiguration.getDefaultInstance()).build();
}
- private EdgeConfiguration constructEdgeConfigProto(Edge edge) {
- EdgeConfiguration.Builder builder = EdgeConfiguration.newBuilder()
- .setEdgeIdMSB(edge.getId().getId().getMostSignificantBits())
- .setEdgeIdLSB(edge.getId().getId().getLeastSignificantBits())
- .setTenantIdMSB(edge.getTenantId().getId().getMostSignificantBits())
- .setTenantIdLSB(edge.getTenantId().getId().getLeastSignificantBits())
- .setName(edge.getName())
- .setType(edge.getType())
- .setRoutingKey(edge.getRoutingKey())
- .setSecret(edge.getSecret())
- .setAdditionalInfo(JacksonUtil.toString(edge.getAdditionalInfo()))
- .setCloudType("CE");
- if (edge.getCustomerId() != null) {
- builder.setCustomerIdMSB(edge.getCustomerId().getId().getMostSignificantBits())
- .setCustomerIdLSB(edge.getCustomerId().getId().getLeastSignificantBits());
- }
- return builder
- .build();
- }
-
@Override
public void close() {
log.debug("[{}] Closing session", sessionId);
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java
index d6bfff76f6..e9232584be 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeSyncCursor.java
@@ -25,7 +25,9 @@ import org.thingsboard.server.service.edge.rpc.fetch.CustomerEdgeEventFetcher;
import org.thingsboard.server.service.edge.rpc.fetch.CustomerUsersEdgeEventFetcher;
import org.thingsboard.server.service.edge.rpc.fetch.DashboardsEdgeEventFetcher;
import org.thingsboard.server.service.edge.rpc.fetch.DeviceProfilesEdgeEventFetcher;
+import org.thingsboard.server.service.edge.rpc.fetch.DevicesEdgeEventFetcher;
import org.thingsboard.server.service.edge.rpc.fetch.EdgeEventFetcher;
+import org.thingsboard.server.service.edge.rpc.fetch.EntityViewsEdgeEventFetcher;
import org.thingsboard.server.service.edge.rpc.fetch.OtaPackagesEdgeEventFetcher;
import org.thingsboard.server.service.edge.rpc.fetch.QueuesEdgeEventFetcher;
import org.thingsboard.server.service.edge.rpc.fetch.RuleChainsEdgeEventFetcher;
@@ -43,22 +45,28 @@ public class EdgeSyncCursor {
int currentIdx = 0;
- public EdgeSyncCursor(EdgeContextComponent ctx, Edge edge) {
- fetchers.add(new QueuesEdgeEventFetcher(ctx.getQueueService()));
- fetchers.add(new RuleChainsEdgeEventFetcher(ctx.getRuleChainService()));
- fetchers.add(new AdminSettingsEdgeEventFetcher(ctx.getAdminSettingsService(), ctx.getFreemarkerConfig()));
- fetchers.add(new DeviceProfilesEdgeEventFetcher(ctx.getDeviceProfileService()));
- fetchers.add(new AssetProfilesEdgeEventFetcher(ctx.getAssetProfileService()));
- fetchers.add(new TenantAdminUsersEdgeEventFetcher(ctx.getUserService()));
- if (edge.getCustomerId() != null && !EntityId.NULL_UUID.equals(edge.getCustomerId().getId())) {
- fetchers.add(new CustomerEdgeEventFetcher());
- fetchers.add(new CustomerUsersEdgeEventFetcher(ctx.getUserService(), edge.getCustomerId()));
+ public EdgeSyncCursor(EdgeContextComponent ctx, Edge edge, boolean fullSync) {
+ if (fullSync) {
+ fetchers.add(new QueuesEdgeEventFetcher(ctx.getQueueService()));
+ fetchers.add(new RuleChainsEdgeEventFetcher(ctx.getRuleChainService()));
+ fetchers.add(new AdminSettingsEdgeEventFetcher(ctx.getAdminSettingsService(), ctx.getFreemarkerConfig()));
+ fetchers.add(new DeviceProfilesEdgeEventFetcher(ctx.getDeviceProfileService()));
+ fetchers.add(new AssetProfilesEdgeEventFetcher(ctx.getAssetProfileService()));
+ fetchers.add(new TenantAdminUsersEdgeEventFetcher(ctx.getUserService()));
+ if (edge.getCustomerId() != null && !EntityId.NULL_UUID.equals(edge.getCustomerId().getId())) {
+ fetchers.add(new CustomerEdgeEventFetcher());
+ fetchers.add(new CustomerUsersEdgeEventFetcher(ctx.getUserService(), edge.getCustomerId()));
+ }
}
+ fetchers.add(new DevicesEdgeEventFetcher(ctx.getDeviceService()));
fetchers.add(new AssetsEdgeEventFetcher(ctx.getAssetService()));
- fetchers.add(new SystemWidgetsBundlesEdgeEventFetcher(ctx.getWidgetsBundleService()));
- fetchers.add(new TenantWidgetsBundlesEdgeEventFetcher(ctx.getWidgetsBundleService()));
+ fetchers.add(new EntityViewsEdgeEventFetcher(ctx.getEntityViewService()));
fetchers.add(new DashboardsEdgeEventFetcher(ctx.getDashboardService()));
- fetchers.add(new OtaPackagesEdgeEventFetcher(ctx.getOtaPackageService()));
+ if (fullSync) {
+ fetchers.add(new SystemWidgetsBundlesEdgeEventFetcher(ctx.getWidgetsBundleService()));
+ fetchers.add(new TenantWidgetsBundlesEdgeEventFetcher(ctx.getWidgetsBundleService()));
+ fetchers.add(new OtaPackagesEdgeEventFetcher(ctx.getOtaPackageService()));
+ }
}
public boolean hasNext() {
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java
index fb84d7f85a..f8cff82897 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetMsgConstructor.java
@@ -19,7 +19,6 @@ import org.springframework.stereotype.Component;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.asset.Asset;
import org.thingsboard.server.common.data.id.AssetId;
-import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.gen.edge.v1.AssetUpdateMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
import org.thingsboard.server.queue.util.TbCoreComponent;
@@ -28,19 +27,19 @@ import org.thingsboard.server.queue.util.TbCoreComponent;
@TbCoreComponent
public class AssetMsgConstructor {
- public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset, CustomerId customerId) {
+ public AssetUpdateMsg constructAssetUpdatedMsg(UpdateMsgType msgType, Asset asset) {
AssetUpdateMsg.Builder builder = AssetUpdateMsg.newBuilder()
.setMsgType(msgType)
- .setIdMSB(asset.getId().getId().getMostSignificantBits())
- .setIdLSB(asset.getId().getId().getLeastSignificantBits())
+ .setIdMSB(asset.getUuidId().getMostSignificantBits())
+ .setIdLSB(asset.getUuidId().getLeastSignificantBits())
.setName(asset.getName())
.setType(asset.getType());
if (asset.getLabel() != null) {
builder.setLabel(asset.getLabel());
}
- if (customerId != null) {
- builder.setCustomerIdMSB(customerId.getId().getMostSignificantBits());
- builder.setCustomerIdLSB(customerId.getId().getLeastSignificantBits());
+ if (asset.getCustomerId() != null) {
+ builder.setCustomerIdMSB(asset.getCustomerId().getId().getMostSignificantBits());
+ builder.setCustomerIdLSB(asset.getCustomerId().getId().getLeastSignificantBits());
}
if (asset.getAssetProfileId() != null) {
builder.setAssetProfileIdMSB(asset.getAssetProfileId().getId().getMostSignificantBits());
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetProfileMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetProfileMsgConstructor.java
index 78f7b0327e..ec71217955 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetProfileMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AssetProfileMsgConstructor.java
@@ -16,13 +16,11 @@
package org.thingsboard.server.service.edge.rpc.constructor;
import com.google.protobuf.ByteString;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.asset.AssetProfile;
import org.thingsboard.server.common.data.id.AssetProfileId;
import org.thingsboard.server.gen.edge.v1.AssetProfileUpdateMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
-import org.thingsboard.server.queue.util.DataDecodingEncodingService;
import org.thingsboard.server.queue.util.TbCoreComponent;
import java.nio.charset.StandardCharsets;
@@ -31,9 +29,6 @@ import java.nio.charset.StandardCharsets;
@TbCoreComponent
public class AssetProfileMsgConstructor {
- @Autowired
- private DataDecodingEncodingService dataDecodingEncodingService;
-
public AssetProfileUpdateMsg constructAssetProfileUpdatedMsg(UpdateMsgType msgType, AssetProfile assetProfile) {
AssetProfileUpdateMsg.Builder builder = AssetProfileUpdateMsg.newBuilder()
.setMsgType(msgType)
@@ -41,9 +36,9 @@ public class AssetProfileMsgConstructor {
.setIdLSB(assetProfile.getId().getId().getLeastSignificantBits())
.setName(assetProfile.getName())
.setDefault(assetProfile.isDefault());
- if (assetProfile.getDefaultRuleChainId() != null) {
- builder.setDefaultRuleChainIdMSB(assetProfile.getDefaultRuleChainId().getId().getMostSignificantBits())
- .setDefaultRuleChainIdLSB(assetProfile.getDefaultRuleChainId().getId().getLeastSignificantBits());
+ if (assetProfile.getDefaultDashboardId() != null) {
+ builder.setDefaultDashboardIdMSB(assetProfile.getDefaultDashboardId().getId().getMostSignificantBits())
+ .setDefaultDashboardIdLSB(assetProfile.getDefaultDashboardId().getId().getLeastSignificantBits());
}
if (assetProfile.getDefaultQueueName() != null) {
builder.setDefaultQueueName(assetProfile.getDefaultQueueName());
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java
index e240fa142d..c61c5eb260 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DashboardMsgConstructor.java
@@ -18,7 +18,6 @@ package org.thingsboard.server.service.edge.rpc.constructor;
import org.springframework.stereotype.Component;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.Dashboard;
-import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.gen.edge.v1.DashboardUpdateMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
@@ -28,16 +27,15 @@ import org.thingsboard.server.queue.util.TbCoreComponent;
@TbCoreComponent
public class DashboardMsgConstructor {
- public DashboardUpdateMsg constructDashboardUpdatedMsg(UpdateMsgType msgType, Dashboard dashboard, CustomerId customerId) {
+ public DashboardUpdateMsg constructDashboardUpdatedMsg(UpdateMsgType msgType, Dashboard dashboard) {
DashboardUpdateMsg.Builder builder = DashboardUpdateMsg.newBuilder()
.setMsgType(msgType)
.setIdMSB(dashboard.getId().getId().getMostSignificantBits())
.setIdLSB(dashboard.getId().getId().getLeastSignificantBits())
.setTitle(dashboard.getTitle())
.setConfiguration(JacksonUtil.toString(dashboard.getConfiguration()));
- if (customerId != null) {
- builder.setCustomerIdMSB(customerId.getId().getMostSignificantBits());
- builder.setCustomerIdLSB(customerId.getId().getLeastSignificantBits());
+ if (dashboard.getAssignedCustomers() != null) {
+ builder.setAssignedCustomers(JacksonUtil.toString(dashboard.getAssignedCustomers()));
}
return builder.build();
}
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java
index 3c2db96b31..522bcd3a4e 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceMsgConstructor.java
@@ -21,13 +21,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.Device;
-import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.security.DeviceCredentials;
import org.thingsboard.server.gen.edge.v1.DeviceCredentialsUpdateMsg;
import org.thingsboard.server.gen.edge.v1.DeviceRpcCallMsg;
import org.thingsboard.server.gen.edge.v1.DeviceUpdateMsg;
import org.thingsboard.server.gen.edge.v1.RpcRequestMsg;
+import org.thingsboard.server.gen.edge.v1.RpcResponseMsg;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
import org.thingsboard.server.queue.util.DataDecodingEncodingService;
import org.thingsboard.server.queue.util.TbCoreComponent;
@@ -41,7 +41,7 @@ public class DeviceMsgConstructor {
@Autowired
private DataDecodingEncodingService dataDecodingEncodingService;
- public DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device, CustomerId customerId, String conflictName) {
+ public DeviceUpdateMsg constructDeviceUpdatedMsg(UpdateMsgType msgType, Device device, String conflictName) {
DeviceUpdateMsg.Builder builder = DeviceUpdateMsg.newBuilder()
.setMsgType(msgType)
.setIdMSB(device.getId().getId().getMostSignificantBits())
@@ -51,9 +51,9 @@ public class DeviceMsgConstructor {
if (device.getLabel() != null) {
builder.setLabel(device.getLabel());
}
- if (customerId != null) {
- builder.setCustomerIdMSB(customerId.getId().getMostSignificantBits());
- builder.setCustomerIdLSB(customerId.getId().getLeastSignificantBits());
+ if (device.getCustomerId() != null) {
+ builder.setCustomerIdMSB(device.getCustomerId().getId().getMostSignificantBits());
+ builder.setCustomerIdLSB(device.getCustomerId().getId().getLeastSignificantBits());
}
if (device.getDeviceProfileId() != null) {
builder.setDeviceProfileIdMSB(device.getDeviceProfileId().getId().getMostSignificantBits());
@@ -97,25 +97,55 @@ public class DeviceMsgConstructor {
}
public DeviceRpcCallMsg constructDeviceRpcCallMsg(UUID deviceId, JsonNode body) {
- int requestId = body.get("requestId").asInt();
- boolean oneway = body.get("oneway").asBoolean();
- UUID requestUUID = UUID.fromString(body.get("requestUUID").asText());
- long expirationTime = body.get("expirationTime").asLong();
- String method = body.get("method").asText();
- String params = body.get("params").asText();
+ DeviceRpcCallMsg.Builder builder = constructDeviceRpcMsg(deviceId, body);
+ if (body.has("error") || body.has("response")) {
+ RpcResponseMsg.Builder responseBuilder = RpcResponseMsg.newBuilder();
+ if (body.has("error")) {
+ responseBuilder.setError(body.get("error").asText());
+ } else {
+ responseBuilder.setResponse(body.get("response").asText());
+ }
+ builder.setResponseMsg(responseBuilder.build());
+ } else {
+ RpcRequestMsg.Builder requestBuilder = RpcRequestMsg.newBuilder();
+ requestBuilder.setMethod(body.get("method").asText());
+ requestBuilder.setParams(body.get("params").asText());
+ builder.setRequestMsg(requestBuilder.build());
+ }
+ return builder.build();
+ }
- RpcRequestMsg.Builder requestBuilder = RpcRequestMsg.newBuilder();
- requestBuilder.setMethod(method);
- requestBuilder.setParams(params);
+ private DeviceRpcCallMsg.Builder constructDeviceRpcMsg(UUID deviceId, JsonNode body) {
DeviceRpcCallMsg.Builder builder = DeviceRpcCallMsg.newBuilder()
.setDeviceIdMSB(deviceId.getMostSignificantBits())
.setDeviceIdLSB(deviceId.getLeastSignificantBits())
- .setRequestUuidMSB(requestUUID.getMostSignificantBits())
- .setRequestUuidLSB(requestUUID.getLeastSignificantBits())
- .setRequestId(requestId)
- .setExpirationTime(expirationTime)
- .setOneway(oneway)
- .setRequestMsg(requestBuilder.build());
- return builder.build();
+ .setRequestId(body.get("requestId").asInt());
+ if (body.get("oneway") != null) {
+ builder.setOneway(body.get("oneway").asBoolean());
+ }
+ if (body.get("requestUUID") != null) {
+ UUID requestUUID = UUID.fromString(body.get("requestUUID").asText());
+ builder.setRequestUuidMSB(requestUUID.getMostSignificantBits())
+ .setRequestUuidLSB(requestUUID.getLeastSignificantBits());
+ }
+ if (body.get("expirationTime") != null) {
+ builder.setExpirationTime(body.get("expirationTime").asLong());
+ }
+ if (body.get("persisted") != null) {
+ builder.setPersisted(body.get("persisted").asBoolean());
+ }
+ if (body.get("retries") != null) {
+ builder.setRetries(body.get("retries").asInt());
+ }
+ if (body.get("additionalInfo") != null) {
+ builder.setAdditionalInfo(JacksonUtil.toString(body.get("additionalInfo")));
+ }
+ if (body.get("serviceId") != null) {
+ builder.setServiceId(body.get("serviceId").asText());
+ }
+ if (body.get("sessionId") != null) {
+ builder.setSessionId(body.get("sessionId").asText());
+ }
+ return builder;
}
}
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceProfileMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceProfileMsgConstructor.java
index cb0f3145a8..7865adb292 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceProfileMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/DeviceProfileMsgConstructor.java
@@ -43,11 +43,6 @@ public class DeviceProfileMsgConstructor {
.setDefault(deviceProfile.isDefault())
.setType(deviceProfile.getType().name())
.setProfileDataBytes(ByteString.copyFrom(dataDecodingEncodingService.encode(deviceProfile.getProfileData())));
- // TODO: @voba - add possibility to setup edge rule chain as device profile default
-// if (deviceProfile.getDefaultRuleChainId() != null) {
-// builder.setDefaultRuleChainIdMSB(deviceProfile.getDefaultRuleChainId().getId().getMostSignificantBits())
-// .setDefaultRuleChainIdLSB(deviceProfile.getDefaultRuleChainId().getId().getLeastSignificantBits());
-// }
if (deviceProfile.getDefaultQueueName() != null) {
builder.setDefaultQueueName(deviceProfile.getDefaultQueueName());
}
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EdgeMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EdgeMsgConstructor.java
new file mode 100644
index 0000000000..5501217578
--- /dev/null
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EdgeMsgConstructor.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright © 2016-2022 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.thingsboard.server.service.edge.rpc.constructor;
+
+import org.springframework.stereotype.Component;
+import org.thingsboard.common.util.JacksonUtil;
+import org.thingsboard.server.common.data.edge.Edge;
+import org.thingsboard.server.gen.edge.v1.EdgeConfiguration;
+import org.thingsboard.server.queue.util.TbCoreComponent;
+
+@Component
+@TbCoreComponent
+public class EdgeMsgConstructor {
+
+ public EdgeConfiguration constructEdgeConfiguration(Edge edge) {
+ EdgeConfiguration.Builder builder = EdgeConfiguration.newBuilder()
+ .setEdgeIdMSB(edge.getId().getId().getMostSignificantBits())
+ .setEdgeIdLSB(edge.getId().getId().getLeastSignificantBits())
+ .setTenantIdMSB(edge.getTenantId().getId().getMostSignificantBits())
+ .setTenantIdLSB(edge.getTenantId().getId().getLeastSignificantBits())
+ .setName(edge.getName())
+ .setType(edge.getType())
+ .setRoutingKey(edge.getRoutingKey())
+ .setSecret(edge.getSecret())
+ .setAdditionalInfo(JacksonUtil.toString(edge.getAdditionalInfo()))
+ .setCloudType("CE");
+ if (edge.getCustomerId() != null) {
+ builder.setCustomerIdMSB(edge.getCustomerId().getId().getMostSignificantBits())
+ .setCustomerIdLSB(edge.getCustomerId().getId().getLeastSignificantBits());
+ }
+ return builder.build();
+ }
+}
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java
index 855890022a..e2d3735910 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityDataMsgConstructor.java
@@ -15,13 +15,16 @@
*/
package org.thingsboard.server.service.edge.rpc.constructor;
-import com.google.gson.reflect.TypeToken;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.reflect.TypeToken;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
+import org.thingsboard.server.common.data.DataConstants;
+import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.data.edge.EdgeEventActionType;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.transport.adaptor.JsonConverter;
@@ -62,7 +65,7 @@ public class EntityDataMsgConstructor {
JsonObject data = entityData.getAsJsonObject();
TransportProtos.PostAttributeMsg attributesUpdatedMsg = JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv"));
builder.setAttributesUpdatedMsg(attributesUpdatedMsg);
- builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString());
+ builder.setPostAttributeScope(getScopeOfDefault(data));
} catch (Exception e) {
log.warn("[{}] Can't convert to AttributesUpdatedMsg proto, entityData [{}]", entityId, entityData, e);
}
@@ -72,7 +75,7 @@ public class EntityDataMsgConstructor {
JsonObject data = entityData.getAsJsonObject();
TransportProtos.PostAttributeMsg postAttributesMsg = JsonConverter.convertToAttributesProto(data.getAsJsonObject("kv"));
builder.setPostAttributesMsg(postAttributesMsg);
- builder.setPostAttributeScope(data.getAsJsonPrimitive("scope").getAsString());
+ builder.setPostAttributeScope(getScopeOfDefault(data));
} catch (Exception e) {
log.warn("[{}] Can't convert to PostAttributesMsg, entityData [{}]", entityId, entityData, e);
}
@@ -94,4 +97,13 @@ public class EntityDataMsgConstructor {
return builder.build();
}
+ private String getScopeOfDefault(JsonObject data) {
+ JsonPrimitive scope = data.getAsJsonPrimitive("scope");
+ String result = DataConstants.SERVER_SCOPE;
+ if (scope != null && StringUtils.isNotBlank(scope.getAsString())) {
+ result = scope.getAsString();
+ }
+ return result;
+ }
+
}
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java
index 759ce9e500..d5aa79700d 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/EntityViewMsgConstructor.java
@@ -18,7 +18,6 @@ package org.thingsboard.server.service.edge.rpc.constructor;
import org.springframework.stereotype.Component;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.EntityView;
-import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.gen.edge.v1.EdgeEntityType;
import org.thingsboard.server.gen.edge.v1.EntityViewUpdateMsg;
@@ -29,7 +28,7 @@ import org.thingsboard.server.queue.util.TbCoreComponent;
@TbCoreComponent
public class EntityViewMsgConstructor {
- public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView, CustomerId customerId) {
+ public EntityViewUpdateMsg constructEntityViewUpdatedMsg(UpdateMsgType msgType, EntityView entityView) {
EdgeEntityType entityType;
switch (entityView.getEntityId().getEntityType()) {
case DEVICE:
@@ -50,9 +49,9 @@ public class EntityViewMsgConstructor {
.setEntityIdMSB(entityView.getEntityId().getId().getMostSignificantBits())
.setEntityIdLSB(entityView.getEntityId().getId().getLeastSignificantBits())
.setEntityType(entityType);
- if (customerId != null) {
- builder.setCustomerIdMSB(customerId.getId().getMostSignificantBits());
- builder.setCustomerIdLSB(customerId.getId().getLeastSignificantBits());
+ if (entityView.getCustomerId() != null) {
+ builder.setCustomerIdMSB(entityView.getCustomerId().getId().getMostSignificantBits());
+ builder.setCustomerIdLSB(entityView.getCustomerId().getId().getLeastSignificantBits());
}
if (entityView.getAdditionalInfo() != null) {
builder.setAdditionalInfo(JacksonUtil.toString(entityView.getAdditionalInfo()));
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java
index ac6b822bef..625b555e24 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/UserMsgConstructor.java
@@ -18,7 +18,6 @@ package org.thingsboard.server.service.edge.rpc.constructor;
import org.springframework.stereotype.Component;
import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.User;
-import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.security.UserCredentials;
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
@@ -30,16 +29,16 @@ import org.thingsboard.server.queue.util.TbCoreComponent;
@TbCoreComponent
public class UserMsgConstructor {
- public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user, CustomerId customerId) {
+ public UserUpdateMsg constructUserUpdatedMsg(UpdateMsgType msgType, User user) {
UserUpdateMsg.Builder builder = UserUpdateMsg.newBuilder()
.setMsgType(msgType)
.setIdMSB(user.getId().getId().getMostSignificantBits())
.setIdLSB(user.getId().getId().getLeastSignificantBits())
.setEmail(user.getEmail())
.setAuthority(user.getAuthority().name());
- if (customerId != null) {
- builder.setCustomerIdMSB(customerId.getId().getMostSignificantBits());
- builder.setCustomerIdLSB(customerId.getId().getLeastSignificantBits());
+ if (user.getCustomerId() != null) {
+ builder.setCustomerIdMSB(user.getCustomerId().getId().getMostSignificantBits());
+ builder.setCustomerIdLSB(user.getCustomerId().getId().getLeastSignificantBits());
}
if (user.getFirstName() != null) {
builder.setFirstName(user.getFirstName());
diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/AdminSettingsEdgeEventFetcher.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/AdminSettingsEdgeEventFetcher.java
index c86fb98502..b7c30fde64 100644
--- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/AdminSettingsEdgeEventFetcher.java
+++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/AdminSettingsEdgeEventFetcher.java
@@ -17,13 +17,13 @@ package org.thingsboard.server.service.edge.rpc.fetch;
import com.datastax.oss.driver.api.core.uuid.Uuids;
import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import freemarker.template.Configuration;
import freemarker.template.Template;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.text.WordUtils;
+import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.EdgeUtils;
import org.thingsboard.server.common.data.StringUtils;
@@ -49,15 +49,13 @@ import java.util.regex.Pattern;
@Slf4j
public class AdminSettingsEdgeEventFetcher implements EdgeEventFetcher {
- private static final ObjectMapper mapper = new ObjectMapper();
-
private final AdminSettingsService adminSettingsService;
private final Configuration freemarkerConfig;
- private static Pattern startPattern = Pattern.compile("");
- private static Pattern endPattern = Pattern.compile("