public class MessageBodyFactory extends java.lang.Object implements MessageBodyWorkers
MessageBodyReader
, MessageBodyWriter
instances.Modifier and Type | Class and Description |
---|---|
private static class |
MessageBodyFactory.DeclarationDistanceComparator<T>
Compares 2 instances implementing/inheriting the same super-type and returns
which of the two instances has the super-type declaration closer in it's
inheritance hierarchy tree.
|
private static class |
MessageBodyFactory.LegacyWorkerComparator<T>
AbstractEntityProviderModel comparator which
works as it is described in JAX-RS 1.x specification. |
static class |
MessageBodyFactory.MessageBodyWorkersConfigurator
Configurator which initializes and register
MessageBodyWorkers instance into InjectionManager and
BootstrapBag . |
private static class |
MessageBodyFactory.ModelLookupKey |
private static class |
MessageBodyFactory.WorkerComparator<T>
AbstractEntityProviderModel comparator
which works as it is described in JAX-RS 2.x specification. |
Modifier and Type | Field and Description |
---|---|
private InjectionManager |
injectionManager |
private java.lang.Boolean |
legacyProviderOrdering |
private static java.util.logging.Logger |
LOGGER |
private static int |
LOOKUP_CACHE_INITIAL_CAPACITY |
private static float |
LOOKUP_CACHE_LOAD_FACTOR |
private java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<ReaderModel>> |
mbrLookupCache |
private java.util.Map<java.lang.Class<?>,java.util.List<ReaderModel>> |
mbrTypeLookupCache |
private java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<WriterModel>> |
mbwLookupCache |
private java.util.Map<java.lang.Class<?>,java.util.List<WriterModel>> |
mbwTypeLookupCache |
static KeyComparator<javax.ws.rs.core.MediaType> |
MEDIA_TYPE_KEY_COMPARATOR
Media type comparator.
|
private static java.util.function.Function<ReaderModel,javax.ws.rs.ext.MessageBodyReader> |
MODEL_TO_READER |
private static java.util.function.Function<WriterModel,javax.ws.rs.ext.MessageBodyWriter> |
MODEL_TO_WRITER |
private java.util.List<ReaderModel> |
readers |
private java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> |
readersCache |
private java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>> |
typeToMediaTypeReadersCache |
private java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>> |
typeToMediaTypeWritersCache |
private static java.util.Comparator<AbstractEntityProviderModel<?>> |
WORKER_BY_TYPE_COMPARATOR
Compares entity providers by the provided class (most specific first)
and then by the declared supported media types, if the provided classes
are the same.
|
private java.util.List<WriterModel> |
writers |
private java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> |
writersCache |
Constructor and Description |
---|
MessageBodyFactory(javax.ws.rs.core.Configuration configuration)
Create a new message body factory.
|
Modifier and Type | Method and Description |
---|---|
private <T> javax.ws.rs.ext.MessageBodyReader<T> |
_getMessageBodyReader(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType,
java.util.List<ReaderModel> models,
PropertiesDelegate propertiesDelegate) |
private <T> javax.ws.rs.ext.MessageBodyReader<T> |
_getMessageBodyReader(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType,
javax.ws.rs.core.MediaType lookup,
PropertiesDelegate propertiesDelegate) |
private <T> javax.ws.rs.ext.MessageBodyWriter<T> |
_getMessageBodyWriter(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType,
java.util.List<WriterModel> models,
PropertiesDelegate propertiesDelegate) |
private <T> javax.ws.rs.ext.MessageBodyWriter<T> |
_getMessageBodyWriter(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType,
javax.ws.rs.core.MediaType lookup,
PropertiesDelegate propertiesDelegate) |
private static void |
addReaders(java.util.List<ReaderModel> models,
java.util.Set<javax.ws.rs.ext.MessageBodyReader> readers,
boolean custom) |
private static void |
addWriters(java.util.List<WriterModel> models,
java.util.Set<javax.ws.rs.ext.MessageBodyWriter> writers,
boolean custom) |
private static <T> void |
getCompatibleProvidersList(javax.ws.rs.core.MediaType mediaType,
java.util.List<? extends AbstractEntityProviderModel<T>> set,
java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> subSet) |
private static <T> void |
getCompatibleProvidersMap(javax.ws.rs.core.MediaType mediaType,
java.util.List<? extends AbstractEntityProviderModel<T>> set,
java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> subSet) |
<T> javax.ws.rs.ext.MessageBodyReader<T> |
getMessageBodyReader(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType)
Get a message body reader that matches a set of criteria.
|
<T> javax.ws.rs.ext.MessageBodyReader<T> |
getMessageBodyReader(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType,
PropertiesDelegate propertiesDelegate)
Get a message body reader that matches a set of criteria.
|
java.util.List<javax.ws.rs.core.MediaType> |
getMessageBodyReaderMediaTypes(java.lang.Class<?> type,
java.lang.reflect.Type genericType,
java.lang.annotation.Annotation[] annotations)
Get the list of media types supported for a Java type.
|
java.util.List<javax.ws.rs.core.MediaType> |
getMessageBodyReaderMediaTypesByType(java.lang.Class<?> type)
Get the list of media types supported for a Java type.
|
java.util.List<javax.ws.rs.ext.MessageBodyReader> |
getMessageBodyReadersForType(java.lang.Class<?> type)
Get a list of
MessageBodyReader s that are suitable for the given type . |
private static <T> java.util.List<javax.ws.rs.core.MediaType> |
getMessageBodyWorkersMediaTypesByType(java.util.List<? extends AbstractEntityProviderModel<T>> workerModels) |
<T> javax.ws.rs.ext.MessageBodyWriter<T> |
getMessageBodyWriter(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType)
Get a message body writer that matches a set of criteria.
|
<T> javax.ws.rs.ext.MessageBodyWriter<T> |
getMessageBodyWriter(java.lang.Class<T> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
javax.ws.rs.core.MediaType mediaType,
PropertiesDelegate propertiesDelegate)
Get a message body writer that matches a set of criteria.
|
javax.ws.rs.core.MediaType |
getMessageBodyWriterMediaType(java.lang.Class<?> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as,
java.util.List<javax.ws.rs.core.MediaType> acceptableMediaTypes)
Get the most acceptable media type supported for a Java type given a set of
acceptable media types.
|
java.util.List<javax.ws.rs.core.MediaType> |
getMessageBodyWriterMediaTypes(java.lang.Class<?> c,
java.lang.reflect.Type t,
java.lang.annotation.Annotation[] as)
Get the list of media types supported for a Java type.
|
java.util.List<javax.ws.rs.core.MediaType> |
getMessageBodyWriterMediaTypesByType(java.lang.Class<?> type)
Get the list of media types supported for a Java type.
|
java.util.List<javax.ws.rs.ext.MessageBodyWriter> |
getMessageBodyWritersForType(java.lang.Class<?> type)
Get a list of
MessageBodyWriter s that are suitable for the given type . |
java.util.List<ReaderModel> |
getReaderModelsForType(java.lang.Class<?> type)
Get a list of
MessageBodyReader models that are suitable for the given type . |
java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> |
getReaders(javax.ws.rs.core.MediaType mediaType)
Get the map of media type to list of message body writers that are compatible with
a media type.
|
java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> |
getWriters(javax.ws.rs.core.MediaType mediaType)
Get the map of media type to list of message body writers that are compatible with
a media type.
|
java.util.List<WriterModel> |
getWritersModelsForType(java.lang.Class<?> type)
Get a list of
MessageBodyWriter models that are suitable for the given type . |
void |
initialize(InjectionManager injectionManager)
Must be initialize at the time of completed populated
InjectionManager . |
private <T> boolean |
isCompatible(AbstractEntityProviderModel<T> model,
java.lang.Class c,
javax.ws.rs.core.MediaType mediaType) |
static boolean |
isReadable(javax.ws.rs.ext.MessageBodyReader<?> provider,
java.lang.Class<?> type,
java.lang.reflect.Type genericType,
java.lang.annotation.Annotation[] annotations,
javax.ws.rs.core.MediaType mediaType)
Safely invokes
isReadable method on the supplied provider. |
static boolean |
isWriteable(javax.ws.rs.ext.MessageBodyWriter<?> provider,
java.lang.Class<?> type,
java.lang.reflect.Type genericType,
java.lang.annotation.Annotation[] annotations,
javax.ws.rs.core.MediaType mediaType)
Safely invokes
isWriteable method on the supplied provider. |
private java.util.List<ReaderModel> |
processMessageBodyReadersForType(java.lang.Class<?> clazz) |
private java.util.List<WriterModel> |
processMessageBodyWritersForType(java.lang.Class<?> clazz) |
java.lang.String |
readersToString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> readers)
Convert a map media type to list of message body readers to a string.
|
java.lang.Object |
readFrom(java.lang.Class<?> rawType,
java.lang.reflect.Type type,
java.lang.annotation.Annotation[] annotations,
javax.ws.rs.core.MediaType mediaType,
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> httpHeaders,
PropertiesDelegate propertiesDelegate,
java.io.InputStream entityStream,
java.lang.Iterable<javax.ws.rs.ext.ReaderInterceptor> readerInterceptors,
boolean translateNce)
Reads a type from the
entityStream using interceptors. |
private <T> java.lang.String |
toString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> set) |
java.lang.String |
writersToString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> writers)
Convert a map media type to list of message body writers to a string.
|
java.io.OutputStream |
writeTo(java.lang.Object t,
java.lang.Class<?> rawType,
java.lang.reflect.Type type,
java.lang.annotation.Annotation[] annotations,
javax.ws.rs.core.MediaType mediaType,
javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> httpHeaders,
PropertiesDelegate propertiesDelegate,
java.io.OutputStream entityStream,
java.lang.Iterable<javax.ws.rs.ext.WriterInterceptor> writerInterceptors)
Writers a type to the
entityStream using interceptors. |
private static final java.util.logging.Logger LOGGER
public static final KeyComparator<javax.ws.rs.core.MediaType> MEDIA_TYPE_KEY_COMPARATOR
private static final java.util.Comparator<AbstractEntityProviderModel<?>> WORKER_BY_TYPE_COMPARATOR
private InjectionManager injectionManager
private final java.lang.Boolean legacyProviderOrdering
private java.util.List<ReaderModel> readers
private java.util.List<WriterModel> writers
private final java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> readersCache
private final java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> writersCache
private static final int LOOKUP_CACHE_INITIAL_CAPACITY
private static final float LOOKUP_CACHE_LOAD_FACTOR
private final java.util.Map<java.lang.Class<?>,java.util.List<ReaderModel>> mbrTypeLookupCache
private final java.util.Map<java.lang.Class<?>,java.util.List<WriterModel>> mbwTypeLookupCache
private final java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>> typeToMediaTypeReadersCache
private final java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>> typeToMediaTypeWritersCache
private final java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<ReaderModel>> mbrLookupCache
private final java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<WriterModel>> mbwLookupCache
private static final java.util.function.Function<WriterModel,javax.ws.rs.ext.MessageBodyWriter> MODEL_TO_WRITER
private static final java.util.function.Function<ReaderModel,javax.ws.rs.ext.MessageBodyReader> MODEL_TO_READER
public MessageBodyFactory(javax.ws.rs.core.Configuration configuration)
configuration
- configuration. Optional - can be null.public void initialize(InjectionManager injectionManager)
InjectionManager
.injectionManager
- completed injection manager.private static void addReaders(java.util.List<ReaderModel> models, java.util.Set<javax.ws.rs.ext.MessageBodyReader> readers, boolean custom)
private static void addWriters(java.util.List<WriterModel> models, java.util.Set<javax.ws.rs.ext.MessageBodyWriter> writers, boolean custom)
public java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> getReaders(javax.ws.rs.core.MediaType mediaType)
MessageBodyWorkers
getReaders
in interface MessageBodyWorkers
mediaType
- the compatible media type.public java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> getWriters(javax.ws.rs.core.MediaType mediaType)
MessageBodyWorkers
getWriters
in interface MessageBodyWorkers
mediaType
- the compatible media type.public java.lang.String readersToString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> readers)
MessageBodyWorkers
readersToString
in interface MessageBodyWorkers
readers
- the map media type to list of message body readerspublic java.lang.String writersToString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> writers)
MessageBodyWorkers
writersToString
in interface MessageBodyWorkers
writers
- the map media type to list of message body readersprivate <T> java.lang.String toString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> set)
public <T> javax.ws.rs.ext.MessageBodyReader<T> getMessageBodyReader(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType)
MessageBodyWorkers
getMessageBodyReader
in interface MessageBodyWorkers
T
- the type of object to be read.c
- the class of object to be read.t
- 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
.as
- 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.public <T> javax.ws.rs.ext.MessageBodyReader<T> getMessageBodyReader(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType, PropertiesDelegate propertiesDelegate)
MessageBodyWorkers
getMessageBodyReader
in interface MessageBodyWorkers
T
- the type of object to be read.c
- the class of object to be read.t
- 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
.as
- 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.public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyReaderMediaTypes(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations)
MessageBodyWorkers
getMessageBodyReaderMediaTypes
in interface MessageBodyWorkers
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
.private <T> boolean isCompatible(AbstractEntityProviderModel<T> model, java.lang.Class c, javax.ws.rs.core.MediaType mediaType)
private <T> javax.ws.rs.ext.MessageBodyReader<T> _getMessageBodyReader(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType, java.util.List<ReaderModel> models, PropertiesDelegate propertiesDelegate)
private <T> javax.ws.rs.ext.MessageBodyReader<T> _getMessageBodyReader(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MediaType lookup, PropertiesDelegate propertiesDelegate)
public <T> javax.ws.rs.ext.MessageBodyWriter<T> getMessageBodyWriter(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType)
MessageBodyWorkers
getMessageBodyWriter
in interface MessageBodyWorkers
T
- the type of the object that is to be written.c
- the class of object that is to be written.t
- 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
.as
- 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.public <T> javax.ws.rs.ext.MessageBodyWriter<T> getMessageBodyWriter(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType, PropertiesDelegate propertiesDelegate)
MessageBodyWorkers
getMessageBodyWriter
in interface MessageBodyWorkers
T
- the type of the object that is to be written.c
- the class of object that is to be written.t
- 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
.as
- 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.private <T> javax.ws.rs.ext.MessageBodyWriter<T> _getMessageBodyWriter(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType, java.util.List<WriterModel> models, PropertiesDelegate propertiesDelegate)
private <T> javax.ws.rs.ext.MessageBodyWriter<T> _getMessageBodyWriter(java.lang.Class<T> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MediaType lookup, PropertiesDelegate propertiesDelegate)
private static <T> void getCompatibleProvidersMap(javax.ws.rs.core.MediaType mediaType, java.util.List<? extends AbstractEntityProviderModel<T>> set, java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> subSet)
private static <T> void getCompatibleProvidersList(javax.ws.rs.core.MediaType mediaType, java.util.List<? extends AbstractEntityProviderModel<T>> set, java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> subSet)
public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyWriterMediaTypes(java.lang.Class<?> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as)
MessageBodyWorkers
getMessageBodyWriterMediaTypes
in interface MessageBodyWorkers
c
- the class of object that is to be written.t
- 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
.as
- 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
.public java.util.List<javax.ws.rs.ext.MessageBodyWriter> getMessageBodyWritersForType(java.lang.Class<?> type)
MessageBodyWorkers
MessageBodyWriter
s that are suitable for the given type
. The list is sorted based on the
class hierarchy (most specific writers are first).getMessageBodyWritersForType
in interface MessageBodyWorkers
type
- the class of object writers are requested for.MessageBodyWriter
s for given class.public java.util.List<WriterModel> getWritersModelsForType(java.lang.Class<?> type)
MessageBodyWorkers
MessageBodyWriter
models that are suitable for the given type
.
The list is sorted based on the class hierarchy (most specific writers are first).getWritersModelsForType
in interface MessageBodyWorkers
type
- the class of object writers are requested for.MessageBodyWriter
models for given class.private java.util.List<WriterModel> processMessageBodyWritersForType(java.lang.Class<?> clazz)
public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyWriterMediaTypesByType(java.lang.Class<?> type)
MessageBodyWorkers
getMessageBodyWriterMediaTypesByType
in interface MessageBodyWorkers
type
- the class of object that is to be written.public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyReaderMediaTypesByType(java.lang.Class<?> type)
MessageBodyWorkers
getMessageBodyReaderMediaTypesByType
in interface MessageBodyWorkers
type
- the class of object that is to be read.private static <T> java.util.List<javax.ws.rs.core.MediaType> getMessageBodyWorkersMediaTypesByType(java.util.List<? extends AbstractEntityProviderModel<T>> workerModels)
public java.util.List<javax.ws.rs.ext.MessageBodyReader> getMessageBodyReadersForType(java.lang.Class<?> type)
MessageBodyWorkers
MessageBodyReader
s that are suitable for the given type
. The list is sorted based on the
class hierarchy (most specific readers are first).getMessageBodyReadersForType
in interface MessageBodyWorkers
type
- the class of object readers are requested for.MessageBodyReader
s for given class.public java.util.List<ReaderModel> getReaderModelsForType(java.lang.Class<?> type)
MessageBodyWorkers
MessageBodyReader
models that are suitable for the given type
.
The list is sorted based on the class hierarchy (most specific readers are first).getReaderModelsForType
in interface MessageBodyWorkers
type
- the class of object readers are requested for.MessageBodyReader
models for given class.private java.util.List<ReaderModel> processMessageBodyReadersForType(java.lang.Class<?> clazz)
public javax.ws.rs.core.MediaType getMessageBodyWriterMediaType(java.lang.Class<?> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as, java.util.List<javax.ws.rs.core.MediaType> acceptableMediaTypes)
MessageBodyWorkers
getMessageBodyWriterMediaType
in interface MessageBodyWorkers
c
- the class of object that is to be written.t
- 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
.as
- 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.public java.lang.Object readFrom(java.lang.Class<?> rawType, java.lang.reflect.Type type, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.String> httpHeaders, PropertiesDelegate propertiesDelegate, java.io.InputStream entityStream, java.lang.Iterable<javax.ws.rs.ext.ReaderInterceptor> readerInterceptors, boolean translateNce) throws javax.ws.rs.WebApplicationException, java.io.IOException
MessageBodyWorkers
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.readFrom
in interface MessageBodyWorkers
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.entityStream
.javax.ws.rs.WebApplicationException
- Thrown when message body
reader
fails.java.io.IOException
- Thrown when reading from the entityStream
fails.public java.io.OutputStream writeTo(java.lang.Object t, java.lang.Class<?> rawType, java.lang.reflect.Type type, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType, javax.ws.rs.core.MultivaluedMap<java.lang.String,java.lang.Object> httpHeaders, PropertiesDelegate propertiesDelegate, java.io.OutputStream entityStream, java.lang.Iterable<javax.ws.rs.ext.WriterInterceptor> writerInterceptors) throws java.io.IOException, javax.ws.rs.WebApplicationException
MessageBodyWorkers
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.writeTo
in interface MessageBodyWorkers
t
- Entity to be written to the entityStreamrawType
- 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.java.io.IOException
- Thrown when reading from the entityStream
fails.javax.ws.rs.WebApplicationException
- Thrown when message body
reader
fails.public static boolean isWriteable(javax.ws.rs.ext.MessageBodyWriter<?> provider, java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)
isWriteable
method on the supplied provider.
Any exceptions will be logged at finer level.provider
- message body writer on which the isWriteable
should be invoked.type
- the class of instance that is to be written.genericType
- the type of instance to be written, obtained either
by reflection of a resource method return type or via inspection
of the returned instance. 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.true
if the type is supported, otherwise false
.public static boolean isReadable(javax.ws.rs.ext.MessageBodyReader<?> provider, java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType)
isReadable
method on the supplied provider.
Any exceptions will be logged at finer level.provider
- message body reader on which the isReadable
should be invoked.
Safely invokes isReadable
method on the underlying
provider.type
- the class of instance to be produced.genericType
- the type of instance 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
Method.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
Method.getParameterAnnotations
.mediaType
- the media type of the HTTP entity, if one is not
specified in the request then application/octet-stream
is
used.true
if the type is supported, otherwise false
.