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.joda.time.DateTime;
24 import org.joda.time.chrono.ISOChronology;
25 import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller;
26 import org.opensaml.saml2.core.Condition;
27 import org.opensaml.saml2.core.Conditions;
28 import org.opensaml.xml.XMLObject;
29 import org.opensaml.xml.io.UnmarshallingException;
30 import org.opensaml.xml.util.DatatypeHelper;
31 import org.w3c.dom.Attr;
32
33
34
35
36 public class ConditionsUnmarshaller extends AbstractSAMLObjectUnmarshaller {
37
38
39 protected void processChildElement(XMLObject parentObject, XMLObject childObject) throws UnmarshallingException {
40 Conditions conditions = (Conditions) parentObject;
41
42 if (childObject instanceof Condition) {
43 conditions.getConditions().add((Condition) childObject);
44 } else {
45 super.processChildElement(parentObject, childObject);
46 }
47 }
48
49
50 protected void processAttribute(XMLObject samlObject, Attr attribute) throws UnmarshallingException {
51 Conditions conditions = (Conditions) samlObject;
52
53 if (attribute.getLocalName().equals(Conditions.NOT_BEFORE_ATTRIB_NAME)
54 && !DatatypeHelper.isEmpty(attribute.getValue())) {
55 conditions.setNotBefore(new DateTime(attribute.getValue(), ISOChronology.getInstanceUTC()));
56 } else if (attribute.getLocalName().equals(Conditions.NOT_ON_OR_AFTER_ATTRIB_NAME)
57 && !DatatypeHelper.isEmpty(attribute.getValue())) {
58 conditions.setNotOnOrAfter(new DateTime(attribute.getValue(), ISOChronology.getInstanceUTC()));
59 } else {
60 super.processAttribute(samlObject, attribute);
61 }
62 }
63 }