Browse Source

added validate method to config

pull/13920/head
IrynaMatveieva 10 months ago
parent
commit
6db073ba53
  1. 6
      application/src/main/java/org/thingsboard/server/controller/CalculatedFieldController.java
  2. 2
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/ArgumentsBasedCalculatedFieldConfiguration.java
  3. 3
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/BaseCalculatedFieldConfiguration.java
  4. 2
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/CalculatedFieldConfiguration.java
  5. 13
      dao/src/main/java/org/thingsboard/server/dao/service/validator/CalculatedFieldDataValidator.java

6
application/src/main/java/org/thingsboard/server/controller/CalculatedFieldController.java

@ -213,8 +213,7 @@ public class CalculatedFieldController extends BaseController {
@RequestBody JsonNode inputParams) {
String expression = inputParams.get("expression").asText();
Map<String, TbelCfArg> arguments = Objects.requireNonNullElse(
JacksonUtil.convertValue(inputParams.get("arguments"), new TypeReference<>() {
}),
JacksonUtil.convertValue(inputParams.get("arguments"), new TypeReference<>() {}),
Collections.emptyMap()
);
@ -289,8 +288,7 @@ public class CalculatedFieldController extends BaseController {
return;
}
case CUSTOMER, ASSET, DEVICE -> checkEntityId(referencedEntityId, Operation.READ);
default ->
throw new IllegalArgumentException("Calculated fields do not support '" + entityType + "' for referenced entities.");
default -> throw new IllegalArgumentException("Calculated fields do not support '" + entityType + "' for referenced entities.");
}
}
}

2
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/ArgumentsBasedCalculatedFieldConfiguration.java

@ -14,8 +14,6 @@ public interface ArgumentsBasedCalculatedFieldConfiguration extends CalculatedFi
Output getOutput();
void validate();
@JsonIgnore
default boolean isScheduledUpdateEnabled() {
return false;

3
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/BaseCalculatedFieldConfiguration.java

@ -60,6 +60,9 @@ public abstract class BaseCalculatedFieldConfiguration implements ArgumentsBased
@Override
public void validate() {
if (arguments.containsKey("ctx")) {
throw new IllegalArgumentException("Argument name 'ctx' is reserved and cannot be used.");
}
if (arguments.values().stream().anyMatch(Argument::hasDynamicSource)) {
throw new IllegalArgumentException("Calculated field with type: '" + getType() + "' doesn't support dynamic source configuration!");
}

2
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/CalculatedFieldConfiguration.java

@ -44,6 +44,8 @@ public interface CalculatedFieldConfiguration {
@JsonIgnore
CalculatedFieldType getType();
void validate();
@JsonIgnore
default List<EntityId> getReferencedEntities() {
return Collections.emptyList();

13
dao/src/main/java/org/thingsboard/server/dao/service/validator/CalculatedFieldDataValidator.java

@ -82,15 +82,10 @@ public class CalculatedFieldDataValidator extends DataValidator<CalculatedField>
}
private void validateCalculatedFieldConfiguration(CalculatedField calculatedField) {
if (calculatedField.getConfiguration() instanceof ArgumentsBasedCalculatedFieldConfiguration configuration) {
if (configuration.getArguments().containsKey("ctx")) {
throw new DataValidationException("Argument name 'ctx' is reserved and cannot be used.");
}
try {
configuration.validate();
} catch (IllegalArgumentException e) {
throw new DataValidationException(e.getMessage(), e);
}
try {
calculatedField.getConfiguration().validate();
} catch (IllegalArgumentException e) {
throw new DataValidationException(e.getMessage(), e);
}
}

Loading…
Cancel
Save