View Javadoc

1   /*
2    * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  /**
18   * 
19   */
20  package org.opensaml.saml2.core.validator;
21  
22  import org.opensaml.common.SAMLVersion;
23  import org.opensaml.saml2.core.StatusResponseType;
24  import org.opensaml.xml.util.DatatypeHelper;
25  import org.opensaml.xml.validation.ValidationException;
26  import org.opensaml.xml.validation.Validator;
27  
28  /**
29   * Checks {@link org.opensaml.saml2.core.StatusResponseType} for Schema compliance.
30   */
31  public abstract class StatusResponseTypeSchemaValidator<StatusResponse extends StatusResponseType> implements Validator<StatusResponse> {
32  
33      /**
34       * Constructor
35       *
36       */
37      public StatusResponseTypeSchemaValidator() {
38      }
39  
40      /** {@inheritDoc} */
41      public void validate(StatusResponse response) throws ValidationException {
42          validateStatus(response);
43          validateID(response);
44          validateVersion(response);
45          validateIssueInstant(response);
46  
47      }
48  
49      /**
50       * Validates the Status child element. 
51       * 
52       * @param response
53       * @throws ValidationException
54       */
55      protected void validateStatus(StatusResponse response) throws ValidationException {
56          if (response.getStatus() == null)
57              throw new ValidationException("Status is required");
58          
59      }
60      
61      /**
62       * Validates the ID attribute
63       * 
64       * @param response 
65       * @throws ValidationException
66       */
67      protected void validateID(StatusResponse response) throws ValidationException {
68          if (DatatypeHelper.isEmpty(response.getID()))
69              throw new ValidationException("ID attribute must not be empty");
70      }
71  
72      /**
73       * Validates the Version attribute
74       * 
75       * @param response
76       * @throws ValidationException
77       */
78      protected void validateVersion(StatusResponse response) throws ValidationException {
79          if (response.getVersion() == null)
80              throw new ValidationException("Version attribute must not be null");
81          if (response.getVersion().toString() != SAMLVersion.VERSION_20.toString())
82              throw new ValidationException("Wrong SAML Version");
83      }
84      
85      /**
86       * Validates the IsssueInstant attribute
87       * 
88       * @param response
89       * @throws ValidationException
90       */
91      protected void validateIssueInstant(StatusResponse response) throws ValidationException {
92          if (response.getIssueInstant() == null)
93              throw new ValidationException ("IssueInstant attribute must not be null");
94      }
95  
96  }