Browse Source

Merge pull request #35 from BohdanSmetanyuk/feature/fetch_admin_settings

Feature/fetch admin settings
pull/2436/head
VoBa 6 years ago
committed by GitHub
parent
commit
ab14bcb963
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      application/src/main/java/org/thingsboard/server/service/edge/EdgeContextComponent.java
  2. 14
      application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java
  3. 41
      application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AdminSettingsUpdateMsgConstructor.java
  4. 15
      application/src/main/java/org/thingsboard/server/service/edge/rpc/init/DefaultSyncEdgeService.java
  5. 3
      common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventType.java
  6. 8
      common/edge-api/src/main/proto/edge.proto

5
application/src/main/java/org/thingsboard/server/service/edge/EdgeContextComponent.java

@ -39,6 +39,7 @@ import org.thingsboard.server.queue.discovery.PartitionService;
import org.thingsboard.server.queue.provider.TbQueueProducerProvider;
import org.thingsboard.server.queue.util.TbCoreComponent;
import org.thingsboard.server.service.edge.rpc.EdgeEventStorageSettings;
import org.thingsboard.server.service.edge.rpc.constructor.AdminSettingsUpdateMsgConstructor;
import org.thingsboard.server.service.edge.rpc.constructor.AlarmUpdateMsgConstructor;
import org.thingsboard.server.service.edge.rpc.constructor.AssetUpdateMsgConstructor;
import org.thingsboard.server.service.edge.rpc.constructor.CustomerUpdateMsgConstructor;
@ -188,6 +189,10 @@ public class EdgeContextComponent {
@Autowired
private WidgetTypeUpdateMsgConstructor widgetTypeUpdateMsgConstructor;
@Lazy
@Autowired
private AdminSettingsUpdateMsgConstructor adminSettingsUpdateMsgConstructor;
@Lazy
@Autowired
private EntityDataMsgConstructor entityDataMsgConstructor;

14
application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java

@ -32,6 +32,7 @@ import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.RandomStringUtils;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.Customer;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.DataConstants;
@ -377,6 +378,9 @@ public final class EdgeGrpcSession implements Closeable {
case WIDGET_TYPE:
processWidgetType(edgeEvent, msgType, edgeEventAction);
break;
case ADMIN_SETTINGS:
processAdminSettings(edgeEvent);
break;
}
}
@ -732,6 +736,16 @@ public final class EdgeGrpcSession implements Closeable {
}
}
private void processAdminSettings(EdgeEvent edgeEvent) {
AdminSettings adminSettings = mapper.convertValue(edgeEvent.getEntityBody(), AdminSettings.class);
EntityUpdateMsg entityUpdateMsg = EntityUpdateMsg.newBuilder()
.setAdminSettingsUpdateMsg(ctx.getAdminSettingsUpdateMsgConstructor().constructAdminSettingsUpdateMsg(adminSettings))
.build();
outputStream.onNext(ResponseMsg.newBuilder()
.setEntityUpdateMsg(entityUpdateMsg)
.build());
}
private UpdateMsgType getResponseMsgType(ActionType actionType) {
switch (actionType) {
case UPDATED:

41
application/src/main/java/org/thingsboard/server/service/edge/rpc/constructor/AdminSettingsUpdateMsgConstructor.java

@ -0,0 +1,41 @@
/**
* Copyright © 2016-2020 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 lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.id.AdminSettingsId;
import org.thingsboard.server.dao.util.mapping.JacksonUtil;
import org.thingsboard.server.gen.edge.AdminSettingsUpdateMsg;
@Slf4j
@Component
public class AdminSettingsUpdateMsgConstructor {
public AdminSettingsUpdateMsg constructAdminSettingsUpdateMsg(AdminSettings adminSettings) {
AdminSettingsUpdateMsg.Builder builder = AdminSettingsUpdateMsg.newBuilder()
.setKey(adminSettings.getKey())
.setJsonValue(JacksonUtil.toString(adminSettings.getJsonValue()));
AdminSettingsId adminSettingsId = adminSettings.getId();
if (adminSettingsId != null) {
builder.setIdMSB(adminSettingsId.getId().getMostSignificantBits());
builder.setIdLSB(adminSettingsId.getId().getLeastSignificantBits());
}
return builder.build();
}
}

15
application/src/main/java/org/thingsboard/server/service/edge/rpc/init/DefaultSyncEdgeService.java

@ -25,6 +25,7 @@ import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.data.AdminSettings;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.Device;
@ -64,6 +65,7 @@ import org.thingsboard.server.dao.edge.EdgeEventService;
import org.thingsboard.server.dao.entityview.EntityViewService;
import org.thingsboard.server.dao.relation.RelationService;
import org.thingsboard.server.dao.rule.RuleChainService;
import org.thingsboard.server.dao.settings.AdminSettingsService;
import org.thingsboard.server.dao.user.UserService;
import org.thingsboard.server.dao.widget.WidgetTypeService;
import org.thingsboard.server.dao.widget.WidgetsBundleService;
@ -119,6 +121,9 @@ public class DefaultSyncEdgeService implements SyncEdgeService {
@Autowired
private WidgetTypeService widgetTypeService;
@Autowired
private AdminSettingsService adminSettingsService;
@Autowired
private DbCallbackExecutorService dbCallbackExecutorService;
@ -132,6 +137,7 @@ public class DefaultSyncEdgeService implements SyncEdgeService {
syncEntityViews(edge);
syncDashboards(edge);
syncWidgetsBundleAndWidgetTypes(edge);
syncAdminSettings(edge);
} catch (Exception e) {
log.error("Exception during sync process", e);
}
@ -291,6 +297,15 @@ public class DefaultSyncEdgeService implements SyncEdgeService {
}
}
private void syncAdminSettings(Edge edge) {
try {
AdminSettings mailSettings = adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, "mail");
saveEdgeEvent(edge.getTenantId(), edge.getId(), EdgeEventType.ADMIN_SETTINGS, ActionType.UPDATED, null, mapper.valueToTree(mailSettings));
} catch (Exception e) {
log.error("Can't load admin settings", e);
}
}
private void pushUsersToEdge(TextPageData<User> pageData, Edge edge) {
if (pageData != null && pageData.getData() != null && !pageData.getData().isEmpty()) {
log.trace("[{}] [{}] user(s) are going to be pushed to edge.", edge.getId(), pageData.getData().size());

3
common/data/src/main/java/org/thingsboard/server/common/data/edge/EdgeEventType.java

@ -29,5 +29,6 @@ public enum EdgeEventType {
RELATION,
TENANT,
WIDGETS_BUNDLE,
WIDGET_TYPE
WIDGET_TYPE,
ADMIN_SETTINGS
}

8
common/edge-api/src/main/proto/edge.proto

@ -61,6 +61,7 @@ message EntityUpdateMsg {
RelationUpdateMsg relationUpdateMsg = 12;
WidgetsBundleUpdateMsg widgetsBundleUpdateMsg = 13;
WidgetTypeUpdateMsg widgetTypeUpdateMsg = 14;
AdminSettingsUpdateMsg adminSettingsUpdateMsg = 15;
}
enum RequestMsgType {
@ -291,6 +292,13 @@ message WidgetTypeUpdateMsg {
bool isSystem = 8;
}
message AdminSettingsUpdateMsg {
int64 idMSB = 1;
int64 idLSB = 2;
string key = 3;
string jsonValue = 4;
}
message UserCredentialsUpdateMsg {
int64 userIdMSB = 1;
int64 userIdLSB = 2;

Loading…
Cancel
Save