Search in sources :

Example 6 with PropertyException

use of jakarta.xml.bind.PropertyException in project eclipselink by eclipse-ee4j.

the class JSONAttributePrefixOnContextTestCases method testingTurnAttributesOnOff.

public void testingTurnAttributesOnOff() throws Exception {
    try {
        jsonMarshaller.setProperty(MarshallerProperties.JSON_ATTRIBUTE_PREFIX, "");
    } catch (PropertyException e) {
        e.printStackTrace();
        fail("an error occurred during setup");
    }
    StringWriter sw = new StringWriter();
    jsonMarshaller.marshal(getWriteControlObject(), sw);
    // since the prefix got set to "" then there should not be any @ symbols marshalled
    assertFalse(sw.getBuffer().toString().indexOf('@') > -1);
    try {
        jsonMarshaller.setProperty(MarshallerProperties.JSON_ATTRIBUTE_PREFIX, "@");
    } catch (PropertyException e) {
        e.printStackTrace();
        fail("an error occurred during setup");
    }
    testJSONMarshalToOutputStream();
}
Also used : StringWriter(java.io.StringWriter) PropertyException(jakarta.xml.bind.PropertyException)

Example 7 with PropertyException

use of jakarta.xml.bind.PropertyException 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)

Example 8 with PropertyException

use of jakarta.xml.bind.PropertyException in project eclipselink by eclipse-ee4j.

the class TypeMappingInfoWithJSONTestCases method compareJAXBElementObjects.

@Override
public void compareJAXBElementObjects(JAXBElement controlObj, JAXBElement testObj) {
    assertEquals(controlObj.getName().getLocalPart(), testObj.getName().getLocalPart());
    Object mapper = null;
    try {
        mapper = jaxbUnmarshaller.getProperty(UnmarshallerProperties.JSON_NAMESPACE_PREFIX_MAPPER);
    } catch (PropertyException e) {
        e.printStackTrace();
        fail();
    }
    if (mapper != null) {
        assertEquals(controlObj.getName().getNamespaceURI(), testObj.getName().getNamespaceURI());
    }
    assertEquals(controlObj.getDeclaredType(), testObj.getDeclaredType());
    Object controlValue = controlObj.getValue();
    Object testValue = testObj.getValue();
    if (controlValue == null) {
        if (testValue == null) {
            return;
        }
        fail("Test value should have been null");
    } else {
        if (testValue == null) {
            fail("Test value should not have been null");
        }
    }
    if (controlValue.getClass() == ClassConstants.ABYTE && testValue.getClass() == ClassConstants.ABYTE || controlValue.getClass() == ClassConstants.APBYTE && testValue.getClass() == ClassConstants.APBYTE) {
        compareValues(controlValue, testValue);
    } else if (controlValue.getClass().isArray()) {
        if (testValue.getClass().isArray()) {
            if (controlValue.getClass().getComponentType().isPrimitive()) {
                comparePrimitiveArrays(controlValue, testValue);
            } else {
                compareObjectArrays(controlValue, testValue);
            }
        } else {
            fail("Expected an array value but was an " + testValue.getClass().getName());
        }
    } else if (controlValue instanceof Collection) {
        Collection controlCollection = (Collection) controlValue;
        Collection testCollection = (Collection) testValue;
        Iterator<Object> controlIter = controlCollection.iterator();
        Iterator<Object> testIter = testCollection.iterator();
        assertEquals(controlCollection.size(), testCollection.size());
        while (controlIter.hasNext()) {
            Object nextControl = controlIter.next();
            Object nextTest = testIter.next();
            compareValues(nextControl, nextTest);
        }
    } else {
        compareValues(controlValue, testValue);
    }
}
Also used : PropertyException(jakarta.xml.bind.PropertyException) Collection(java.util.Collection)

Aggregations

PropertyException (jakarta.xml.bind.PropertyException)8 Marshaller (jakarta.xml.bind.Marshaller)3 HashMap (java.util.HashMap)3 ObjectGraphImpl (org.eclipse.persistence.internal.jaxb.ObjectGraphImpl)3 JAXBContext (jakarta.xml.bind.JAXBContext)2 Map (java.util.Map)2 Entry (java.util.Map.Entry)2 IDResolverWrapper (org.eclipse.persistence.internal.jaxb.IDResolverWrapper)2 PrefixMapperNamespaceResolver (org.eclipse.persistence.internal.oxm.record.namespaces.PrefixMapperNamespaceResolver)2 AbstractSessionLog (org.eclipse.persistence.logging.AbstractSessionLog)2 LogLevel (org.eclipse.persistence.logging.LogLevel)2 SessionLog (org.eclipse.persistence.logging.SessionLog)2 MediaType (org.eclipse.persistence.oxm.MediaType)2 NamespacePrefixMapper (org.eclipse.persistence.oxm.NamespacePrefixMapper)2 XmlSchema (jakarta.xml.bind.annotation.XmlSchema)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 File (java.io.File)1 StringWriter (java.io.StringWriter)1 BigDecimal (java.math.BigDecimal)1 Collection (java.util.Collection)1