diff --git a/application/src/main/java/org/thingsboard/server/actors/rule/SimpleRuleActorChain.java b/application/src/main/java/org/thingsboard/server/actors/rule/SimpleRuleActorChain.java index 8112ac4c0d..5a8b20a877 100644 --- a/application/src/main/java/org/thingsboard/server/actors/rule/SimpleRuleActorChain.java +++ b/application/src/main/java/org/thingsboard/server/actors/rule/SimpleRuleActorChain.java @@ -16,7 +16,6 @@ package org.thingsboard.server.actors.rule; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Set; @@ -26,7 +25,7 @@ public class SimpleRuleActorChain implements RuleActorChain { public SimpleRuleActorChain(Set ruleSet) { rules = new ArrayList<>(ruleSet); - Collections.sort(rules, RuleActorMetaData.RULE_ACTOR_MD_COMPARATOR); + rules.sort(RuleActorMetaData.RULE_ACTOR_MD_COMPARATOR); } public int size() { diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/AbstractContextAwareMsgProcessor.java b/application/src/main/java/org/thingsboard/server/actors/shared/AbstractContextAwareMsgProcessor.java index 1c7f687cdc..a3141eec1b 100644 --- a/application/src/main/java/org/thingsboard/server/actors/shared/AbstractContextAwareMsgProcessor.java +++ b/application/src/main/java/org/thingsboard/server/actors/shared/AbstractContextAwareMsgProcessor.java @@ -19,7 +19,6 @@ import akka.actor.ActorContext; import akka.actor.ActorRef; import akka.actor.Scheduler; import akka.event.LoggingAdapter; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.AllArgsConstructor; diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/plugin/PluginManager.java b/application/src/main/java/org/thingsboard/server/actors/shared/plugin/PluginManager.java index c0380d509f..049accb870 100644 --- a/application/src/main/java/org/thingsboard/server/actors/shared/plugin/PluginManager.java +++ b/application/src/main/java/org/thingsboard/server/actors/shared/plugin/PluginManager.java @@ -15,9 +15,9 @@ */ package org.thingsboard.server.actors.shared.plugin; -import java.util.HashMap; -import java.util.Map; - +import akka.actor.ActorContext; +import akka.actor.ActorRef; +import akka.actor.Props; import lombok.extern.slf4j.Slf4j; import org.thingsboard.server.actors.ActorSystemContext; import org.thingsboard.server.actors.plugin.PluginActor; @@ -29,12 +29,9 @@ import org.thingsboard.server.common.data.page.PageDataIterable; import org.thingsboard.server.common.data.page.PageDataIterable.FetchFunction; import org.thingsboard.server.common.data.plugin.PluginMetaData; import org.thingsboard.server.dao.plugin.PluginService; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import akka.actor.ActorContext; -import akka.actor.ActorRef; -import akka.actor.Props; +import java.util.HashMap; +import java.util.Map; @Slf4j public abstract class PluginManager { @@ -64,13 +61,9 @@ public abstract class PluginManager { abstract TenantId getTenantId(); public ActorRef getOrCreatePluginActor(ActorContext context, PluginId pluginId) { - ActorRef pluginActor = pluginActors.get(pluginId); - if (pluginActor == null) { - pluginActor = context.actorOf(Props.create(new PluginActor.ActorCreator(systemContext, getTenantId(), pluginId)) - .withDispatcher(DefaultActorService.PLUGIN_DISPATCHER_NAME), pluginId.toString()); - pluginActors.put(pluginId, pluginActor); - } - return pluginActor; + return pluginActors.computeIfAbsent(pluginId, pId -> + context.actorOf(Props.create(new PluginActor.ActorCreator(systemContext, getTenantId(), pId)) + .withDispatcher(DefaultActorService.PLUGIN_DISPATCHER_NAME), pId.toString())); } public void broadcast(Object msg) { diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/plugin/SystemPluginManager.java b/application/src/main/java/org/thingsboard/server/actors/shared/plugin/SystemPluginManager.java index d8b58a0f98..a27e903b01 100644 --- a/application/src/main/java/org/thingsboard/server/actors/shared/plugin/SystemPluginManager.java +++ b/application/src/main/java/org/thingsboard/server/actors/shared/plugin/SystemPluginManager.java @@ -20,7 +20,6 @@ import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageDataIterable.FetchFunction; import org.thingsboard.server.common.data.plugin.PluginMetaData; import org.thingsboard.server.dao.plugin.BasePluginService; -import org.thingsboard.server.dao.plugin.PluginService; public class SystemPluginManager extends PluginManager { @@ -30,7 +29,7 @@ public class SystemPluginManager extends PluginManager { @Override FetchFunction getFetchPluginsFunction() { - return link -> pluginService.findSystemPlugins(link); + return pluginService::findSystemPlugins; } @Override diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/rule/RuleManager.java b/application/src/main/java/org/thingsboard/server/actors/shared/rule/RuleManager.java index 67d44e9cf6..dfe3f4453e 100644 --- a/application/src/main/java/org/thingsboard/server/actors/shared/rule/RuleManager.java +++ b/application/src/main/java/org/thingsboard/server/actors/shared/rule/RuleManager.java @@ -18,8 +18,7 @@ package org.thingsboard.server.actors.shared.rule; import akka.actor.ActorContext; import akka.actor.ActorRef; import akka.actor.Props; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; import org.thingsboard.server.actors.ActorSystemContext; import org.thingsboard.server.actors.rule.RuleActor; import org.thingsboard.server.actors.rule.RuleActorChain; @@ -38,10 +37,9 @@ import org.thingsboard.server.dao.rule.RuleService; import java.util.*; +@Slf4j public abstract class RuleManager { - protected static final Logger logger = LoggerFactory.getLogger(RuleManager.class); - protected final ActorSystemContext systemContext; protected final RuleService ruleService; protected final Map ruleActors; @@ -63,11 +61,11 @@ public abstract class RuleManager { ruleMap = new HashMap<>(); for (RuleMetaData rule : ruleIterator) { - logger.debug("[{}] Creating rule actor {}", rule.getId(), rule); + log.debug("[{}] Creating rule actor {}", rule.getId(), rule); ActorRef ref = getOrCreateRuleActor(context, rule.getId()); RuleActorMetaData actorMd = RuleActorMetaData.systemRule(rule.getId(), rule.getWeight(), ref); ruleMap.put(rule, actorMd); - logger.debug("[{}] Rule actor created.", rule.getId()); + log.debug("[{}] Rule actor created.", rule.getId()); } refreshRuleChain(); @@ -79,8 +77,11 @@ public abstract class RuleManager { rule = systemContext.getRuleService().findRuleById(ruleId); } if (rule == null) { - rule = ruleMap.keySet().stream().filter(r -> r.getId().equals(ruleId)).findFirst().orElse(null); - rule.setState(ComponentLifecycleState.SUSPENDED); + rule = ruleMap.keySet().stream() + .filter(r -> r.getId().equals(ruleId)) + .peek(r -> r.setState(ComponentLifecycleState.SUSPENDED)) + .findFirst() + .orElse(null); } if (rule != null) { RuleActorMetaData actorMd = ruleMap.get(rule); @@ -92,7 +93,7 @@ public abstract class RuleManager { refreshRuleChain(); return Optional.of(actorMd.getActorRef()); } else { - logger.warn("[{}] Can't process unknown rule!", rule.getId()); + log.warn("[{}] Can't process unknown rule!", ruleId); return Optional.empty(); } } @@ -100,13 +101,9 @@ public abstract class RuleManager { abstract FetchFunction getFetchRulesFunction(); public ActorRef getOrCreateRuleActor(ActorContext context, RuleId ruleId) { - ActorRef ruleActor = ruleActors.get(ruleId); - if (ruleActor == null) { - ruleActor = context.actorOf(Props.create(new RuleActor.ActorCreator(systemContext, tenantId, ruleId)) - .withDispatcher(DefaultActorService.RULE_DISPATCHER_NAME), ruleId.toString()); - ruleActors.put(ruleId, ruleActor); - } - return ruleActor; + return ruleActors.computeIfAbsent(ruleId, rId -> + context.actorOf(Props.create(new RuleActor.ActorCreator(systemContext, tenantId, rId)) + .withDispatcher(DefaultActorService.RULE_DISPATCHER_NAME), rId.toString())); } public RuleActorChain getRuleChain() { diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/rule/SystemRuleManager.java b/application/src/main/java/org/thingsboard/server/actors/shared/rule/SystemRuleManager.java index 6d56832b16..7fac168a74 100644 --- a/application/src/main/java/org/thingsboard/server/actors/shared/rule/SystemRuleManager.java +++ b/application/src/main/java/org/thingsboard/server/actors/shared/rule/SystemRuleManager.java @@ -29,7 +29,7 @@ public class SystemRuleManager extends RuleManager { @Override FetchFunction getFetchRulesFunction() { - return link -> ruleService.findSystemRules(link); + return ruleService::findSystemRules; } }