1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.opensaml.saml2.core.impl;
18
19 import org.joda.time.DateTime;
20 import org.joda.time.chrono.ISOChronology;
21 import org.opensaml.saml2.core.BaseID;
22 import org.opensaml.saml2.core.EncryptedID;
23 import org.opensaml.saml2.core.LogoutRequest;
24 import org.opensaml.saml2.core.NameID;
25 import org.opensaml.saml2.core.SessionIndex;
26 import org.opensaml.xml.XMLObject;
27 import org.opensaml.xml.io.UnmarshallingException;
28 import org.opensaml.xml.util.DatatypeHelper;
29 import org.w3c.dom.Attr;
30
31
32
33
34 public class LogoutRequestUnmarshaller extends RequestAbstractTypeUnmarshaller {
35
36
37 protected void processAttribute(XMLObject samlObject, Attr attribute) throws UnmarshallingException {
38 LogoutRequest req = (LogoutRequest) samlObject;
39
40 if (attribute.getLocalName().equals(LogoutRequest.REASON_ATTRIB_NAME)) {
41 req.setReason(attribute.getValue());
42 } else if (attribute.getLocalName().equals(LogoutRequest.NOT_ON_OR_AFTER_ATTRIB_NAME)
43 && !DatatypeHelper.isEmpty(attribute.getValue())) {
44 req.setNotOnOrAfter(new DateTime(attribute.getValue(), ISOChronology.getInstanceUTC()));
45 } else {
46 super.processAttribute(samlObject, attribute);
47 }
48 }
49
50
51 protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject)
52 throws UnmarshallingException {
53 LogoutRequest req = (LogoutRequest) parentSAMLObject;
54
55 if (childSAMLObject instanceof BaseID) {
56 req.setBaseID((BaseID) childSAMLObject);
57 } else if (childSAMLObject instanceof NameID) {
58 req.setNameID((NameID) childSAMLObject);
59 } else if (childSAMLObject instanceof EncryptedID) {
60 req.setEncryptedID((EncryptedID) childSAMLObject);
61 } else if (childSAMLObject instanceof SessionIndex) {
62 req.getSessionIndexes().add((SessionIndex) childSAMLObject);
63 } else {
64 super.processChildElement(parentSAMLObject, childSAMLObject);
65 }
66 }
67 }