1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.ws.wssecurity.impl;
18
19 import javax.xml.namespace.QName;
20
21 import org.opensaml.ws.wssecurity.EncryptedHeader;
22 import org.opensaml.xml.XMLObject;
23 import org.opensaml.xml.encryption.EncryptedData;
24 import org.opensaml.xml.io.UnmarshallingException;
25 import org.opensaml.xml.schema.XSBooleanValue;
26 import org.opensaml.xml.util.XMLHelper;
27 import org.w3c.dom.Attr;
28
29
30
31
32 public class EncryptedHeaderUnmarshaller extends AbstractWSSecurityObjectUnmarshaller {
33
34
35 protected void processAttribute(XMLObject xmlObject, Attr attribute) throws UnmarshallingException {
36 EncryptedHeader eh = (EncryptedHeader) xmlObject;
37 QName attrName = XMLHelper.getNodeQName(attribute);
38 if (EncryptedHeader.WSU_ID_ATTR_NAME.equals(attrName)) {
39 eh.setWSUId(attribute.getValue());
40 attribute.getOwnerElement().setIdAttributeNode(attribute, true);
41 } else if (EncryptedHeader.SOAP11_MUST_UNDERSTAND_ATTR_NAME.equals(attrName)) {
42 eh.setSOAP11MustUnderstand(XSBooleanValue.valueOf(attribute.getValue()));
43 } else if (EncryptedHeader.SOAP11_ACTOR_ATTR_NAME.equals(attrName)) {
44 eh.setSOAP11Actor(attribute.getValue());
45 } else if (EncryptedHeader.SOAP12_MUST_UNDERSTAND_ATTR_NAME.equals(attrName)) {
46 eh.setSOAP12MustUnderstand(XSBooleanValue.valueOf(attribute.getValue()));
47 } else if (EncryptedHeader.SOAP12_ROLE_ATTR_NAME.equals(attrName)) {
48 eh.setSOAP12Role(attribute.getValue());
49 } else if (EncryptedHeader.SOAP12_RELAY_ATTR_NAME.equals(attrName)) {
50 eh.setSOAP12Relay(XSBooleanValue.valueOf(attribute.getValue()));
51 } else {
52 super.processAttribute(xmlObject, attribute);
53 }
54 }
55
56
57 protected void processChildElement(XMLObject parentXMLObject, XMLObject childXMLObject)
58 throws UnmarshallingException {
59 EncryptedHeader eh = (EncryptedHeader) parentXMLObject;
60 if (childXMLObject instanceof EncryptedData) {
61 eh.setEncryptedData((EncryptedData) childXMLObject);
62 } else {
63 super.processChildElement(parentXMLObject, childXMLObject);
64 }
65 }
66
67 }