Class JAXBRIContext

  • Direct Known Subclasses:
    JAXBContextImpl

    public abstract class JAXBRIContext
    extends javax.xml.bind.JAXBContext
    JAXBContext enhanced with JAXB RI specific functionalities.

    Subject to change without notice.

    Since:
    2.0 EA1
    Author:
    Kohsuke Kawaguchi (kohsuke.kawaguchi@sun.com)
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String ANNOTATION_READER
      The property that you can specify to JAXBContext.newInstance(java.lang.String) to use alternative RuntimeAnnotationReader implementation.
      static java.lang.String BACKUP_WITH_PARENT_NAMESPACE
      If true and element namespace is not specified, namespace of parent element will be used.
      static java.lang.String CANONICALIZATION_SUPPORT
      The property that you can specify to JAXBContext.newInstance(java.lang.String) and Marshaller.setProperty(String, Object) to enable the c14n marshalling support in the JAXBContext.
      static java.lang.String DEFAULT_NAMESPACE_REMAP
      The property that you can specify to JAXBContext.newInstance(java.lang.String) to reassign the default namespace URI to something else at the runtime.
      static java.lang.String DISABLE_XML_SECURITY
      If true XML security features when parsing XML documents will be disabled.
      static java.lang.String ENABLE_XOP
      Marshaller/Unmarshaller property to enable XOP processing.
      static java.lang.String IMPROVED_XSI_TYPE_HANDLING
      Improves handling of xsi:type used on leaf properties.
      static java.lang.String RETAIN_REFERENCE_TO_INFO
      Retains references to PropertyInfos.
      static java.lang.String SUBCLASS_REPLACEMENTS
      The property that you can specify to JAXBContext.newInstance(java.lang.String) to specify specific classes that replace the reference to generic classes.
      static java.lang.String SUPRESS_ACCESSOR_WARNINGS
      Supress security warnings when trying to access fields through reflection.
      static java.lang.String TREAT_EVERYTHING_NILLABLE
      The property that you can specify to JAXBContext.newInstance(java.lang.String) to allow unmarshaller to honor xsi:nil anywhere, even if they are not specifically allowed by the schema.
      static java.lang.String TYPE_REFERENCES
      The property that you can specify to JAXBContext.newInstance(java.lang.String) to put additional JAXB type references into the JAXBContext.
      static java.lang.String XMLACCESSORFACTORY_SUPPORT
      The property that you can specify to JAXBContext.newInstance(java.lang.String) enable support of XmlAccessorFactory annotation in the JAXBContext.
      • Fields inherited from class javax.xml.bind.JAXBContext

        JAXB_CONTEXT_FACTORY
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected JAXBRIContext()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      abstract Bridge createBridge​(TypeReference ref)
      Creates a mini-marshaller/unmarshaller that can process a TypeReference.
      abstract BridgeContext createBridgeContext()
      Creates a new BridgeContext instance.
      abstract void generateEpisode​(javax.xml.transform.Result output)
      Generates the episode file that represents the binding known to this JAXBContext, so that XJC can later do separate compilation.
      abstract void generateSchema​(javax.xml.bind.SchemaOutputResolver outputResolver)
      Generates the schema documents from the model.
      static java.lang.reflect.Type getBaseType​(java.lang.reflect.Type type, java.lang.Class baseType)
      Gets the parameterization of the given base type.
      abstract java.lang.String getBuildId()
      Gets the build information of the JAXB runtime.
      abstract javax.xml.namespace.QName getElementName​(java.lang.Class o)
      Allows to retrieve the element name based on Class.
      abstract javax.xml.namespace.QName getElementName​(java.lang.Object o)
      If the given object is bound to an element in XML by JAXB, returns the element name.
      abstract <B,​V>
      RawAccessor<B,​V>
      getElementPropertyAccessor​(java.lang.Class<B> wrapperBean, java.lang.String nsUri, java.lang.String localName)
      Gets a RawAccessor for the specified element property of the specified wrapper bean class.
      abstract java.util.List<java.lang.String> getKnownNamespaceURIs()
      Gets the namespace URIs statically known to this JAXBContext.
      abstract RuntimeTypeInfoSet getRuntimeTypeInfoSet()
      Allows you to access the runtime model information of the JAXB XML/Java binding.
      abstract javax.xml.namespace.QName getTypeName​(TypeReference tr)
      Returns the name of the XML Type bound to the specified Java type.
      abstract boolean hasSwaRef()
      Returns true if this context includes a class that has XmlAttachmentRef.
      static java.lang.String mangleNameToClassName​(java.lang.String localName)
      Computes a Java class name from a local name.
      static java.lang.String mangleNameToPropertyName​(java.lang.String localName)
      Computes a Java class name from a local name.
      static java.lang.String mangleNameToVariableName​(java.lang.String localName)
      Computes a Java identifier from a local name.
      static JAXBRIContext newInstance​(java.lang.Class[] classes, java.util.Collection<TypeReference> typeRefs, java.lang.String defaultNamespaceRemap, boolean c14nSupport)
      Deprecated.
      Compatibility with older versions.
      static JAXBRIContext newInstance​(java.lang.Class[] classes, java.util.Collection<TypeReference> typeRefs, java.util.Map<java.lang.Class,​java.lang.Class> subclassReplacements, java.lang.String defaultNamespaceRemap, boolean c14nSupport, RuntimeAnnotationReader ar)
      Creates a new JAXBRIContext.
      static JAXBRIContext newInstance​(java.lang.Class[] classes, java.util.Collection<TypeReference> typeRefs, java.util.Map<java.lang.Class,​java.lang.Class> subclassReplacements, java.lang.String defaultNamespaceRemap, boolean c14nSupport, RuntimeAnnotationReader ar, boolean xmlAccessorFactorySupport, boolean allNillable, boolean retainPropertyInfo, boolean supressAccessorWarnings)
      Creates a new JAXBRIContext.
      • Methods inherited from class javax.xml.bind.JAXBContext

        createBinder, createBinder, createJAXBIntrospector, createMarshaller, createUnmarshaller, createValidator, newInstance, newInstance, newInstance, newInstance, newInstance
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT_NAMESPACE_REMAP

        public static final java.lang.String DEFAULT_NAMESPACE_REMAP
        The property that you can specify to JAXBContext.newInstance(java.lang.String) to reassign the default namespace URI to something else at the runtime.

        The value of the property is String, and it is used as the namespace URI that succeeds the default namespace URI.

        Since:
        2.0 EA1
        See Also:
        Constant Field Values
      • TYPE_REFERENCES

        public static final java.lang.String TYPE_REFERENCES
        The property that you can specify to JAXBContext.newInstance(java.lang.String) to put additional JAXB type references into the JAXBContext.

        The value of the property is Collection<TypeReference>. Those TypeReferences can then be used to create Bridges.

        This mechanism allows additional element declarations that were not a part of the schema into the created JAXBContext.

        Since:
        2.0 EA1
        See Also:
        Constant Field Values
      • CANONICALIZATION_SUPPORT

        public static final java.lang.String CANONICALIZATION_SUPPORT
        The property that you can specify to JAXBContext.newInstance(java.lang.String) and Marshaller.setProperty(String, Object) to enable the c14n marshalling support in the JAXBContext. Boolean
        Since:
        2.0 EA2
        See Also:
        Constant Field Values
      • TREAT_EVERYTHING_NILLABLE

        public static final java.lang.String TREAT_EVERYTHING_NILLABLE
        The property that you can specify to JAXBContext.newInstance(java.lang.String) to allow unmarshaller to honor xsi:nil anywhere, even if they are not specifically allowed by the schema. Boolean
        Since:
        2.1.3
        See Also:
        Constant Field Values
      • ANNOTATION_READER

        public static final java.lang.String ANNOTATION_READER
        The property that you can specify to JAXBContext.newInstance(java.lang.String) to use alternative RuntimeAnnotationReader implementation.
        Since:
        2.1 EA2
      • ENABLE_XOP

        public static final java.lang.String ENABLE_XOP
        Marshaller/Unmarshaller property to enable XOP processing.
        Since:
        2.0 EA2
        See Also:
        Constant Field Values
      • SUBCLASS_REPLACEMENTS

        public static final java.lang.String SUBCLASS_REPLACEMENTS
        The property that you can specify to JAXBContext.newInstance(java.lang.String) to specify specific classes that replace the reference to generic classes.

        See the release notes for more details about this feature.

        Since:
        2.1 EA2
        See Also:
        Constant Field Values
      • XMLACCESSORFACTORY_SUPPORT

        public static final java.lang.String XMLACCESSORFACTORY_SUPPORT
        The property that you can specify to JAXBContext.newInstance(java.lang.String) enable support of XmlAccessorFactory annotation in the JAXBContext.
        Since:
        2.1 EA2
        See Also:
        Constant Field Values
      • RETAIN_REFERENCE_TO_INFO

        public static final java.lang.String RETAIN_REFERENCE_TO_INFO
        Retains references to PropertyInfos. Boolean
        Since:
        2.1.10
        See Also:
        Constant Field Values
      • SUPRESS_ACCESSOR_WARNINGS

        public static final java.lang.String SUPRESS_ACCESSOR_WARNINGS
        Supress security warnings when trying to access fields through reflection. Boolean
        Since:
        2.1.14, 2.2.2
        See Also:
        Constant Field Values
      • IMPROVED_XSI_TYPE_HANDLING

        public static final java.lang.String IMPROVED_XSI_TYPE_HANDLING
        Improves handling of xsi:type used on leaf properties. Boolean
        Since:
        2.2.3
        See Also:
        Constant Field Values
      • DISABLE_XML_SECURITY

        public static final java.lang.String DISABLE_XML_SECURITY
        If true XML security features when parsing XML documents will be disabled. The default value is false. Boolean
        Since:
        2.2.6
        See Also:
        Constant Field Values
      • BACKUP_WITH_PARENT_NAMESPACE

        public static final java.lang.String BACKUP_WITH_PARENT_NAMESPACE
        If true and element namespace is not specified, namespace of parent element will be used. The default value is false. Boolean
        Since:
        2.3.0
        See Also:
        Constant Field Values
    • Constructor Detail

      • JAXBRIContext

        protected JAXBRIContext()
    • Method Detail

      • newInstance

        public static JAXBRIContext newInstance​(@NotNull
                                                java.lang.Class[] classes,
                                                @Nullable
                                                java.util.Collection<TypeReference> typeRefs,
                                                @Nullable
                                                java.util.Map<java.lang.Class,​java.lang.Class> subclassReplacements,
                                                @Nullable
                                                java.lang.String defaultNamespaceRemap,
                                                boolean c14nSupport,
                                                @Nullable
                                                RuntimeAnnotationReader ar)
                                         throws javax.xml.bind.JAXBException
        Creates a new JAXBRIContext.

        JAXBContext.newInstance() methods may return other JAXB providers that are not compatible with the JAX-RPC RI. This method guarantees that the JAX-WS RI will finds the JAXB RI.

        Parameters:
        classes - Classes to be bound. See JAXBContext.newInstance(Class[]) for the meaning.
        typeRefs - See TYPE_REFERENCES for the meaning of this parameter. Can be null.
        subclassReplacements - See SUBCLASS_REPLACEMENTS for the meaning of this parameter. Can be null.
        defaultNamespaceRemap - See DEFAULT_NAMESPACE_REMAP for the meaning of this parameter. Can be null (and should be null for ordinary use of JAXB.)
        c14nSupport - See CANONICALIZATION_SUPPORT for the meaning of this parameter.
        ar - See ANNOTATION_READER for the meaning of this parameter. Can be null.
        Throws:
        javax.xml.bind.JAXBException
        Since:
        JAXB 2.1 EA2
      • newInstance

        public static JAXBRIContext newInstance​(@NotNull
                                                java.lang.Class[] classes,
                                                @Nullable
                                                java.util.Collection<TypeReference> typeRefs,
                                                @Nullable
                                                java.util.Map<java.lang.Class,​java.lang.Class> subclassReplacements,
                                                @Nullable
                                                java.lang.String defaultNamespaceRemap,
                                                boolean c14nSupport,
                                                @Nullable
                                                RuntimeAnnotationReader ar,
                                                boolean xmlAccessorFactorySupport,
                                                boolean allNillable,
                                                boolean retainPropertyInfo,
                                                boolean supressAccessorWarnings)
                                         throws javax.xml.bind.JAXBException
        Creates a new JAXBRIContext.

        JAXBContext.newInstance() methods may return other JAXB providers that are not compatible with the JAX-RPC RI. This method guarantees that the JAX-WS RI will finds the JAXB RI.

        Parameters:
        classes - Classes to be bound. See JAXBContext.newInstance(Class[]) for the meaning.
        typeRefs - See TYPE_REFERENCES for the meaning of this parameter. Can be null.
        subclassReplacements - See SUBCLASS_REPLACEMENTS for the meaning of this parameter. Can be null.
        defaultNamespaceRemap - See DEFAULT_NAMESPACE_REMAP for the meaning of this parameter. Can be null (and should be null for ordinary use of JAXB.)
        c14nSupport - See CANONICALIZATION_SUPPORT for the meaning of this parameter.
        ar - See ANNOTATION_READER for the meaning of this parameter. Can be null.
        xmlAccessorFactorySupport - See XMLACCESSORFACTORY_SUPPORT for the meaning of this parameter.
        allNillable - See TREAT_EVERYTHING_NILLABLE for the meaning of this parameter.
        retainPropertyInfo - See RETAIN_REFERENCE_TO_INFO for the meaning of this parameter.
        supressAccessorWarnings - See SUPRESS_ACCESSOR_WARNINGS for the meaning of this parameter.
        Throws:
        javax.xml.bind.JAXBException
      • newInstance

        public static JAXBRIContext newInstance​(@NotNull
                                                java.lang.Class[] classes,
                                                @Nullable
                                                java.util.Collection<TypeReference> typeRefs,
                                                @Nullable
                                                java.lang.String defaultNamespaceRemap,
                                                boolean c14nSupport)
                                         throws javax.xml.bind.JAXBException
        Deprecated.
        Compatibility with older versions.
        Throws:
        javax.xml.bind.JAXBException
      • hasSwaRef

        public abstract boolean hasSwaRef()
        Returns true if this context includes a class that has XmlAttachmentRef.
        Since:
        2.1
      • getElementName

        @Nullable
        public abstract javax.xml.namespace.QName getElementName​(@NotNull
                                                                 java.lang.Object o)
                                                          throws javax.xml.bind.JAXBException
        If the given object is bound to an element in XML by JAXB, returns the element name.
        Returns:
        null if the object is not bound to an element.
        Throws:
        javax.xml.bind.JAXBException - if the object is not known to this context.
        Since:
        2.0 EA1
      • getElementName

        @Nullable
        public abstract javax.xml.namespace.QName getElementName​(@NotNull
                                                                 java.lang.Class o)
                                                          throws javax.xml.bind.JAXBException
        Allows to retrieve the element name based on Class.
        Parameters:
        o -
        Returns:
        Throws:
        javax.xml.bind.JAXBException
        Since:
        2.1.10
      • createBridgeContext

        @NotNull
        public abstract BridgeContext createBridgeContext()
        Creates a new BridgeContext instance.
        Returns:
        always a valid non-null instance.
        Since:
        2.0 EA1
      • getElementPropertyAccessor

        public abstract <B,​V> RawAccessor<B,​V> getElementPropertyAccessor​(java.lang.Class<B> wrapperBean,
                                                                                      java.lang.String nsUri,
                                                                                      java.lang.String localName)
                                                                               throws javax.xml.bind.JAXBException
        Gets a RawAccessor for the specified element property of the specified wrapper bean class.

        This method is designed to assist the JAX-RPC RI fill in a wrapper bean (in the doc/lit/wrap mode.) In the said mode, a wrapper bean is supposed to only have properties that match elements, and for each element that appear in the content model there's one property.

        Therefore, this method takes a wrapper bean and a tag name that identifies a property on the given wrapper bean, then returns a RawAccessor that allows the caller to set/get a value from the property of the bean.

        This method is not designed for a performance. The caller is expected to cache the result.

        Type Parameters:
        B - type of the wrapper bean
        V - type of the property of the bean
        Returns:
        always return non-null valid accessor object.
        Throws:
        javax.xml.bind.JAXBException - if the specified wrapper bean is not bound by JAXB, or if it doesn't have an element property of the given name.
        Since:
        2.0 EA1
      • getKnownNamespaceURIs

        @NotNull
        public abstract java.util.List<java.lang.String> getKnownNamespaceURIs()
        Gets the namespace URIs statically known to this JAXBContext.

        When JAXB is used to marshal into sub-trees, it declares these namespace URIs at each top-level element that it marshals. To avoid repeated namespace declarations at sub-elements, the application may declare those namespaces at a higher level.

        Returns:
        always non-null.
        Since:
        2.0 EA2
      • generateSchema

        public abstract void generateSchema​(@NotNull
                                            javax.xml.bind.SchemaOutputResolver outputResolver)
                                     throws java.io.IOException
        Generates the schema documents from the model.

        The caller can use the additionalElementDecls parameter to add element declarations to the generate schema. For example, if the JAX-RPC passes in the following entry: {foo}bar -> DeclaredType for java.lang.String then JAXB generates the following element declaration (in the schema document for the namespace "foo")" <xs:element name="bar" type="xs:string" /> This can be used for generating schema components necessary for WSDL.

        Overrides:
        generateSchema in class javax.xml.bind.JAXBContext
        Parameters:
        outputResolver - this object controls the output to which schemas will be sent.
        Throws:
        java.io.IOException - if SchemaOutputResolver throws an IOException.
      • getBuildId

        @NotNull
        public abstract java.lang.String getBuildId()
        Gets the build information of the JAXB runtime.
        Returns:
        may be null, if the runtime is loaded by a class loader that doesn't support the access to the manifest informatino.
      • generateEpisode

        public abstract void generateEpisode​(javax.xml.transform.Result output)
        Generates the episode file that represents the binding known to this JAXBContext, so that XJC can later do separate compilation.

        Episode file is really just a JAXB customization file, except that currently we use the RI-specific SCD to refer to schema components.

        Parameters:
        output - This receives the generated episode file.
        Since:
        2.1
      • getRuntimeTypeInfoSet

        public abstract RuntimeTypeInfoSet getRuntimeTypeInfoSet()
        Allows you to access the runtime model information of the JAXB XML/Java binding.

        This is useful for doing a deeper integration with the JAXB RI. For more information about the model, see https://jaxb2-reflection.dev.java.net/

        Since:
        2.1.10
      • mangleNameToVariableName

        @NotNull
        public static java.lang.String mangleNameToVariableName​(@NotNull
                                                                java.lang.String localName)
        Computes a Java identifier from a local name.

        This method faithfully implements the name mangling rule as specified in the JAXB spec.

        In JAXB, a collision with a Java reserved word (such as "return") never happens. Accordingly, this method may return an identifier that collides with reserved words.

        Use JJavaName.isJavaIdentifier(String) to check for such collision.

        Returns:
        Typically, this method returns "nameLikeThis".
      • mangleNameToClassName

        @NotNull
        public static java.lang.String mangleNameToClassName​(@NotNull
                                                             java.lang.String localName)
        Computes a Java class name from a local name.

        This method faithfully implements the name mangling rule as specified in the JAXB spec.

        Returns:
        Typically, this method returns "NameLikeThis".
      • mangleNameToPropertyName

        @NotNull
        public static java.lang.String mangleNameToPropertyName​(@NotNull
                                                                java.lang.String localName)
        Computes a Java class name from a local name.

        This method faithfully implements the name mangling rule as specified in the JAXB spec. This method works like mangleNameToClassName(String) except that it looks for "getClass" and returns something else.

        Returns:
        Typically, this method returns "NameLikeThis".
      • getBaseType

        @Nullable
        public static java.lang.reflect.Type getBaseType​(@NotNull
                                                         java.lang.reflect.Type type,
                                                         @NotNull
                                                         java.lang.Class baseType)
        Gets the parameterization of the given base type.

        For example, given the following

        
         interface Foo<T> extends List<List<T>> {}
         interface Bar extends Foo<String> {}
         
        This method works like this:
        
         getBaseClass( Bar, List ) = List<List<String>
         getBaseClass( Bar, Foo  ) = Foo<String>
         getBaseClass( Foo<? extends Number>, Collection ) = Collection<List<? extends Number>>
         getBaseClass( ArrayList<? extends BigInteger>, List ) = List<? extends BigInteger>
         
        Parameters:
        type - The type that derives from baseType
        baseType - The class whose parameterization we are interested in.
        Returns:
        The use of baseType in type. or null if the type is not assignable to the base type.
        Since:
        2.0 FCS