diff --git a/src/main/java/de/ozgcloud/admin/settings/SettingsRepository.java b/src/main/java/de/ozgcloud/admin/settings/SettingsRepository.java index e76feef8321106b42ef64f5536c2e0a1f669d42d..bd0260c1be0634f3e2a75e21d1d3b481f536edc7 100644 --- a/src/main/java/de/ozgcloud/admin/settings/SettingsRepository.java +++ b/src/main/java/de/ozgcloud/admin/settings/SettingsRepository.java @@ -23,8 +23,6 @@ package de.ozgcloud.admin.settings; import java.util.List; -import jakarta.validation.Valid; - import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.validation.annotation.Validated; @@ -34,7 +32,6 @@ import org.springframework.validation.annotation.Validated; interface SettingsRepository extends MongoRepository<Settings, String> { @Override - @Valid Settings save(Settings entity); List<Settings> findByName(String name); diff --git a/src/main/java/de/ozgcloud/admin/settings/SettingsValidator.java b/src/main/java/de/ozgcloud/admin/settings/SettingsValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..61676a05c9b22bc3a94088226b64ae89c0d459b8 --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/settings/SettingsValidator.java @@ -0,0 +1,27 @@ +package de.ozgcloud.admin.settings; + +import jakarta.validation.ConstraintViolationException; +import jakarta.validation.Validation; + +import org.springframework.stereotype.Component; +import org.springframework.validation.Errors; +import org.springframework.validation.Validator; + +@Component +public class SettingsValidator implements Validator { + + @Override + public boolean supports(Class<?> clazz) { + return Settings.class.equals(clazz); + } + + @Override + public void validate(Object target, Errors errors) { + jakarta.validation.Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); + var constraintViolations = validator.validate(target); + if (!constraintViolations.isEmpty()) { + throw new ConstraintViolationException(constraintViolations); + } + } + +} diff --git a/src/main/java/de/ozgcloud/admin/settings/ValidatorEventRegister.java b/src/main/java/de/ozgcloud/admin/settings/ValidatorEventRegister.java new file mode 100644 index 0000000000000000000000000000000000000000..914a721bd9ad01dfad08f726e473625e54e559ba --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/settings/ValidatorEventRegister.java @@ -0,0 +1,25 @@ +package de.ozgcloud.admin.settings; + +import java.util.Map; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.rest.core.event.ValidatingRepositoryEventListener; +import org.springframework.validation.Validator; + +@Configuration +public class ValidatorEventRegister implements InitializingBean { + + @Autowired + ValidatingRepositoryEventListener validatingRepositoryEventListener; + + @Autowired + private Map<String, Validator> validators; + + @Override + public void afterPropertiesSet() throws Exception { + validatingRepositoryEventListener.addValidator("beforeSave", validators.get("settingsValidator")); + validatingRepositoryEventListener.addValidator("beforeCreate", validators.get("settingsValidator")); + } +} \ No newline at end of file