thingsboard-aplcache

Fixed ActorSystemContext initialization. UI: Fix rulenode

7/18/2018 5:59:45 AM

Details

diff --git a/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java b/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java
index 8e86661..64f5213 100644
--- a/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java
+++ b/application/src/main/java/org/thingsboard/server/service/rpc/DefaultDeviceRpcService.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.protobuf.InvalidProtocolBufferException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.thingsboard.rule.engine.api.RpcError;
 import org.thingsboard.rule.engine.api.msg.ToDeviceActorNotificationMsg;
@@ -67,6 +68,7 @@ public class DefaultDeviceRpcService implements DeviceRpcService {
     private ClusterRpcService rpcService;
 
     @Autowired
+    @Lazy
     private ActorService actorService;
 
     private ScheduledExecutorService rpcCallBackExecutor;
diff --git a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java
index a41fdee..f4e37db 100644
--- a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java
+++ b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java
@@ -28,6 +28,7 @@ import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.thingsboard.rule.engine.api.RpcError;
 import org.thingsboard.server.actors.service.ActorService;
@@ -102,6 +103,7 @@ public class DefaultDeviceStateService implements DeviceStateService {
     private AttributesService attributesService;
 
     @Autowired
+    @Lazy
     private ActorService actorService;
 
     @Autowired
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index 154a098..2a2728d 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -225,7 +225,7 @@ sql:
 # Actor system parameters
 actors:
   tenant:
-    create_components_on_init: true
+    create_components_on_init: "${ACTORS_TENANT_CREATE_COMPONENTS_ON_INIT:true}"
   session:
     max_concurrent_sessions_per_device: "${ACTORS_MAX_CONCURRENT_SESSION_PER_DEVICE:1}"
     sync:
diff --git a/ui/src/app/services/item-buffer.service.js b/ui/src/app/services/item-buffer.service.js
index a9fe348..09ed9c5 100644
--- a/ui/src/app/services/item-buffer.service.js
+++ b/ui/src/app/services/item-buffer.service.js
@@ -214,10 +214,19 @@ function ItemBuffer($q, bufferStore, types, utils, dashboardUtils, ruleChainServ
                 var node = ruleNodes.nodes[i];
                 var component = ruleChainService.getRuleNodeComponentByClazz(node.componentClazz);
                 if (component) {
+                    var icon = types.ruleNodeType[component.type].icon;
+                    var iconUrl = null;
+                    if (component.configurationDescriptor.nodeDefinition.icon) {
+                        icon = component.configurationDescriptor.nodeDefinition.icon;
+                    }
+                    if (component.configurationDescriptor.nodeDefinition.iconUrl) {
+                        iconUrl = component.configurationDescriptor.nodeDefinition.iconUrl;
+                    }
                     delete node.componentClazz;
                     node.component = component;
                     node.nodeClass = types.ruleNodeType[component.type].nodeClass;
-                    node.icon = types.ruleNodeType[component.type].icon;
+                    node.icon = icon;
+                    node.iconUrl = iconUrl;
                     node.connectors = [];
                     node.x = Math.round(node.x + deltaX);
                     node.y = Math.round(node.y + deltaY);