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.text.ParseException;
22 import javax.validation.ConstraintValidatorContext;
23 import org.apache.syncope.common.lib.types.EntityViolationType;
24 import org.apache.syncope.core.persistence.api.entity.Report;
25 import org.quartz.CronExpression;
26
27 public class ReportValidator extends AbstractValidator<ReportCheck, Report> {
28
29 @Override
30 @SuppressWarnings("ResultOfObjectAllocationIgnored")
31 public boolean isValid(final Report report, final ConstraintValidatorContext context) {
32 context.disableDefaultConstraintViolation();
33
34 boolean isValid = true;
35
36 if (isHtml(report.getName())) {
37 context.buildConstraintViolationWithTemplate(
38 getTemplate(EntityViolationType.InvalidName, report.getName())).
39 addPropertyNode("name").addConstraintViolation();
40
41 isValid = false;
42 }
43
44 if (report.getCronExpression() != null) {
45 try {
46 new CronExpression(report.getCronExpression());
47 } catch (ParseException e) {
48 LOG.error("Invalid cron expression '" + report.getCronExpression() + '\'', e);
49 isValid = false;
50
51 context.disableDefaultConstraintViolation();
52 context.buildConstraintViolationWithTemplate(
53 getTemplate(EntityViolationType.InvalidReport, "Invalid cron expression")).
54 addPropertyNode("cronExpression").addConstraintViolation();
55 }
56 }
57
58 return isValid;
59 }
60 }