org.glassfish.jersey.message

## Interface MessageBodyWorkers

    public interface MessageBodyWorkers

An injectable interface providing lookup of `MessageBodyReader` and `MessageBodyWriter` instances.

Author:
  Paul Sandoz
See Also:
  `Context`, `MessageBodyReader`, `MessageBodyWriter`

### Method Summary

All Methods Instance Methods Abstract Methods
`<T> jakarta.ws.rs.ext.MessageBodyReader<T>` `getMessageBodyReader(Class<T> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType)` Get a message body reader that matches a set of criteria.
`<T> jakarta.ws.rs.ext.MessageBodyReader<T>` `getMessageBodyReader(Class<T> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate)` Get a message body reader that matches a set of criteria.
`List<jakarta.ws.rs.core.MediaType>` `getMessageBodyReaderMediaTypes(Class<?> type, Type genericType, Annotation[] annotations)` Get the list of media types supported for a Java type.
`List<jakarta.ws.rs.core.MediaType>` `getMessageBodyReaderMediaTypesByType(Class<?> type)` Get the list of media types supported for a Java type.
`List<jakarta.ws.rs.ext.MessageBodyReader>` `getMessageBodyReadersForType(Class<?> type)` Get a list of `MessageBodyReader`s that are suitable for the given `type`.
`<T> jakarta.ws.rs.ext.MessageBodyWriter<T>` `getMessageBodyWriter(Class<T> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType)` Get a message body writer that matches a set of criteria.
`<T> jakarta.ws.rs.ext.MessageBodyWriter<T>` `getMessageBodyWriter(Class<T> type, Type genericType, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate)` Get a message body writer that matches a set of criteria.
`jakarta.ws.rs.core.MediaType` `getMessageBodyWriterMediaType(Class<?> type, Type genericType, Annotation[] annotations, List<jakarta.ws.rs.core.MediaType> acceptableMediaTypes)` Get the most acceptable media type supported for a Java type given a set of acceptable media types.
`List<jakarta.ws.rs.core.MediaType>` `getMessageBodyWriterMediaTypes(Class<?> type, Type genericType, Annotation[] annotations)` Get the list of media types supported for a Java type.
`List<jakarta.ws.rs.core.MediaType>` `getMessageBodyWriterMediaTypesByType(Class<?> type)` Get the list of media types supported for a Java type.
`List<jakarta.ws.rs.ext.MessageBodyWriter>` `getMessageBodyWritersForType(Class<?> type)` Get a list of `MessageBodyWriter`s that are suitable for the given `type`.
`List<ReaderModel>` `getReaderModelsForType(Class<?> type)` Get a list of `MessageBodyReader` models that are suitable for the given `type`.
`Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyReader>>` `getReaders(jakarta.ws.rs.core.MediaType mediaType)` Get the map of media type to list of message body writers that are compatible with a media type.
`Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyWriter>>` `getWriters(jakarta.ws.rs.core.MediaType mediaType)` Get the map of media type to list of message body writers that are compatible with a media type.
`List<WriterModel>` `getWritersModelsForType(Class<?> type)` Get a list of `MessageBodyWriter` models that are suitable for the given `type`.
`String` `readersToString(Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyReader>> readers)` Convert a map media type to list of message body readers to a string.

`Object`

`readFrom(Class<?> rawType, Type type, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, jakarta.ws.rs.core.MultivaluedMap<String,String> httpHeaders, org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate, InputStream entityStream, Iterable<jakarta.ws.rs.ext.ReaderInterceptor> readerInterceptors, boolean translateNce)`
Reads a type from the `entityStream` using interceptors.

`String` `writersToString(Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyWriter>> writers)` Convert a map media type to list of message body writers to a string.

`OutputStream`

`writeTo(Object entity, Class<?> rawType, Type type, Annotation[] annotations, jakarta.ws.rs.core.MediaType mediaType, jakarta.ws.rs.core.MultivaluedMap<String,Object> httpHeaders, org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate, OutputStream entityStream, Iterable<jakarta.ws.rs.ext.WriterInterceptor> writerInterceptors)`
Writers a type to the `entityStream` using interceptors.

### Method Detail

#### getReaders

    Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyReader>> getReaders(jakarta.ws.rs.core.MediaType mediaType)

Get the map of media type to list of message body writers that are compatible with a media type.

Parameters:
  `mediaType` - the compatible media type.
Returns:
  the map of media type to list of message body writers.

#### getWriters

    Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyWriter>> getWriters(jakarta.ws.rs.core.MediaType mediaType)

Get the map of media type to list of message body writers that are compatible with a media type.

Parameters:
  `mediaType` - the compatible media type.
Returns:
  the map of media type to list of message body writers.

#### readersToString

    String readersToString(Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyReader>> readers)

Convert a map media type to list of message body readers to a string.

Parameters:
  `readers` - the map media type to list of message body readers
Returns:
  the string representation.

#### writersToString

    String writersToString(Map<jakarta.ws.rs.core.MediaType,List<jakarta.ws.rs.ext.MessageBodyWriter>> writers)

Convert a map media type to list of message body writers to a string.

Parameters:
  `writers` - the map media type to list of message body readers
Returns:
  the string representation.

#### getMessageBodyReader

    <T> jakarta.ws.rs.ext.MessageBodyReader<T> getMessageBodyReader(Class<T> type,
                                                                    Type genericType,
                                                                    Annotation[] annotations,
                                                                    jakarta.ws.rs.core.MediaType mediaType)

Get a message body reader that matches a set of criteria.

Type Parameters:
  `T` - the type of object to be read.
Parameters:
  `type` - the class of object to be read.
  `genericType` - the type of object to be produced. E.g. if the message body is to be converted into a method parameter, this will be the formal type of the method parameter as returned by `Class.getGenericParameterTypes`.
  `annotations` - an array of the annotations on the declaration of the artifact that will be initialized with the produced instance. E.g. if the message body is to be converted into a method parameter, this will be the annotations on that parameter returned by `Class.getParameterAnnotations`.
  `mediaType` - the media type of the data that will be read, this will be compared to the values of `Consumes` for each candidate reader and only matching readers will be queried.
Returns:
  a MessageBodyReader that matches the supplied criteria or null if none is found.

#### getMessageBodyReader

    <T> jakarta.ws.rs.ext.MessageBodyReader<T> getMessageBodyReader(Class<T> type,
                                                                    Type genericType,
                                                                    Annotation[] annotations,
                                                                    jakarta.ws.rs.core.MediaType mediaType,
                                                                    org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate)

Get a message body reader that matches a set of criteria.

Type Parameters:
  `T` - the type of object to be read.
Parameters:
  `type` - the class of object to be read.
  `genericType` - the type of object to be produced. E.g. if the message body is to be converted into a method parameter, this will be the formal type of the method parameter as returned by `Class.getGenericParameterTypes`.
  `annotations` - an array of the annotations on the declaration of the artifact that will be initialized with the produced instance. E.g. if the message body is to be converted into a method parameter, this will be the annotations on that parameter returned by `Class.getParameterAnnotations`.
  `mediaType` - the media type of the data that will be read, this will be compared to the values of `Consumes` for each candidate reader and only matching readers will be queried.
  `propertiesDelegate` - request-scoped properties delegate.
Returns:
  a MessageBodyReader that matches the supplied criteria or null if none is found.

#### getMessageBodyWriter

    <T> jakarta.ws.rs.ext.MessageBodyWriter<T> getMessageBodyWriter(Class<T> type,
                                                                    Type genericType,
                                                                    Annotation[] annotations,
                                                                    jakarta.ws.rs.core.MediaType mediaType)

Get a message body writer that matches a set of criteria.

Type Parameters:
  `T` - the type of the object that is to be written.
Parameters:
  `type` - the class of object that is to be written.
  `genericType` - the type of object to be written. E.g. if the message body is to be produced from a field, this will be the declared type of the field as returned by `Field.getGenericType`.
  `annotations` - an array of the annotations on the declaration of the artifact that will be written. E.g. if the message body is to be produced from a field, this will be the annotations on that field returned by `Field.getDeclaredAnnotations`.
  `mediaType` - the media type of the data that will be written, this will be compared to the values of `Produces` for each candidate writer and only matching writers will be queried.
Returns:
  a MessageBodyReader that matches the supplied criteria or null if none is found.

#### getMessageBodyWriter

    <T> jakarta.ws.rs.ext.MessageBodyWriter<T> getMessageBodyWriter(Class<T> type,
                                                                    Type genericType,
                                                                    Annotation[] annotations,
                                                                    jakarta.ws.rs.core.MediaType mediaType,
                                                                    org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate)

Get a message body writer that matches a set of criteria.

Type Parameters:
  `T` - the type of the object that is to be written.
Parameters:
  `type` - the class of object that is to be written.
  `genericType` - the type of object to be written. E.g. if the message body is to be produced from a field, this will be the declared type of the field as returned by `Field.getGenericType`.
  `annotations` - an array of the annotations on the declaration of the artifact that will be written. E.g. if the message body is to be produced from a field, this will be the annotations on that field returned by `Field.getDeclaredAnnotations`.
  `mediaType` - the media type of the data that will be written, this will be compared to the values of `Produces` for each candidate writer and only matching writers will be queried.
  `propertiesDelegate` - request-scoped properties delegate.
Returns:
  a MessageBodyReader that matches the supplied criteria or null if none is found.

#### getMessageBodyReaderMediaTypes

    List<jakarta.ws.rs.core.MediaType> getMessageBodyReaderMediaTypes(Class<?> type,
                                                                      Type genericType,
                                                                      Annotation[] annotations)

Get the list of media types supported for a Java type.

Parameters:
  `type` - the class of object that is to be read.
  `genericType` - the type of object to be read. E.g. if the message body is to be read as a method parameter, this will be the declared type of the parameter as returned by `Method.getGenericParameterTypes`.
  `annotations` - an array of the annotations on the declaration of the artifact that will be read. E.g. if the message body is to be consumed as a method parameter, this will be the annotations on that parameter returned by `Method.getParameterAnnotations`.
Returns:
  the list of supported media types, the list is ordered as follows: a/b < a/* < \*\/*

#### getMessageBodyReaderMediaTypesByType

    List<jakarta.ws.rs.core.MediaType> getMessageBodyReaderMediaTypesByType(Class<?> type)

Get the list of media types supported for a Java type.

Parameters:
  `type` - the class of object that is to be read.
Returns:
  the list of supported media types, the list is ordered as follows: a/b < a/* < \*\/*

#### getMessageBodyReadersForType

    List<jakarta.ws.rs.ext.MessageBodyReader> getMessageBodyReadersForType(Class<?> type)

Get a list of `MessageBodyReader`s that are suitable for the given `type`. The list is sorted based on the class hierarchy (most specific readers are first).

Parameters:
  `type` - the class of object readers are requested for.
Returns:
  the list of supported `MessageBodyReader`s for given class.

#### getReaderModelsForType

    List<ReaderModel> getReaderModelsForType(Class<?> type)

Get a list of `MessageBodyReader` models that are suitable for the given `type`. The list is sorted based on the class hierarchy (most specific readers are first).

Parameters:
  `type` - the class of object readers are requested for.
Returns:
  the list of supported `MessageBodyReader` models for given class.
Since:
  2.16

#### getMessageBodyWriterMediaTypes

    List<jakarta.ws.rs.core.MediaType> getMessageBodyWriterMediaTypes(Class<?> type,
                                                                      Type genericType,
                                                                      Annotation[] annotations)

Get the list of media types supported for a Java type.

Parameters:
  `type` - the class of object that is to be written.
  `genericType` - the type of object to be written. E.g. if the message body is to be produced from a field, this will be the declared type of the field as returned by `Field.getGenericType`.
  `annotations` - an array of the annotations on the declaration of the artifact that will be written. E.g. if the message body is to be produced from a field, this will be the annotations on that field returned by `Field.getDeclaredAnnotations`.
Returns:
  the list of supported media types, the list is ordered as follows: a/b < a/* < \*\/*

#### getMessageBodyWriterMediaTypesByType

    List<jakarta.ws.rs.core.MediaType> getMessageBodyWriterMediaTypesByType(Class<?> type)

Get the list of media types supported for a Java type.

Parameters:
  `type` - the class of object that is to be written.
Returns:
  the list of supported media types, the list is ordered as follows: a/b < a/* < \*\/*

#### getMessageBodyWritersForType

    List<jakarta.ws.rs.ext.MessageBodyWriter> getMessageBodyWritersForType(Class<?> type)

Get a list of `MessageBodyWriter`s that are suitable for the given `type`. The list is sorted based on the class hierarchy (most specific writers are first).

Parameters:
  `type` - the class of object writers are requested for.
Returns:
  the list of supported `MessageBodyWriter`s for given class.

#### getWritersModelsForType

    List<WriterModel> getWritersModelsForType(Class<?> type)

Get a list of `MessageBodyWriter` models that are suitable for the given `type`. The list is sorted based on the class hierarchy (most specific writers are first).

Parameters:
  `type` - the class of object writers are requested for.
Returns:
  the list of supported `MessageBodyWriter` models for given class.
Since:
  2.16

#### getMessageBodyWriterMediaType

    jakarta.ws.rs.core.MediaType getMessageBodyWriterMediaType(Class<?> type,
                                                               Type genericType,
                                                               Annotation[] annotations,
                                                               List<jakarta.ws.rs.core.MediaType> acceptableMediaTypes)

Get the most acceptable media type supported for a Java type given a set of acceptable media types.

Parameters:
  `type` - the class of object that is to be written.
  `genericType` - the type of object to be written. E.g. if the message body is to be produced from a field, this will be the declared type of the field as returned by `Field.getGenericType`.
  `annotations` - an array of the annotations on the declaration of the artifact that will be written. E.g. if the message body is to be produced from a field, this will be the annotations on that field returned by `Field.getDeclaredAnnotations`.
  `acceptableMediaTypes` - the list of acceptable media types, sorted according to the quality with the media type of highest quality occurring first first.
Returns:
  the best media types

#### readFrom

    Object readFrom(Class<?> rawType,
                    Type type,
                    Annotation[] annotations,
                    jakarta.ws.rs.core.MediaType mediaType,
                    jakarta.ws.rs.core.MultivaluedMap<String,String> httpHeaders,
                    org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate,
                    InputStream entityStream,
                    Iterable<jakarta.ws.rs.ext.ReaderInterceptor> readerInterceptors,
                    boolean translateNce)
             throws jakarta.ws.rs.WebApplicationException,
                    IOException

Reads a type from the `entityStream` using interceptors. If the parameter `intercept` is true then `reader interceptors` are executed before calling the `message body reader`. The appropriate `message body reader` is chosen after the interceptor execution based on parameter passed to this method and modified by the interceptors.

Parameters:
  `rawType` - raw Java entity type.
  `type` - generic Java entity type.
  `annotations` - an array of the annotations on the declaration of the artifact that will be initialized with the produced instance. E.g. if the message body is to be converted into a method parameter, this will be the annotations on that parameter returned by `Method.getParameterAnnotations`.
  `mediaType` - the media type of the HTTP entity.
  `httpHeaders` - the mutable HTTP headers associated with HTTP entity.
  `propertiesDelegate` - request-scoped properties delegate.
  `entityStream` - the `InputStream` of the HTTP entity. The stream is not closed after reading the entity.
  `readerInterceptors` - Reader interceptor that are to be used to intercept the reading of an entity. The interceptors will be executed in the same order as given in this parameter.
  `translateNce` - if `true`, the `NoContentException` thrown by a selected message body reader will be translated into a `BadRequestException` as required by JAX-RS specification on the server side.
Returns:
  the entity that was read from the `entityStream`.
Throws:
  `jakarta.ws.rs.WebApplicationException` - Thrown when `message body reader` fails.
  `IOException` - Thrown when reading from the `entityStream` fails.

#### writeTo

    OutputStream writeTo(Object entity,
                         Class<?> rawType,
                         Type type,
                         Annotation[] annotations,
                         jakarta.ws.rs.core.MediaType mediaType,
                         jakarta.ws.rs.core.MultivaluedMap<String,Object> httpHeaders,
                         org.glassfish.jersey.internal.PropertiesDelegate propertiesDelegate,
                         OutputStream entityStream,
                         Iterable<jakarta.ws.rs.ext.WriterInterceptor> writerInterceptors)
                  throws IOException,
                         jakarta.ws.rs.WebApplicationException

Writers a type to the `entityStream` using interceptors. If the parameter `intercept` is true then `writer interceptors` are executed before calling the `message body writer`. The appropriate `message body writer` is chosen after the interceptor execution based on parameter passed to this method and modified by the interceptors.

Parameters:
  `entity` - Entity to be written to the entityStream
  `rawType` - raw Java entity type.
  `type` - generic Java entity type.
  `annotations` - an array of the annotations on the resource method that returns the object.
  `mediaType` - the media type of the HTTP entity.
  `httpHeaders` - the mutable HTTP headers associated with HTTP entity.
  `propertiesDelegate` - request-scoped properties delegate.
  `entityStream` - the `OutputStream` for the HTTP entity.
  `writerInterceptors` - Writer interceptor that are to be used to intercept the writing of an entity. The interceptors will be executed in the same order as given in this parameter.
Returns:
  Outer output stream that should be closed by the caller.
Throws:
  `jakarta.ws.rs.WebApplicationException` - Thrown when `message body reader` fails.
  `IOException` - Thrown when reading from the `entityStream` fails.