From d54e7a0e78f0da900aa7dc3274ac1097fdb7919d Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Thu, 15 May 2025 17:15:06 +0300 Subject: [PATCH] Refactor BaseController.checkEntityId --- .../server/controller/BaseController.java | 109 +++++------------- 1 file changed, 30 insertions(+), 79 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/BaseController.java b/application/src/main/java/org/thingsboard/server/controller/BaseController.java index 73e278389a..620c773913 100644 --- a/application/src/main/java/org/thingsboard/server/controller/BaseController.java +++ b/application/src/main/java/org/thingsboard/server/controller/BaseController.java @@ -385,7 +385,7 @@ public abstract class BaseController { public void handleControllerException(Exception e, HttpServletResponse response) { ThingsboardException thingsboardException = handleException(e); if (thingsboardException.getErrorCode() == ThingsboardErrorCode.GENERAL && thingsboardException.getCause() instanceof Exception - && StringUtils.equals(thingsboardException.getCause().getMessage(), thingsboardException.getMessage())) { + && StringUtils.equals(thingsboardException.getCause().getMessage(), thingsboardException.getMessage())) { e = (Exception) thingsboardException.getCause(); } else { e = thingsboardException; @@ -430,7 +430,7 @@ public abstract class BaseController { if (exception instanceof ThingsboardException) { return (ThingsboardException) exception; } else if (exception instanceof IllegalArgumentException || exception instanceof IncorrectParameterException - || exception instanceof DataValidationException || cause instanceof IncorrectParameterException) { + || exception instanceof DataValidationException || cause instanceof IncorrectParameterException) { return new ThingsboardException(exception.getMessage(), ThingsboardErrorCode.BAD_REQUEST_PARAMS); } else if (exception instanceof MessagingException) { return new ThingsboardException("Unable to send mail", ThingsboardErrorCode.GENERAL); @@ -602,88 +602,39 @@ public abstract class BaseController { } } - protected void checkEntityId(EntityId entityId, Operation operation) throws ThingsboardException { + protected HasId checkEntityId(EntityId entityId, Operation operation) throws ThingsboardException { try { if (entityId == null) { throw new ThingsboardException("Parameter entityId can't be empty!", ThingsboardErrorCode.BAD_REQUEST_PARAMS); } validateId(entityId.getId(), id -> "Incorrect entityId " + id); - switch (entityId.getEntityType()) { - case ALARM: - checkAlarmId(new AlarmId(entityId.getId()), operation); - return; - case DEVICE: - checkDeviceId(new DeviceId(entityId.getId()), operation); - return; - case DEVICE_PROFILE: - checkDeviceProfileId(new DeviceProfileId(entityId.getId()), operation); - return; - case CUSTOMER: - checkCustomerId(new CustomerId(entityId.getId()), operation); - return; - case TENANT: - checkTenantId(TenantId.fromUUID(entityId.getId()), operation); - return; - case TENANT_PROFILE: - checkTenantProfileId(new TenantProfileId(entityId.getId()), operation); - return; - case RULE_CHAIN: - checkRuleChain(new RuleChainId(entityId.getId()), operation); - return; - case RULE_NODE: - checkRuleNode(new RuleNodeId(entityId.getId()), operation); - return; - case ASSET: - checkAssetId(new AssetId(entityId.getId()), operation); - return; - case ASSET_PROFILE: - checkAssetProfileId(new AssetProfileId(entityId.getId()), operation); - return; - case DASHBOARD: - checkDashboardId(new DashboardId(entityId.getId()), operation); - return; - case USER: - checkUserId(new UserId(entityId.getId()), operation); - return; - case ENTITY_VIEW: - checkEntityViewId(new EntityViewId(entityId.getId()), operation); - return; - case EDGE: - checkEdgeId(new EdgeId(entityId.getId()), operation); - return; - case WIDGETS_BUNDLE: - checkWidgetsBundleId(new WidgetsBundleId(entityId.getId()), operation); - return; - case WIDGET_TYPE: - checkWidgetTypeId(new WidgetTypeId(entityId.getId()), operation); - return; - case TB_RESOURCE: - checkResourceInfoId(new TbResourceId(entityId.getId()), operation); - return; - case OTA_PACKAGE: - checkOtaPackageId(new OtaPackageId(entityId.getId()), operation); - return; - case QUEUE: - checkQueueId(new QueueId(entityId.getId()), operation); - return; - case OAUTH2_CLIENT: - checkOauth2ClientId(new OAuth2ClientId(entityId.getId()), operation); - return; - case DOMAIN: - checkDomainId(new DomainId(entityId.getId()), operation); - return; - case MOBILE_APP: - checkMobileAppId(new MobileAppId(entityId.getId()), operation); - return; - case MOBILE_APP_BUNDLE: - checkMobileAppBundleId(new MobileAppBundleId(entityId.getId()), operation); - return; - case CALCULATED_FIELD: - checkCalculatedFieldId(new CalculatedFieldId(entityId.getId()), operation); - return; - default: - checkEntityId(entityId, entitiesService::findEntityByTenantIdAndId, operation); - } + return switch (entityId.getEntityType()) { + case ALARM -> checkAlarmId(new AlarmId(entityId.getId()), operation); + case DEVICE -> checkDeviceId(new DeviceId(entityId.getId()), operation); + case DEVICE_PROFILE -> checkDeviceProfileId(new DeviceProfileId(entityId.getId()), operation); + case CUSTOMER -> checkCustomerId(new CustomerId(entityId.getId()), operation); + case TENANT -> checkTenantId(TenantId.fromUUID(entityId.getId()), operation); + case TENANT_PROFILE -> checkTenantProfileId(new TenantProfileId(entityId.getId()), operation); + case RULE_CHAIN -> checkRuleChain(new RuleChainId(entityId.getId()), operation); + case RULE_NODE -> checkRuleNode(new RuleNodeId(entityId.getId()), operation); + case ASSET -> checkAssetId(new AssetId(entityId.getId()), operation); + case ASSET_PROFILE -> checkAssetProfileId(new AssetProfileId(entityId.getId()), operation); + case DASHBOARD -> checkDashboardId(new DashboardId(entityId.getId()), operation); + case USER -> checkUserId(new UserId(entityId.getId()), operation); + case ENTITY_VIEW -> checkEntityViewId(new EntityViewId(entityId.getId()), operation); + case EDGE -> checkEdgeId(new EdgeId(entityId.getId()), operation); + case WIDGETS_BUNDLE -> checkWidgetsBundleId(new WidgetsBundleId(entityId.getId()), operation); + case WIDGET_TYPE -> checkWidgetTypeId(new WidgetTypeId(entityId.getId()), operation); + case TB_RESOURCE -> checkResourceInfoId(new TbResourceId(entityId.getId()), operation); + case OTA_PACKAGE -> checkOtaPackageId(new OtaPackageId(entityId.getId()), operation); + case QUEUE -> checkQueueId(new QueueId(entityId.getId()), operation); + case OAUTH2_CLIENT -> checkOauth2ClientId(new OAuth2ClientId(entityId.getId()), operation); + case DOMAIN -> checkDomainId(new DomainId(entityId.getId()), operation); + case MOBILE_APP -> checkMobileAppId(new MobileAppId(entityId.getId()), operation); + case MOBILE_APP_BUNDLE -> checkMobileAppBundleId(new MobileAppBundleId(entityId.getId()), operation); + case CALCULATED_FIELD -> checkCalculatedFieldId(new CalculatedFieldId(entityId.getId()), operation); + default -> (HasId) checkEntityId(entityId, entitiesService::findEntityByTenantIdAndId, operation); + }; } catch (Exception e) { throw handleException(e, false); }