super(targetNamespaceURI, targetLocalName);
}
/** {@inheritDoc} */
protected void marshallAttributes(XMLObject samlElement, Element domElement) throws MarshallingException {
RoleDescriptor roleDescriptor = (RoleDescriptor) samlElement;
// Set the ID attribute
if (roleDescriptor.getID() != null) {
log.trace("Writing ID attribute to RoleDescriptor DOM element");
domElement.setAttributeNS(null, RoleDescriptor.ID_ATTRIB_NAME, roleDescriptor.getID());
domElement.setIdAttributeNS(null, RoleDescriptor.ID_ATTRIB_NAME, true);
}
// Set the validUntil attribute
if (roleDescriptor.getValidUntil() != null) {
log.trace("Writting validUntil attribute to RoleDescriptor DOM element");
String validUntilStr = Configuration.getSAMLDateFormatter().print(roleDescriptor.getValidUntil());
domElement.setAttributeNS(null, TimeBoundSAMLObject.VALID_UNTIL_ATTRIB_NAME, validUntilStr);
}
// Set the cacheDuration attribute
if (roleDescriptor.getCacheDuration() != null) {
log.trace("Writting cacheDuration attribute to EntitiesDescriptor DOM element");
String cacheDuration = XMLHelper.longToDuration(roleDescriptor.getCacheDuration());
domElement.setAttributeNS(null, CacheableSAMLObject.CACHE_DURATION_ATTRIB_NAME, cacheDuration);
}
// Set the protocolSupportEnumeration attribute
List<String> supportedProtocols = roleDescriptor.getSupportedProtocols();
if (supportedProtocols != null && supportedProtocols.size() > 0) {
log.trace("Writting protocolSupportEnumberation attribute to RoleDescriptor DOM element");
StringBuilder builder = new StringBuilder();
for (String protocol : supportedProtocols) {
builder.append(protocol);
builder.append(" ");
}
domElement.setAttributeNS(null, RoleDescriptor.PROTOCOL_ENUMERATION_ATTRIB_NAME, builder.toString().trim());
}
// Set errorURL attribute
if (roleDescriptor.getErrorURL() != null) {
log.trace("Writting errorURL attribute to RoleDescriptor DOM element");
domElement.setAttributeNS(null, RoleDescriptor.ERROR_URL_ATTRIB_NAME, roleDescriptor.getErrorURL());
}
Attr attribute;
for (Entry<QName, String> entry : roleDescriptor.getUnknownAttributes().entrySet()) {
attribute = XMLHelper.constructAttribute(domElement.getOwnerDocument(), entry.getKey());
attribute.setValue(entry.getValue());
domElement.setAttributeNodeNS(attribute);
if (Configuration.isIDAttribute(entry.getKey())
|| roleDescriptor.getUnknownAttributes().isIDAttribute(entry.getKey())) {
attribute.getOwnerElement().setIdAttributeNode(attribute, true);
}
}
}