1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.opensaml.saml2.metadata.validator;
22
23 import org.opensaml.saml2.metadata.EntityDescriptor;
24 import org.opensaml.xml.util.DatatypeHelper;
25 import org.opensaml.xml.validation.ValidationException;
26 import org.opensaml.xml.validation.Validator;
27
28
29
30
31 public class EntityDescriptorSchemaValidator implements Validator<EntityDescriptor> {
32
33
34 public EntityDescriptorSchemaValidator() {
35
36 }
37
38
39 public void validate(EntityDescriptor entityDescriptor) throws ValidationException {
40 validateEntityID(entityDescriptor);
41 validateDescriptors(entityDescriptor);
42 }
43
44
45
46
47
48
49
50 protected void validateEntityID(EntityDescriptor entityDescriptor) throws ValidationException {
51 if (DatatypeHelper.isEmpty(entityDescriptor.getEntityID())) {
52 throw new ValidationException("Entity ID required.");
53 } else if (entityDescriptor.getEntityID().length() > 1024) {
54 throw new ValidationException("Max Entity ID length is 1024.");
55 }
56 }
57
58
59
60
61
62
63
64 protected void validateDescriptors(EntityDescriptor entityDescriptor) throws ValidationException {
65 if ((entityDescriptor.getRoleDescriptors() == null || entityDescriptor.getRoleDescriptors().size() < 1)
66 && entityDescriptor.getAffiliationDescriptor() == null) {
67 throw new ValidationException("Must have an AffiliationDescriptor or one or more RoleDescriptors.");
68 }
69
70 if (entityDescriptor.getAffiliationDescriptor() != null && entityDescriptor.getRoleDescriptors() != null
71 && entityDescriptor.getRoleDescriptors().size() > 0) {
72 throw new ValidationException("Cannot have an AffiliationDescriptor AND RoleDescriptors");
73 }
74 }
75 }