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.core.persistence.api.entity.Delegation;
24
25 public class DelegationValidator extends AbstractValidator<DelegationCheck, Delegation> {
26
27 @Override
28 public boolean isValid(final Delegation delegation, final ConstraintValidatorContext context) {
29 context.disableDefaultConstraintViolation();
30
31 boolean isValid = true;
32
33 if (delegation.getDelegating().equals(delegation.getDelegated())) {
34 context.buildConstraintViolationWithTemplate(
35 getTemplate(EntityViolationType.Standard, "delegating must be different from delegated")).
36 addPropertyNode("delegating").addConstraintViolation();
37
38 isValid = false;
39 }
40
41 if (isValid && delegation.getEnd() != null && !delegation.getEnd().isAfter(delegation.getStart())) {
42 context.buildConstraintViolationWithTemplate(
43 getTemplate(EntityViolationType.Standard, "when end is provided it must to be after start")).
44 addPropertyNode("end").addConstraintViolation();
45
46 isValid = false;
47 }
48
49 if (isValid && !delegation.getDelegating().getRoles().containsAll(delegation.getRoles())) {
50 context.buildConstraintViolationWithTemplate(
51 getTemplate(EntityViolationType.Standard, "only Roles assigned to delegating User can be granted")).
52 addPropertyNode("roles").addConstraintViolation();
53
54 isValid = false;
55 }
56
57 return isValid;
58 }
59 }