1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.validation.entity;
20
21 import java.util.concurrent.atomic.AtomicReference;
22 import javax.validation.ConstraintValidatorContext;
23 import org.apache.syncope.core.persistence.api.entity.JSONAttributable;
24 import org.apache.syncope.core.persistence.api.entity.PlainAttr;
25
26 public class JPAJSONAttributableValidator extends AbstractValidator<JPAJSONAttributableCheck, JSONAttributable<?>> {
27
28 @Override
29 public boolean isValid(final JSONAttributable<?> entity, final ConstraintValidatorContext context) {
30 context.disableDefaultConstraintViolation();
31
32 JPAPlainAttrValidator attrValidator = new JPAPlainAttrValidator();
33 PlainAttrValueValidator attrValueValidator = new PlainAttrValueValidator();
34
35 AtomicReference<Boolean> isValid = new AtomicReference<>(Boolean.TRUE);
36 entity.getPlainAttrList().forEach(attr -> {
37 PlainAttr<?> plainAttr = (PlainAttr<?>) attr;
38 isValid.getAndSet(isValid.get() && attrValidator.isValid(plainAttr, context));
39 plainAttr.getValues().forEach(
40 value -> isValid.getAndSet(isValid.get() && attrValueValidator.isValid(value, context)));
41 });
42
43 return isValid.get();
44 }
45 }