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.core.impl;
22
23 import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller;
24 import org.opensaml.saml2.core.AuthnContextClassRef;
25 import org.opensaml.saml2.core.AuthnContextComparisonTypeEnumeration;
26 import org.opensaml.saml2.core.AuthnContextDeclRef;
27 import org.opensaml.saml2.core.RequestedAuthnContext;
28 import org.opensaml.xml.XMLObject;
29 import org.opensaml.xml.io.UnmarshallingException;
30 import org.w3c.dom.Attr;
31
32
33
34
35 public class RequestedAuthnContextUnmarshaller extends AbstractSAMLObjectUnmarshaller {
36
37
38 protected void processAttribute(XMLObject samlObject, Attr attribute) throws UnmarshallingException {
39 RequestedAuthnContext rac = (RequestedAuthnContext) samlObject;
40
41 if (attribute.getLocalName().equals(RequestedAuthnContext.COMPARISON_ATTRIB_NAME)) {
42 if ("exact".equals(attribute.getValue())) {
43 rac.setComparison(AuthnContextComparisonTypeEnumeration.EXACT);
44 } else if ("minimum".equals(attribute.getValue())) {
45 rac.setComparison(AuthnContextComparisonTypeEnumeration.MINIMUM);
46 } else if ("maximum".equals(attribute.getValue())) {
47 rac.setComparison(AuthnContextComparisonTypeEnumeration.MAXIMUM);
48 } else if ("better".equals(attribute.getValue())) {
49 rac.setComparison(AuthnContextComparisonTypeEnumeration.BETTER);
50 } else {
51 throw new UnmarshallingException("Saw an invalid value for Comparison attribute: "
52 + attribute.getValue());
53 }
54 } else {
55 super.processAttribute(samlObject, attribute);
56 }
57 }
58
59
60 protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject)
61 throws UnmarshallingException {
62 RequestedAuthnContext rac = (RequestedAuthnContext) parentSAMLObject;
63 if (childSAMLObject instanceof AuthnContextClassRef) {
64 rac.getAuthnContextClassRefs().add((AuthnContextClassRef) childSAMLObject);
65 } else if (childSAMLObject instanceof AuthnContextDeclRef) {
66 rac.getAuthnContextDeclRefs().add((AuthnContextDeclRef) childSAMLObject);
67 } else {
68 super.processChildElement(parentSAMLObject, childSAMLObject);
69 }
70 }
71 }