Search in sources :

Example 1 with JacksonXmlSerializer

use of org.apereo.cas.util.serialization.JacksonXmlSerializer in project cas by apereo.

the class AbstractSamlObjectBuilder method newAttributeValue.

/**
 * New attribute value.
 *
 * @param value       the value
 * @param valueType   the value type
 * @param elementName the element name
 * @return the xS string
 */
protected XMLObject newAttributeValue(final Object value, final String valueType, final QName elementName) {
    LOGGER.trace("Creating new attribute value XMLObject for value: [{}], value type: [{}], QName: [{}]", value, valueType, elementName);
    if (value instanceof NameIDType) {
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, value);
        ((NameIDType) value).detach();
        return (NameIDType) value;
    }
    if (XSString.class.getSimpleName().equalsIgnoreCase(valueType)) {
        val builder = new XSStringBuilder();
        val attrValueObj = builder.buildObject(elementName, XSString.TYPE_NAME);
        attrValueObj.setValue(value.toString());
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
        return attrValueObj;
    }
    if (XSURI.class.getSimpleName().equalsIgnoreCase(valueType)) {
        val builder = new XSURIBuilder();
        val attrValueObj = builder.buildObject(elementName, XSURI.TYPE_NAME);
        attrValueObj.setURI(value.toString());
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
        return attrValueObj;
    }
    if (XSBoolean.class.getSimpleName().equalsIgnoreCase(valueType)) {
        val builder = new XSBooleanBuilder();
        val attrValueObj = builder.buildObject(elementName, XSBoolean.TYPE_NAME);
        attrValueObj.setValue(XSBooleanValue.valueOf(value.toString().toLowerCase()));
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
        return attrValueObj;
    }
    if (XSInteger.class.getSimpleName().equalsIgnoreCase(valueType)) {
        val builder = new XSIntegerBuilder();
        val attrValueObj = builder.buildObject(elementName, XSInteger.TYPE_NAME);
        attrValueObj.setValue(Integer.valueOf(value.toString()));
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
        return attrValueObj;
    }
    if (XSDateTime.class.getSimpleName().equalsIgnoreCase(valueType)) {
        val builder = new XSDateTimeBuilder();
        val attrValueObj = builder.buildObject(elementName, XSDateTime.TYPE_NAME);
        attrValueObj.setValue(ZonedDateTime.parse(value.toString()).toInstant());
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
        return attrValueObj;
    }
    if (XSBase64Binary.class.getSimpleName().equalsIgnoreCase(valueType)) {
        val builder = new XSBase64BinaryBuilder();
        val attrValueObj = builder.buildObject(elementName, XSBase64Binary.TYPE_NAME);
        attrValueObj.setValue(value.toString());
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
        return attrValueObj;
    }
    if (XSObject.class.getSimpleName().equalsIgnoreCase(valueType)) {
        val mapper = new JacksonXmlSerializer();
        val builder = new XSAnyBuilder();
        val attrValueObj = builder.buildObject(elementName);
        attrValueObj.setTextContent(mapper.writeValueAsString(value));
        LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
        return attrValueObj;
    }
    val builder = new XSAnyBuilder();
    val attrValueObj = builder.buildObject(elementName);
    attrValueObj.setTextContent(value.toString());
    LOGGER.trace(LOG_MESSAGE_ATTR_CREATED, attrValueObj);
    return attrValueObj;
}
Also used : lombok.val(lombok.val) XSBase64BinaryBuilder(org.opensaml.core.xml.schema.impl.XSBase64BinaryBuilder) XSBooleanBuilder(org.opensaml.core.xml.schema.impl.XSBooleanBuilder) XSIntegerBuilder(org.opensaml.core.xml.schema.impl.XSIntegerBuilder) XSBase64Binary(org.opensaml.core.xml.schema.XSBase64Binary) XSAnyBuilder(org.opensaml.core.xml.schema.impl.XSAnyBuilder) XSObject(org.apache.xerces.xs.XSObject) XSString(org.opensaml.core.xml.schema.XSString) XSStringBuilder(org.opensaml.core.xml.schema.impl.XSStringBuilder) XSURI(org.opensaml.core.xml.schema.XSURI) XSDateTime(org.opensaml.core.xml.schema.XSDateTime) XSDateTimeBuilder(org.opensaml.core.xml.schema.impl.XSDateTimeBuilder) XSBoolean(org.opensaml.core.xml.schema.XSBoolean) XSInteger(org.opensaml.core.xml.schema.XSInteger) JacksonXmlSerializer(org.apereo.cas.util.serialization.JacksonXmlSerializer) NameIDType(org.opensaml.saml.saml2.core.NameIDType) XSURIBuilder(org.opensaml.core.xml.schema.impl.XSURIBuilder)

Aggregations

lombok.val (lombok.val)1 XSObject (org.apache.xerces.xs.XSObject)1 JacksonXmlSerializer (org.apereo.cas.util.serialization.JacksonXmlSerializer)1 XSBase64Binary (org.opensaml.core.xml.schema.XSBase64Binary)1 XSBoolean (org.opensaml.core.xml.schema.XSBoolean)1 XSDateTime (org.opensaml.core.xml.schema.XSDateTime)1 XSInteger (org.opensaml.core.xml.schema.XSInteger)1 XSString (org.opensaml.core.xml.schema.XSString)1 XSURI (org.opensaml.core.xml.schema.XSURI)1 XSAnyBuilder (org.opensaml.core.xml.schema.impl.XSAnyBuilder)1 XSBase64BinaryBuilder (org.opensaml.core.xml.schema.impl.XSBase64BinaryBuilder)1 XSBooleanBuilder (org.opensaml.core.xml.schema.impl.XSBooleanBuilder)1 XSDateTimeBuilder (org.opensaml.core.xml.schema.impl.XSDateTimeBuilder)1 XSIntegerBuilder (org.opensaml.core.xml.schema.impl.XSIntegerBuilder)1 XSStringBuilder (org.opensaml.core.xml.schema.impl.XSStringBuilder)1 XSURIBuilder (org.opensaml.core.xml.schema.impl.XSURIBuilder)1 NameIDType (org.opensaml.saml.saml2.core.NameIDType)1