added validate method to config

This commit is contained in:
IrynaMatveieva 2025-08-26 15:13:17 +03:00
parent 90d34b5bd0
commit 6db073ba53
5 changed files with 11 additions and 15 deletions

View File

@ -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.");
}
}
}

View File

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

View File

@ -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!");
}

View File

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

View File

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