Search in sources :

Example 1 with NamespacePrefixMapperWrapper

use of org.eclipse.persistence.internal.oxm.record.namespaces.NamespacePrefixMapperWrapper in project eclipselink by eclipse-ee4j.

the class JAXBMarshaller method setProperty.

/**
 * Set a property on the JAXBMarshaller. Attempting to set any unsupported
 * property will result in a jakarta.xml.bind.PropertyException
 * @see org.eclipse.persistence.jaxb.MarshallerProperties
 */
@Override
public void setProperty(String key, Object value) throws PropertyException {
    try {
        if (key == null) {
            throw new IllegalArgumentException();
        } else {
            SessionLog logger = AbstractSessionLog.getLog();
            if (logger.shouldLog(SessionLog.FINE, SessionLog.MOXY)) {
                logger.log(SessionLog.FINE, SessionLog.MOXY, "moxy_set_marshaller_property", new Object[] { key, value });
            }
            if (MOXySystemProperties.moxyLogPayload != null && xmlMarshaller.isLogPayload() == null) {
                xmlMarshaller.setLogPayload(MOXySystemProperties.moxyLogPayload);
            }
            if (Constants.JAXB_FRAGMENT.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                Boolean fragment = (Boolean) value;
                xmlMarshaller.setFragment(fragment);
            } else if (JAXB_FORMATTED_OUTPUT.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                Boolean formattedOutput = (Boolean) value;
                xmlMarshaller.setFormattedOutput(formattedOutput);
            } else if (JAXB_ENCODING.equals(key)) {
                xmlMarshaller.setEncoding((String) value);
            } else if (JAXB_SCHEMA_LOCATION.equals(key)) {
                xmlMarshaller.setSchemaLocation((String) value);
            } else if (JAXB_NO_NAMESPACE_SCHEMA_LOCATION.equals(key)) {
                xmlMarshaller.setNoNamespaceSchemaLocation((String) value);
            } else if (MarshallerProperties.NAMESPACE_PREFIX_MAPPER.equals(key)) {
                if (value == null) {
                    xmlMarshaller.setNamespacePrefixMapper(null);
                } else if (value instanceof Map) {
                    NamespacePrefixMapper namespacePrefixMapper = new MapNamespacePrefixMapper((Map) value);
                    xmlMarshaller.setNamespacePrefixMapper(namespacePrefixMapper);
                } else {
                    xmlMarshaller.setNamespacePrefixMapper((NamespacePrefixMapper) value);
                }
            } else if (SUN_NAMESPACE_PREFIX_MAPPER.equals(key) || SUN_JSE_NAMESPACE_PREFIX_MAPPER.equals(key)) {
                if (value == null) {
                    xmlMarshaller.setNamespacePrefixMapper(null);
                } else {
                    xmlMarshaller.setNamespacePrefixMapper(new NamespacePrefixMapperWrapper(value));
                }
            } else if (MarshallerProperties.INDENT_STRING.equals(key) || SUN_INDENT_STRING.equals(key) || SUN_JSE_INDENT_STRING.equals(key)) {
                xmlMarshaller.setIndentString((String) value);
            } else if (MarshallerProperties.JSON_MARSHAL_EMPTY_COLLECTIONS.equals(key)) {
                xmlMarshaller.setMarshalEmptyCollections((Boolean) value);
            } else if (MarshallerProperties.JSON_REDUCE_ANY_ARRAYS.equals(key)) {
                xmlMarshaller.setReduceAnyArrays((Boolean) value);
            } else if (MarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME.equals(key)) {
                xmlMarshaller.setWrapperAsCollectionName((Boolean) value);
            } else if (MarshallerProperties.JSON_USE_XSD_TYPES_WITH_PREFIX.equals(key)) {
                xmlMarshaller.getJsonTypeConfiguration().setUseXsdTypesWithPrefix((Boolean) value);
            } else if (MarshallerProperties.JSON_TYPE_COMPATIBILITY.equals(key)) {
                xmlMarshaller.getJsonTypeConfiguration().setJsonTypeCompatibility((Boolean) value);
            } else if (MarshallerProperties.JSON_TYPE_ATTRIBUTE_NAME.equals(key)) {
                xmlMarshaller.getJsonTypeConfiguration().setJsonTypeAttributeName((String) value);
            } else if (MarshallerProperties.JSON_DISABLE_NESTED_ARRAY_NAME.equals(key)) {
                xmlMarshaller.getJsonTypeConfiguration().setJsonDisableNestedArrayName((Boolean) value);
            } else if (MarshallerProperties.CHARACTER_ESCAPE_HANDLER.equals(key)) {
                xmlMarshaller.setCharacterEscapeHandler((CharacterEscapeHandler) value);
            } else if (MarshallerProperties.MOXY_LOG_PAYLOAD.equals(key)) {
                xmlMarshaller.setLogPayload(((Boolean) value));
            } else if (MarshallerProperties.MOXY_LOGGING_LEVEL.equals(key)) {
                if (value instanceof String) {
                    AbstractSessionLog.getLog().setLevel(LogLevel.toValue((String) value).getId(), SessionLog.MOXY);
                } else {
                    AbstractSessionLog.getLog().setLevel(((LogLevel) value).getId(), SessionLog.MOXY);
                }
            } else if (SUN_CHARACTER_ESCAPE_HANDLER.equals(key) || SUN_JSE_CHARACTER_ESCAPE_HANDLER.equals(key) || SUN_CHARACTER_ESCAPE_HANDLER_MARSHALLER.equals(key) || SUN_JSE_CHARACTER_ESCAPE_HANDLER_MARSHALLER.equals(key)) {
                if (value == null) {
                    xmlMarshaller.setCharacterEscapeHandler(null);
                } else {
                    xmlMarshaller.setCharacterEscapeHandler(new CharacterEscapeHandlerWrapper(value));
                }
            } else if (XML_DECLARATION.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                Boolean fragment = !(Boolean) value;
                xmlMarshaller.setFragment(fragment);
            } else if (XML_HEADERS.equals(key)) {
                xmlMarshaller.setXmlHeader((String) value);
            } else if (OBJECT_IDENTITY_CYCLE_DETECTION.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                xmlMarshaller.setEqualUsingIdenity((Boolean) value);
            } else if (MarshallerProperties.MEDIA_TYPE.equals(key)) {
                MediaType mType = null;
                if (value instanceof MediaType) {
                    mType = (MediaType) value;
                } else if (value instanceof String) {
                    mType = MediaType.getMediaType((String) value);
                }
                if (mType == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                xmlMarshaller.setMediaType(mType);
            } else if (MarshallerProperties.JSON_ATTRIBUTE_PREFIX.equals(key)) {
                xmlMarshaller.setAttributePrefix((String) value);
            } else if (MarshallerProperties.JSON_INCLUDE_ROOT.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                xmlMarshaller.setIncludeRoot((Boolean) value);
            } else if (MarshallerProperties.JSON_VALUE_WRAPPER.equals(key)) {
                if (value == null || (((String) value).length() == 0)) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                xmlMarshaller.setValueWrapper((String) value);
            } else if (MarshallerProperties.JSON_NAMESPACE_SEPARATOR.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                xmlMarshaller.setNamespaceSeparator((Character) value);
            } else if (MarshallerProperties.OBJECT_GRAPH.equals(key)) {
                if (value == null) {
                    xmlMarshaller.setMarshalAttributeGroup(null);
                } else if (value instanceof ObjectGraphImpl) {
                    xmlMarshaller.setMarshalAttributeGroup(((ObjectGraphImpl) value).getAttributeGroup());
                } else if (value.getClass() == ClassConstants.STRING) {
                    xmlMarshaller.setMarshalAttributeGroup(value);
                } else {
                    throw org.eclipse.persistence.exceptions.JAXBException.invalidValueForObjectGraph(value);
                }
            } else if (MarshallerProperties.BEAN_VALIDATION_MODE.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                this.beanValidationMode = ((BeanValidationMode) value);
            } else if (MarshallerProperties.BEAN_VALIDATION_FACTORY.equals(key)) {
                // noinspection StatementWithEmptyBody
                if (value == null) {
                // Allow null value for preferred validation factory.
                }
                this.prefValidatorFactory = value;
            } else if (MarshallerProperties.BEAN_VALIDATION_GROUPS.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                this.beanValidationGroups = ((Class<?>[]) value);
            } else if (MarshallerProperties.BEAN_VALIDATION_NO_OPTIMISATION.equals(key)) {
                if (value == null) {
                    throw new PropertyException(key, Constants.EMPTY_STRING);
                }
                this.bvNoOptimisation = ((boolean) value);
            } else {
                throw new PropertyException(key, value);
            }
        }
    } catch (ClassCastException exception) {
        throw new PropertyException(key, exception);
    }
}
Also used : MapNamespacePrefixMapper(org.eclipse.persistence.internal.oxm.record.namespaces.MapNamespacePrefixMapper) PropertyException(jakarta.xml.bind.PropertyException) CharacterEscapeHandler(org.eclipse.persistence.oxm.CharacterEscapeHandler) ObjectGraphImpl(org.eclipse.persistence.internal.jaxb.ObjectGraphImpl) LogLevel(org.eclipse.persistence.logging.LogLevel) SessionLog(org.eclipse.persistence.logging.SessionLog) AbstractSessionLog(org.eclipse.persistence.logging.AbstractSessionLog) MediaType(org.eclipse.persistence.oxm.MediaType) NamespacePrefixMapperWrapper(org.eclipse.persistence.internal.oxm.record.namespaces.NamespacePrefixMapperWrapper) Map(java.util.Map) HashMap(java.util.HashMap) NamespacePrefixMapper(org.eclipse.persistence.oxm.NamespacePrefixMapper) MapNamespacePrefixMapper(org.eclipse.persistence.internal.oxm.record.namespaces.MapNamespacePrefixMapper)

Aggregations

PropertyException (jakarta.xml.bind.PropertyException)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 ObjectGraphImpl (org.eclipse.persistence.internal.jaxb.ObjectGraphImpl)1 MapNamespacePrefixMapper (org.eclipse.persistence.internal.oxm.record.namespaces.MapNamespacePrefixMapper)1 NamespacePrefixMapperWrapper (org.eclipse.persistence.internal.oxm.record.namespaces.NamespacePrefixMapperWrapper)1 AbstractSessionLog (org.eclipse.persistence.logging.AbstractSessionLog)1 LogLevel (org.eclipse.persistence.logging.LogLevel)1 SessionLog (org.eclipse.persistence.logging.SessionLog)1 CharacterEscapeHandler (org.eclipse.persistence.oxm.CharacterEscapeHandler)1 MediaType (org.eclipse.persistence.oxm.MediaType)1 NamespacePrefixMapper (org.eclipse.persistence.oxm.NamespacePrefixMapper)1