public class MessageBodyFactory extends java.lang.Object implements MessageBodyWorkers
MessageBodyReader, MessageBodyWriter instances.| Modifier and Type | Class and Description |
|---|---|
static class |
MessageBodyFactory.Binder
Message body factory injection binder.
|
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. |
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 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 com.google.common.base.Function<ReaderModel,javax.ws.rs.ext.MessageBodyReader> |
MODEL_TO_READER |
private static com.google.common.base.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 org.glassfish.hk2.api.ServiceLocator |
serviceLocator |
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(org.glassfish.hk2.api.ServiceLocator locator,
javax.ws.rs.core.Configuration configuration)
Create new message body workers 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
MessageBodyReaders 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
MessageBodyWriters 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. |
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 final org.glassfish.hk2.api.ServiceLocator serviceLocator
private final java.lang.Boolean legacyProviderOrdering
private final java.util.List<ReaderModel> readers
private final 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 com.google.common.base.Function<WriterModel,javax.ws.rs.ext.MessageBodyWriter> MODEL_TO_WRITER
private static final com.google.common.base.Function<ReaderModel,javax.ws.rs.ext.MessageBodyReader> MODEL_TO_READER
@Inject
public MessageBodyFactory(org.glassfish.hk2.api.ServiceLocator locator,
@Optional
javax.ws.rs.core.Configuration configuration)
locator - service locator.configuration - configuration. Optional - can be null.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)
MessageBodyWorkersgetReaders in interface MessageBodyWorkersmediaType - 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)
MessageBodyWorkersgetWriters in interface MessageBodyWorkersmediaType - 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)
MessageBodyWorkersreadersToString in interface MessageBodyWorkersreaders - 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)
MessageBodyWorkerswritersToString in interface MessageBodyWorkerswriters - 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)
MessageBodyWorkersgetMessageBodyReader in interface MessageBodyWorkersT - 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)
MessageBodyWorkersgetMessageBodyReader in interface MessageBodyWorkersT - 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)
MessageBodyWorkersgetMessageBodyReaderMediaTypes in interface MessageBodyWorkerstype - 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)
MessageBodyWorkersgetMessageBodyWriter in interface MessageBodyWorkersT - 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)
MessageBodyWorkersgetMessageBodyWriter in interface MessageBodyWorkersT - 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)
MessageBodyWorkersgetMessageBodyWriterMediaTypes in interface MessageBodyWorkersc - 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)
MessageBodyWorkersMessageBodyWriters that are suitable for the given type. The list is sorted based on the
class hierarchy (most specific writers are first).getMessageBodyWritersForType in interface MessageBodyWorkerstype - the class of object writers are requested for.MessageBodyWriters for given class.public java.util.List<WriterModel> getWritersModelsForType(java.lang.Class<?> type)
MessageBodyWorkersMessageBodyWriter 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 MessageBodyWorkerstype - 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)
MessageBodyWorkersgetMessageBodyWriterMediaTypesByType in interface MessageBodyWorkerstype - the class of object that is to be written.public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyReaderMediaTypesByType(java.lang.Class<?> type)
MessageBodyWorkersgetMessageBodyReaderMediaTypesByType in interface MessageBodyWorkerstype - 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)
MessageBodyWorkersMessageBodyReaders that are suitable for the given type. The list is sorted based on the
class hierarchy (most specific readers are first).getMessageBodyReadersForType in interface MessageBodyWorkerstype - the class of object readers are requested for.MessageBodyReaders for given class.public java.util.List<ReaderModel> getReaderModelsForType(java.lang.Class<?> type)
MessageBodyWorkersMessageBodyReader 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 MessageBodyWorkerstype - 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)
MessageBodyWorkersgetMessageBodyWriterMediaType in interface MessageBodyWorkersc - 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
MessageBodyWorkersentityStream 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 MessageBodyWorkersrawType - 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
MessageBodyWorkersentityStream 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 MessageBodyWorkerst - 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.