Browse Source

Add type guard for alarm rule updates and defensive cast in fromCalculatedField

pull/15326/head
Viacheslav Klimov 2 months ago
parent
commit
d4b8fa0312
Failed to extract signature
  1. 3
      application/src/main/java/org/thingsboard/server/controller/AlarmRuleController.java
  2. 5
      common/data/src/main/java/org/thingsboard/server/common/data/cf/AlarmRuleDefinition.java

3
application/src/main/java/org/thingsboard/server/controller/AlarmRuleController.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());

5
common/data/src/main/java/org/thingsboard/server/common/data/cf/AlarmRuleDefinition.java

@ -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;

Loading…
Cancel
Save