1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.opensaml.saml2.core.validator;
21
22 import org.opensaml.saml2.core.NameIDMappingRequest;
23 import org.opensaml.xml.validation.ValidationException;
24
25
26
27
28 public class NameIDMappingRequestSchemaValidator extends RequestAbstractTypeSchemaValidator<NameIDMappingRequest> {
29
30
31
32
33
34 public NameIDMappingRequestSchemaValidator() {
35 super();
36 }
37
38
39 public void validate(NameIDMappingRequest request) throws ValidationException {
40 super.validate(request);
41 validateIdentifiers(request);
42 validateNameIDPolicy(request);
43 }
44
45
46
47
48
49
50
51 protected void validateIdentifiers(NameIDMappingRequest request) throws ValidationException {
52 int idCount = 0;
53
54 if (request.getBaseID() != null) {
55 idCount++;
56 }
57 if (request.getNameID() != null) {
58 idCount++;
59 }
60 if (request.getEncryptedID() != null) {
61 idCount++;
62 }
63
64 if (idCount != 1) {
65 throw new ValidationException("NameIDMappingRequest must contain exactly one of: BaseID, NameID, EncryptedID");
66 }
67 }
68
69
70
71
72
73
74
75 private void validateNameIDPolicy(NameIDMappingRequest request) throws ValidationException {
76 if(request.getNameIDPolicy() == null) {
77 throw new ValidationException("NameIDPolicy is required");
78 }
79 }
80 }