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 javax.validation.ConstraintValidatorContext;
22 import org.apache.commons.lang3.StringUtils;
23 import org.apache.syncope.common.lib.types.AttrSchemaType;
24 import org.apache.syncope.common.lib.types.EntityViolationType;
25 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
26
27 public class PlainSchemaValidator extends AbstractValidator<PlainSchemaCheck, PlainSchema> {
28
29 @Override
30 public boolean isValid(final PlainSchema schema, final ConstraintValidatorContext context) {
31 boolean isValid = schema.getType() != AttrSchemaType.Enum
32 || StringUtils.isNotBlank(schema.getEnumerationValues());
33 if (!isValid) {
34 context.disableDefaultConstraintViolation();
35 context.buildConstraintViolationWithTemplate(
36 getTemplate(EntityViolationType.InvalidSchemaEnum, "Enumeration values missing")).
37 addPropertyNode("enumerationValues").addConstraintViolation();
38 } else {
39 isValid = schema.getType() != AttrSchemaType.Encrypted
40 || (schema.getSecretKey() != null && schema.getCipherAlgorithm() != null);
41 if (!isValid) {
42 context.disableDefaultConstraintViolation();
43 context.buildConstraintViolationWithTemplate(
44 getTemplate(EntityViolationType.InvalidSchemaEncrypted,
45 "SecretKey or CipherAlgorithm missing")).
46 addPropertyNode("secretKey").addPropertyNode("cipherAlgorithm").addConstraintViolation();
47 } else {
48 isValid = !schema.isMultivalue() || !schema.isUniqueConstraint();
49 if (!isValid) {
50 context.disableDefaultConstraintViolation();
51 context.buildConstraintViolationWithTemplate(
52 getTemplate(EntityViolationType.InvalidSchemaMultivalueUnique,
53 "Cannot contemporary be multivalue and have unique constraint")).
54 addPropertyNode("multiValue").addConstraintViolation();
55 }
56 }
57 }
58
59 return isValid;
60 }
61 }