Package org.jboss.resteasy.plugins.providers.jaxb

## Class JAXBElementProvider

- java.lang.Object
- - org.jboss.resteasy.plugins.providers.AbstractEntityProvider<T>
  - - org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider<JAXBElement<?>>
    - - org.jboss.resteasy.plugins.providers.jaxb.JAXBElementProvider

- All Implemented Interfaces:
    `javax.ws.rs.ext.MessageBodyReader<JAXBElement<?>>`, `javax.ws.rs.ext.MessageBodyWriter<JAXBElement<?>>`, `AsyncBufferedMessageBodyWriter<JAXBElement<?>>`, `AsyncMessageBodyWriter<JAXBElement<?>>`
  Direct Known Subclasses:
    `FastinfoSetElementProvider`

      @Provider
      @Produces({"application/xml","application/*+xml","text/xml","text/*+xml"})
      @Consumes({"application/xml","application/*+xml","text/xml","text/*+xml"})
      public class JAXBElementProvider
      extends AbstractJAXBProvider<JAXBElement<?>>

  A JAXB Provider which handles parameter and return types of `JAXBElement`. This provider will be selected when the resource is declared as:

  `@POST
  @Consumes("applictaion/xml")
  @Produces("applictaion/xml")
  public JAXBElement<Contact> getContact(JAXBElement<Contact> value);
  `
  Version:
    $Revision:$
  Author:
    Ryan J. McDonough

- - ### Field Summary

    - ### Fields inherited from class org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider

      `providers`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `JAXBElementProvider()` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `CompletionStage<Void>` | `asyncWriteTo​(JAXBElement<?> t, Class<?> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<String,​Object> httpHeaders, AsyncOutputStream outputStream)` | Write a type to an HTTP message using async IO.
    `protected boolean` | `isReadWritable​(Class<?> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)` |
    `JAXBElement<?>` | `readFrom​(Class<JAXBElement<?>> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<String,​String> httpHeaders, InputStream entityStream)` |
    `void` | `writeTo​(JAXBElement<?> t, Class<?> type, Type genericType, Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<String,​Object> httpHeaders, OutputStream outputStream)` |

    - ### Methods inherited from class org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider

      `decorateMarshaller, decorateUnmarshaller, findJAXBContext, getCharset, getMarshaller, isDisableDTDs, isDisableExternalEntities, isEnableSecureProcessingFeature, isReadable, isWriteable, needsSecurity, processWithSecureProcessing, setCharset, setDisableDTDs, setDisableExternalEntities, setEnableSecureProcessingFeature`

    - ### Methods inherited from class org.jboss.resteasy.plugins.providers.AbstractEntityProvider

      `getSize`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface javax.ws.rs.ext.MessageBodyWriter

      `getSize`

- - ### Constructor Detail

    - #### JAXBElementProvider

          public JAXBElementProvider()

  - ### Method Detail

    - #### isReadWritable

          protected boolean isReadWritable​(Class<?> type,
                                           Type genericType,
                                           Annotation[] annotations,
                                           javax.ws.rs.core.MediaType mediaType)

      Specified by:
        `isReadWritable` in class `AbstractJAXBProvider<JAXBElement<?>>`

    - #### readFrom

          public JAXBElement<?> readFrom​(Class<JAXBElement<?>> type,
                                         Type genericType,
                                         Annotation[] annotations,
                                         javax.ws.rs.core.MediaType mediaType,
                                         javax.ws.rs.core.MultivaluedMap<String,​String> httpHeaders,
                                         InputStream entityStream)
                                  throws IOException

      Specified by:
        `readFrom` in interface `javax.ws.rs.ext.MessageBodyReader<JAXBElement<?>>`
      Overrides:
        `readFrom` in class `AbstractJAXBProvider<JAXBElement<?>>`
      Throws:
        `IOException`

    - #### writeTo

          public void writeTo​(JAXBElement<?> t,
                              Class<?> type,
                              Type genericType,
                              Annotation[] annotations,
                              javax.ws.rs.core.MediaType mediaType,
                              javax.ws.rs.core.MultivaluedMap<String,​Object> httpHeaders,
                              OutputStream outputStream)
                       throws IOException

      Specified by:
        `writeTo` in interface `javax.ws.rs.ext.MessageBodyWriter<JAXBElement<?>>`
      Overrides:
        `writeTo` in class `AbstractJAXBProvider<JAXBElement<?>>`
      Throws:
        `IOException`

    - #### asyncWriteTo

          public CompletionStage<Void> asyncWriteTo​(JAXBElement<?> t,
                                                    Class<?> type,
                                                    Type genericType,
                                                    Annotation[] annotations,
                                                    javax.ws.rs.core.MediaType mediaType,
                                                    javax.ws.rs.core.MultivaluedMap<String,​Object> httpHeaders,
                                                    AsyncOutputStream outputStream)

      Description copied from interface: `AsyncMessageBodyWriter`
      Write a type to an HTTP message using async IO. The message header map is mutable but any changes must be made before writing to the async output stream since the headers will be flushed prior to writing the message body.
      Parameters:
        `t` - the instance to write.
        `type` - the class of instance that is to be written.
        `genericType` - the type of instance to be written. `GenericEntity` provides a way to specify this information at runtime.
        `annotations` - an array of the annotations attached to the message entity instance.
        `mediaType` - the media type of the HTTP entity.
        `httpHeaders` - a mutable map of the HTTP message headers.
        `outputStream` - the `AsyncOutputStream` for the HTTP entity. The implementation should not close the output stream.
      Returns:
        a `CompletionStage` indicating completion