Browse Source
Add type guard for alarm rule updates and defensive cast in fromCalculatedField
pull/15326/head
Viacheslav Klimov
2 months ago
Failed to extract signature
2 changed files with
7 additions and
1 deletions
-
application/src/main/java/org/thingsboard/server/controller/AlarmRuleController.java
-
common/data/src/main/java/org/thingsboard/server/common/data/cf/AlarmRuleDefinition.java
|
|
|
@ -110,6 +110,9 @@ public class AlarmRuleController extends BaseController { |
|
|
|
@RequestBody AlarmRuleDefinition alarmRuleDefinition) throws Exception { |
|
|
|
alarmRuleDefinition.setTenantId(getTenantId()); |
|
|
|
checkEntityId(alarmRuleDefinition.getEntityId(), Operation.WRITE_CALCULATED_FIELD); |
|
|
|
if (alarmRuleDefinition.getId() != null) { |
|
|
|
checkAlarmRule(alarmRuleDefinition.getId()); |
|
|
|
} |
|
|
|
CalculatedField calculatedField = alarmRuleDefinition.toCalculatedField(); |
|
|
|
checkReferencedEntities(calculatedField.getConfiguration()); |
|
|
|
CalculatedField saved = tbCalculatedFieldService.save(calculatedField, getCurrentUser()); |
|
|
|
|
|
|
|
@ -138,7 +138,10 @@ public class AlarmRuleDefinition extends BaseData<CalculatedFieldId> implements |
|
|
|
def.setDebugMode(cf.isDebugMode()); |
|
|
|
def.setDebugSettings(cf.getDebugSettings()); |
|
|
|
def.setConfigurationVersion(cf.getConfigurationVersion()); |
|
|
|
def.setConfiguration((AlarmCalculatedFieldConfiguration) cf.getConfiguration()); |
|
|
|
if (!(cf.getConfiguration() instanceof AlarmCalculatedFieldConfiguration config)) { |
|
|
|
throw new IllegalArgumentException("Expected ALARM calculated field, got " + cf.getType()); |
|
|
|
} |
|
|
|
def.setConfiguration(config); |
|
|
|
def.setVersion(cf.getVersion()); |
|
|
|
def.setAdditionalInfo(cf.getAdditionalInfo()); |
|
|
|
return def; |
|
|
|
|