diff --git a/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java b/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java index f7aeeb08b1..7d5de91890 100644 --- a/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java +++ b/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java @@ -139,7 +139,7 @@ public class EntityViewController extends BaseController { @ResponseBody public EntityView saveEntityView( @ApiParam(value = "A JSON object representing the entity view.") - @RequestBody EntityView entityView) throws ThingsboardException { + @RequestBody EntityView entityView) throws Exception { entityView.setTenantId(getCurrentUser().getTenantId()); EntityView existingEntityView = null; if (entityView.getId() == null) { diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/AbstractTbEntityService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/AbstractTbEntityService.java index 22bf93cd2c..0e66e365da 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/AbstractTbEntityService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/AbstractTbEntityService.java @@ -141,4 +141,13 @@ public abstract class AbstractTbEntityService { return Futures.immediateFailedFuture(new RuntimeException("Operation not supported!")); } } + + protected ListenableFuture autoCommit(User user, EntityType entityType, List entityIds) throws Exception { + if (vcService != null) { + return vcService.autoCommit(user, entityType, entityIds); + } else { + // We do not support auto-commit for rule engine + return Futures.immediateFailedFuture(new RuntimeException("Operation not supported!")); + } + } } diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/DefaultTbEntityViewService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/DefaultTbEntityViewService.java index 2848a4e97b..e098d6b605 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/DefaultTbEntityViewService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/DefaultTbEntityViewService.java @@ -74,12 +74,13 @@ public class DefaultTbEntityViewService extends AbstractTbEntityService implemen final Map>> localCache = new ConcurrentHashMap<>(); @Override - public EntityView save(EntityView entityView, EntityView existingEntityView, User user) throws ThingsboardException { + public EntityView save(EntityView entityView, EntityView existingEntityView, User user) throws Exception { ActionType actionType = entityView.getId() == null ? ActionType.ADDED : ActionType.UPDATED; TenantId tenantId = entityView.getTenantId(); try { EntityView savedEntityView = checkNotNull(entityViewService.saveEntityView(entityView)); this.updateEntityViewAttributes(tenantId, savedEntityView, existingEntityView, user); + autoCommit(user, savedEntityView.getId()); notificationEntityService.notifyCreateOrUpdateEntity(savedEntityView.getTenantId(), savedEntityView.getId(), savedEntityView, null, actionType, user); localCache.computeIfAbsent(savedEntityView.getTenantId(), (k) -> new ConcurrentReferenceHashMap<>()).clear(); diff --git a/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/TbEntityViewService.java b/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/TbEntityViewService.java index 28ead13853..c4dbedd2eb 100644 --- a/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/TbEntityViewService.java +++ b/application/src/main/java/org/thingsboard/server/service/entitiy/entityview/TbEntityViewService.java @@ -31,7 +31,7 @@ import java.util.List; public interface TbEntityViewService extends ComponentLifecycleListener { - EntityView save(EntityView entityView, EntityView existingEntityView, User user) throws ThingsboardException; + EntityView save(EntityView entityView, EntityView existingEntityView, User user) throws Exception; void updateEntityViewAttributes(TenantId tenantId, EntityView savedEntityView, EntityView oldEntityView, User user) throws ThingsboardException; diff --git a/application/src/main/java/org/thingsboard/server/service/rule/DefaultTbRuleChainService.java b/application/src/main/java/org/thingsboard/server/service/rule/DefaultTbRuleChainService.java index 90083e3089..5bf7d7415c 100644 --- a/application/src/main/java/org/thingsboard/server/service/rule/DefaultTbRuleChainService.java +++ b/application/src/main/java/org/thingsboard/server/service/rule/DefaultTbRuleChainService.java @@ -176,7 +176,7 @@ public class DefaultTbRuleChainService extends AbstractTbEntityService implement ActionType actionType = ruleChain.getId() == null ? ActionType.ADDED : ActionType.UPDATED; try { RuleChain savedRuleChain = checkNotNull(ruleChainService.saveRuleChain(ruleChain)); - vcService.autoCommit(user, savedRuleChain.getId()); + autoCommit(user, savedRuleChain.getId()); if (RuleChainType.CORE.equals(savedRuleChain.getType())) { tbClusterService.broadcastEntityStateChangeEvent(tenantId, savedRuleChain.getId(), @@ -229,7 +229,7 @@ public class DefaultTbRuleChainService extends AbstractTbEntityService implement public RuleChain saveDefaultByName(TenantId tenantId, DefaultRuleChainCreateRequest request, User user) throws Exception { try { RuleChain savedRuleChain = installScripts.createDefaultRuleChain(tenantId, request.getName()); - vcService.autoCommit(user, savedRuleChain.getId()); + autoCommit(user, savedRuleChain.getId()); tbClusterService.broadcastEntityStateChangeEvent(tenantId, savedRuleChain.getId(), ComponentLifecycleEvent.CREATED); notificationEntityService.logEntityAction(tenantId, savedRuleChain.getId(), savedRuleChain, ActionType.ADDED, user); return savedRuleChain; @@ -288,12 +288,12 @@ public class DefaultTbRuleChainService extends AbstractTbEntityService implement } if (updatedRuleChains.isEmpty()) { - vcService.autoCommit(user, ruleChainMetaData.getRuleChainId()); + autoCommit(user, ruleChainMetaData.getRuleChainId()); } else { List uuids = new ArrayList<>(updatedRuleChains.size() + 1); uuids.add(ruleChainMetaData.getRuleChainId().getId()); updatedRuleChains.forEach(rc -> uuids.add(rc.getId().getId())); - vcService.autoCommit(user, EntityType.RULE_CHAIN, uuids); + autoCommit(user, EntityType.RULE_CHAIN, uuids); } RuleChainMetaData savedRuleChainMetaData = checkNotNull(ruleChainService.loadRuleChainMetaData(tenantId, ruleChainMetaDataId));