From 75c0c5b3d05413d667f0a59734121cf27fbbe685 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Mon, 4 Jun 2018 17:32:23 +0300 Subject: [PATCH] Fix bugs. --- .../rulechain/TenantRuleChainManager.java | 4 +-- .../install/DefaultDataUpdateService.java | 25 ++++++++----------- .../rule/engine/rpc/TbSendRPCRequestNode.java | 14 ++++++++++- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/TenantRuleChainManager.java b/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/TenantRuleChainManager.java index 731d8d8e6c..1e607516e1 100644 --- a/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/TenantRuleChainManager.java +++ b/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/TenantRuleChainManager.java @@ -33,9 +33,7 @@ public class TenantRuleChainManager extends RuleChainManager { @Override public void init(ActorContext context) { - if (systemContext.isTenantComponentsInitEnabled()) { - super.init(context); - } + super.init(context); } @Override diff --git a/application/src/main/java/org/thingsboard/server/service/install/DefaultDataUpdateService.java b/application/src/main/java/org/thingsboard/server/service/install/DefaultDataUpdateService.java index b3723682e2..5daebcc3c5 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/DefaultDataUpdateService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/DefaultDataUpdateService.java @@ -19,16 +19,15 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; +import org.thingsboard.server.common.data.SearchTextBased; import org.thingsboard.server.common.data.Tenant; -import org.thingsboard.server.common.data.id.IdBased; +import org.thingsboard.server.common.data.id.UUIDBased; +import org.thingsboard.server.common.data.page.TextPageData; import org.thingsboard.server.common.data.page.TextPageLink; import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.dao.rule.RuleChainService; import org.thingsboard.server.dao.tenant.TenantService; -import java.util.List; -import java.util.UUID; - @Service @Profile("install") @Slf4j @@ -59,8 +58,8 @@ public class DefaultDataUpdateService implements DataUpdateService { new PaginatedUpdater() { @Override - protected List findEntities(String region, TextPageLink pageLink) { - return tenantService.findTenants(pageLink).getData(); + protected TextPageData findEntities(String region, TextPageLink pageLink) { + return tenantService.findTenants(pageLink); } @Override @@ -76,7 +75,7 @@ public class DefaultDataUpdateService implements DataUpdateService { } }; - public abstract class PaginatedUpdater> { + public abstract class PaginatedUpdater> { private static final int DEFAULT_LIMIT = 100; @@ -84,20 +83,18 @@ public class DefaultDataUpdateService implements DataUpdateService { TextPageLink pageLink = new TextPageLink(DEFAULT_LIMIT); boolean hasNext = true; while (hasNext) { - List entities = findEntities(id, pageLink); - for (D entity : entities) { + TextPageData entities = findEntities(id, pageLink); + for (D entity : entities.getData()) { updateEntity(entity); } - hasNext = entities.size() == pageLink.getLimit(); + hasNext = entities.hasNext(); if (hasNext) { - int index = entities.size() - 1; - UUID idOffset = entities.get(index).getUuidId(); - pageLink.setIdOffset(idOffset); + pageLink = entities.getNextPageLink(); } } } - protected abstract List findEntities(I id, TextPageLink pageLink); + protected abstract TextPageData findEntities(I id, TextPageLink pageLink); protected abstract void updateEntity(D entity); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java index 7cc08bf2ec..5d7e1241f7 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rpc/TbSendRPCRequestNode.java @@ -16,7 +16,10 @@ package org.thingsboard.rule.engine.rpc; import com.datastax.driver.core.utils.UUIDs; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.JsonNode; import com.google.gson.Gson; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import lombok.extern.slf4j.Slf4j; @@ -35,6 +38,7 @@ import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.plugin.ComponentType; import org.thingsboard.server.common.msg.TbMsg; +import java.io.IOException; import java.util.Random; import java.util.UUID; import java.util.concurrent.TimeUnit; @@ -86,10 +90,18 @@ public class TbSendRPCRequestNode implements TbNode { tmp = msg.getMetaData().getValue("expirationTime"); long expirationTime = !StringUtils.isEmpty(tmp) ? Long.parseLong(tmp) : (System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(config.getTimeoutInSeconds())); + String params; + JsonElement paramsEl = json.get("params"); + if (paramsEl.isJsonPrimitive()) { + params = paramsEl.getAsString(); + } else { + params = gson.toJson(paramsEl); + } + RuleEngineDeviceRpcRequest request = RuleEngineDeviceRpcRequest.builder() .oneway(oneway) .method(json.get("method").getAsString()) - .body(gson.toJson(json.get("params"))) + .body(params) .deviceId(new DeviceId(msg.getOriginator().getId())) .requestId(requestId) .requestUUID(requestUUID)