thingsboard-aplcache

Fix bugs.

6/4/2018 11:32:23 AM

Details

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 731d8d8..1e60751 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 b372368..5daebcc 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<String, Tenant>() {
 
                 @Override
-                protected List<Tenant> findEntities(String region, TextPageLink pageLink) {
-                    return tenantService.findTenants(pageLink).getData();
+                protected TextPageData<Tenant> findEntities(String region, TextPageLink pageLink) {
+                    return tenantService.findTenants(pageLink);
                 }
 
                 @Override
@@ -76,7 +75,7 @@ public class DefaultDataUpdateService implements DataUpdateService {
                 }
             };
 
-    public abstract class PaginatedUpdater<I, D extends IdBased<?>> {
+    public abstract class PaginatedUpdater<I, D extends SearchTextBased<? extends UUIDBased>> {
 
         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<D> entities = findEntities(id, pageLink);
-                for (D entity : entities) {
+                TextPageData<D> 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<D> findEntities(I id, TextPageLink pageLink);
+        protected abstract TextPageData<D> 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 7cc08bf..5d7e124 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)