All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.persistence.jaxb.JAXBContextProperties Maven / Gradle / Ivy

There is a newer version: 5.0.0-B07
Show newest version
/*******************************************************************************
 * Copyright (c) 2012, 2013 Oracle and/or its affiliates. All rights reserved.
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
 * which accompanies this distribution.
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * Contributors:
 *     Blaise Doughan - 2.4.0 - initial implementation
 ******************************************************************************/
package org.eclipse.persistence.jaxb;

/**
 * These are properties that may be passed in to create a JAXBContext:
 * 
 * Map<String, Object> properties = new HashMap(1);
 * properties.put();
 * JAXBContext jc = JAXBContext.newInstance(new Class[] {Foo.class}, properties);
 * 
* @since 2.4.0 */ public class JAXBContextProperties { /** * The name of the property used to specify a value that will be prepended * to all keys that are mapped to an XML attribute. By default there is no * attribute prefix. There is no effect when media type is * "application/xml". When this property is specified at the * JAXBContext level all instances of Marshaller and * Unmarshaller will default to this attribute prefix. * @since 2.4 * @see org.eclipse.persistence.jaxb.MarshallerProperties.JSON_ATTRIBUTE_PREFIX * @see org.eclipse.persistence.jaxb.UnmarshallerProperties.JSON_ATTRIBUTE_PREFIX */ public static final String JSON_ATTRIBUTE_PREFIX = "eclipselink.json.attribute-prefix"; /** * The name of the property used to specify in the root node should be * included in the message (default is true). There is no effect when media * type is "application/xml". When this property is specified at the * JAXBContext level all instances of Marshaller and * Unmarshaller will default to this setting. * @since 2.4 * @see org.eclipse.persistence.jaxb.JAXBContextProperties.JSON_INCLUDE_ROOT * @see org.eclipse.persistence.jaxb.UnmarshallerProperties.JSON_INCLUDE_ROOT */ public static final String JSON_INCLUDE_ROOT = "eclipselink.json.include-root"; /** * The name of the property used to specify the character (default is '.') * that separates the prefix from the key name. It is only used if namespace * qualification has been enabled be setting a namespace prefix mapper. * When this property is specified at the JAXBContext level all * instances of Marshaller and Unmarshaller will default to * this setting. * @since 2.4 * @see org.eclipse.persistence.jaxb.MarshallerProperties.NAMESPACE_SEPARATOR * @see org.eclipse.persistence.jaxb.UnmarshallerProperties.NAMESPACE_SEPARATOR */ public static final String JSON_NAMESPACE_SEPARATOR = "eclipselink.json.namespace-separator"; /** * The name of the property used to specify the key that will correspond to * the property mapped with @XmlValue. This key will only be used if * there are other mapped properties. When this property is specified at * the JAXBContext level all instances of Marshaller and * Unmarshaller will default to this setting. * @since 2.4 * @see org.eclipse.persistence.jaxb.MarshallerPropertes.JSON_VALUE_WRAPPER * @see org.eclipse.persistence.jaxb.UnmarshallerPropertes.JSON_VALUE_WRAPPER */ public static final String JSON_VALUE_WRAPPER = "eclipselink.json.value-wrapper"; /** * The name of the property used to specify the type of binding to be * performed. When this property is specified at the JAXBContext * level all instances of Marshaller and Unmarshaller will * default to this media type. Supported values are: *
    *
  • MediaType.APPLICATION_XML (default) *
  • MediaType.APPLICATION_JSON *
  • "application/xml" *
  • "application/json" *
* @since 2.4 * @see org.eclipse.persistence.jaxb.MarshallerProperties.MEDIA_TYPE * @see org.eclipse.persistence.jaxb.UnmarshallerProperties.MEDIA_TYPE * @see org.eclipse.persistence.oxm.MediaType */ public static final String MEDIA_TYPE = "eclipselink.media-type"; /** * The Constant NAMESPACE_PREFIX_MAPPER. Provides a means to customize the * namespace prefixes used while marshalling to XML. Used for both marshal * and unmarshal when mediaType is set to "application/json". Value is * either a Map of URIs to prefixes, or an implementation of * org.eclipse.persistence.oxm.NamespacePrefixMapper. * @since 2.4 * @see org.eclipse.persistence.oxm.NamespacePrefixMapper */ public static final String NAMESPACE_PREFIX_MAPPER = "eclipselink.namespace-prefix-mapper"; /** * The name of the property used to specify a SessionEventListener that can * be used to customize the metadata before or after it has been * initialized. * @see org.eclipse.persistence.sessions.SessionEventListener * @since 2.4 */ public static final String SESSION_EVENT_LISTENER = "eclipselink.session-event-listener"; /** * The name of the property used to specify one or more EclipseLink OXM * metadata sources. * * The metadata source can be one of the following: *
    *
  • java.io.File *
  • java.io.InputStream *
  • java.io.Reader *
  • java.lang.String *
  • java.net.URL *
  • javax.xml.stream.XMLEventReader *
  • javax.xml.stream.XMLStreamReader *
  • javax.xml.transform.Source *
  • org.eclipse.persistence.jaxb.metadata.MetadataSource *
  • org.w3c.dom.Node *
  • org.xml.sax.InputSource *
* * To specify multiple metadata sources, the following can be used: *
    *
  • java.util.Map *
  • java.util.List * * * @since 2.4, replaces JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY */ public static final String OXM_METADATA_SOURCE = "eclipselink.oxm.metadata-source"; /** * The name of the property used to specify a default target namespace. * * @since 2.4, replaces JAXBContextFactory.DEFAULT_TARGET_NAMESPACE_KEY */ public static final String DEFAULT_TARGET_NAMESPACE = "eclipselink.default-target-namespace"; /** * The name of the property used to specify an AnnotationHelper instance. * An AnnotationHelper is responsible for returning Annotations from * AnnotatedElements. * @see org.eclipse.persistence.jaxb.javamodel.reflection.AnnotationHelper * @see java.lang.annotation.Annotation * @see java.lang.reflect.AnnotatedElement * * @since 2.4, replaces JAXBContextFactory.ANNOTATION_HELPER_KEY */ public static final String ANNOTATION_HELPER = "eclipselink.annotation-helper"; /** * The name of the boolean property used to enable custom XmlAccessorFactories. * * @see com.sun.xml.bind.XmlAccessorFactory * * @since 2.4.2 */ public static final String XML_ACCESSOR_FACTORY_SUPPORT = "eclipselink.xml-accessor-factory.support"; /** * The name of the property used to specify an ObjectGraph instance or name of an * ObjectGraph to be used on Unmarshallers and Marshallers created by the context. */ public static final String OBJECT_GRAPH = "eclipselink.object-graph"; /** * The Constant JSON_WRAPPER_AS_ARRAY_NAME. If true the grouping * element will be used as the JSON key. There is no effect when media type * is "application/xml". When this property is specified at the * JAXBContext level all instances of Marshaller and * Unmarshaller will default to this. * *

    Example

    *

    Given the following class:

    *
         * @XmlAccessorType(XmlAccessType.FIELD)
         * public class Customer {
         * 
         *     @XmlElementWrapper(name="phone-numbers")
         *     @XmlElement(name="phone-number")
         *     private List phoneNumbers;
         * 
         * }
         * 
    *

    If the property is set to false (the default) the JSON output will be:

    *
         * {
         *     "phone-numbers" : {
         *         "phone-number" : [ {
         *             ...
         *         }, {
         *             ...
         *         }]
         *     }
         * }
         * 
    *

    And if the property is set to true, then the JSON output will be:

    *
         * {
         *     "phone-numbers" : [ {
         *         ...
         *     }, {
         *         ...
         *     }]
         * }
         * 
    * @since 2.4.2 * @see org.eclipse.persistence.jaxb.MarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME * @see org.eclipse.persistence.jaxb.UnmarshallerProperties.JSON_WRAPPER_AS_ARRAY_NAME */ public static final String JSON_WRAPPER_AS_ARRAY_NAME = "eclipselink.json.wrapper-as-array-name"; }