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.Action;
25 import org.opensaml.saml2.core.AuthzDecisionStatement;
26 import org.opensaml.saml2.core.DecisionTypeEnumeration;
27 import org.opensaml.saml2.core.Evidence;
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 AuthzDecisionStatementUnmarshaller extends AbstractSAMLObjectUnmarshaller {
36
37
38 protected void processChildElement(XMLObject parentObject, XMLObject childObject) throws UnmarshallingException {
39 AuthzDecisionStatement authzDS = (AuthzDecisionStatement) parentObject;
40
41 if (childObject instanceof Action) {
42 authzDS.getActions().add((Action) childObject);
43 } else if (childObject instanceof Evidence) {
44 authzDS.setEvidence((Evidence) childObject);
45 } else {
46 super.processChildElement(parentObject, childObject);
47 }
48 }
49
50
51 protected void processAttribute(XMLObject samlObject, Attr attribute) throws UnmarshallingException {
52 AuthzDecisionStatement authzDS = (AuthzDecisionStatement) samlObject;
53
54 if (attribute.getLocalName().equals(AuthzDecisionStatement.RESOURCE_ATTRIB_NAME)) {
55 authzDS.setResource(attribute.getValue());
56 } else if (attribute.getLocalName().equals(AuthzDecisionStatement.DECISION_ATTRIB_NAME)) {
57 String value = attribute.getValue();
58 if (value.equals(DecisionTypeEnumeration.PERMIT.toString())) {
59 authzDS.setDecision(DecisionTypeEnumeration.PERMIT);
60 } else if (value.equals(DecisionTypeEnumeration.DENY.toString())) {
61 authzDS.setDecision(DecisionTypeEnumeration.DENY);
62 } else if (value.equals(DecisionTypeEnumeration.INDETERMINATE.toString())) {
63 authzDS.setDecision(DecisionTypeEnumeration.INDETERMINATE);
64 } else {
65 throw new UnmarshallingException("Unknown value for DecisionType '" + value + "'");
66 }
67 } else {
68 super.processAttribute(samlObject, attribute);
69 }
70 }
71 }