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.syncope.common.lib.types.EntityViolationType;
23 import org.apache.syncope.common.lib.types.SRARouteType;
24 import org.apache.syncope.core.persistence.api.entity.SRARoute;
25
26 public class SRARouteValidator extends AbstractValidator<SRARouteCheck, SRARoute> {
27
28 @Override
29 public boolean isValid(final SRARoute route, final ConstraintValidatorContext context) {
30 context.disableDefaultConstraintViolation();
31
32 boolean isValid = true;
33
34 if (isHtml(route.getName())) {
35 context.buildConstraintViolationWithTemplate(
36 getTemplate(EntityViolationType.InvalidName, "Invalid name")).
37 addPropertyNode("name").addConstraintViolation();
38
39 isValid = false;
40 }
41
42 if (route.getType() == SRARouteType.PUBLIC && route.isLogout()) {
43 context.buildConstraintViolationWithTemplate(
44 getTemplate(EntityViolationType.InvalidMapping, "Logout route cannot be public")).
45 addPropertyNode("routeType").addConstraintViolation();
46
47 isValid = false;
48 }
49
50 if (route.getPostLogout() != null && !route.isLogout()) {
51 context.buildConstraintViolationWithTemplate(
52 getTemplate(EntityViolationType.InvalidMapping, "Can set postLogout only for logout routes")).
53 addPropertyNode("postLogout").addConstraintViolation();
54
55 isValid = false;
56 }
57
58 if (route.getPredicates().size() > 1
59 && route.getPredicates().stream().allMatch(predicate -> predicate.getCond() != null)) {
60
61 context.buildConstraintViolationWithTemplate(
62 getTemplate(EntityViolationType.InvalidValueList,
63 "Cond must be set when predicates are more than one")).
64 addPropertyNode("predicates").addConstraintViolation();
65
66 isValid = false;
67 }
68
69 return isValid;
70 }
71 }