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.ConnInstance;
24 import org.apache.syncope.core.provisioning.api.utils.ConnPoolConfUtils;
25 import org.apache.syncope.core.provisioning.api.utils.URIUtils;
26
27 public class ConnInstanceValidator extends AbstractValidator<ConnInstanceCheck, ConnInstance> {
28
29 @Override
30 public boolean isValid(final ConnInstance connInstance, final ConstraintValidatorContext context) {
31 context.disableDefaultConstraintViolation();
32
33 boolean isValid = true;
34
35 if (isHtml(connInstance.getDisplayName())) {
36 context.buildConstraintViolationWithTemplate(
37 getTemplate(EntityViolationType.InvalidName, connInstance.getDisplayName())).
38 addPropertyNode("displayName").addConstraintViolation();
39
40 isValid = false;
41 }
42
43 try {
44 URIUtils.buildForConnId(connInstance.getLocation());
45 } catch (Exception e) {
46 LOG.error("While validating {}", connInstance.getLocation(), e);
47
48 context.disableDefaultConstraintViolation();
49 context.buildConstraintViolationWithTemplate(
50 getTemplate(EntityViolationType.InvalidConnInstanceLocation, e.getMessage())).
51 addPropertyNode("location").addConstraintViolation();
52
53 isValid = false;
54 }
55
56 if (isValid && connInstance.getPoolConf() != null) {
57 try {
58 ConnPoolConfUtils.getObjectPoolConfiguration(connInstance.getPoolConf()).validate();
59 } catch (Exception e) {
60 LOG.error("Invalid pool configuration", e);
61
62 context.disableDefaultConstraintViolation();
63 context.buildConstraintViolationWithTemplate(
64 getTemplate(EntityViolationType.InvalidConnPoolConf, e.getMessage())).
65 addPropertyNode("poolConf").addConstraintViolation();
66
67 isValid = false;
68 }
69 }
70
71 return isValid;
72 }
73 }