Class MessageBodyFactory
- java.lang.Object
-
- org.glassfish.jersey.message.internal.MessageBodyFactory
-
- All Implemented Interfaces:
MessageBodyWorkers
public class MessageBodyFactory extends java.lang.Object implements MessageBodyWorkers
A factory for managingMessageBodyReader,MessageBodyWriterinstances.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classMessageBodyFactory.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 classMessageBodyFactory.LegacyWorkerComparator<T>AbstractEntityProviderModelcomparator which works as it is described in JAX-RS 1.x specification.static classMessageBodyFactory.MessageBodyWorkersConfiguratorConfigurator which initializes and registerMessageBodyWorkersinstance intoInjectionManagerandBootstrapBag.private static classMessageBodyFactory.ModelLookupKeyprivate static classMessageBodyFactory.WorkerComparator<T>AbstractEntityProviderModelcomparator which works as it is described in JAX-RS 2.x specification.
-
Field Summary
Fields Modifier and Type Field Description private InjectionManagerinjectionManagerprivate java.lang.BooleanlegacyProviderOrderingprivate static java.util.logging.LoggerLOGGERprivate static intLOOKUP_CACHE_INITIAL_CAPACITYprivate static floatLOOKUP_CACHE_LOAD_FACTORprivate java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<ReaderModel>>mbrLookupCacheprivate java.util.Map<java.lang.Class<?>,java.util.List<ReaderModel>>mbrTypeLookupCacheprivate java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<WriterModel>>mbwLookupCacheprivate java.util.Map<java.lang.Class<?>,java.util.List<WriterModel>>mbwTypeLookupCachestatic KeyComparator<javax.ws.rs.core.MediaType>MEDIA_TYPE_KEY_COMPARATORMedia type comparator.private static java.util.function.Function<ReaderModel,javax.ws.rs.ext.MessageBodyReader>MODEL_TO_READERprivate static java.util.function.Function<WriterModel,javax.ws.rs.ext.MessageBodyWriter>MODEL_TO_WRITERprivate java.util.List<ReaderModel>readersprivate java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>>readersCacheprivate java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>>typeToMediaTypeReadersCacheprivate java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>>typeToMediaTypeWritersCacheprivate static java.util.Comparator<AbstractEntityProviderModel<?>>WORKER_BY_TYPE_COMPARATORCompares 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>writersprivate java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>>writersCache
-
Constructor Summary
Constructors Constructor Description MessageBodyFactory(javax.ws.rs.core.Configuration configuration)Create a new message body factory.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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 voidaddReaders(java.util.List<ReaderModel> models, java.util.Set<javax.ws.rs.ext.MessageBodyReader> readers, boolean custom)private static voidaddWriters(java.util.List<WriterModel> models, java.util.Set<javax.ws.rs.ext.MessageBodyWriter> writers, boolean custom)private static <T> voidgetCompatibleProvidersList(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> voidgetCompatibleProvidersMap(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 ofMessageBodyReaders that are suitable for the giventype.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.MediaTypegetMessageBodyWriterMediaType(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 ofMessageBodyWriters that are suitable for the giventype.java.util.List<ReaderModel>getReaderModelsForType(java.lang.Class<?> type)Get a list ofMessageBodyReadermodels that are suitable for the giventype.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 ofMessageBodyWritermodels that are suitable for the giventype.voidinitialize(InjectionManager injectionManager)Must be initialize at the time of completed populatedInjectionManager.private <T> booleanisCompatible(AbstractEntityProviderModel<T> model, java.lang.Class c, javax.ws.rs.core.MediaType mediaType)static booleanisReadable(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 invokesisReadablemethod on the supplied provider.static booleanisWriteable(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 invokesisWriteablemethod 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.StringreadersToString(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.ObjectreadFrom(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 theentityStreamusing interceptors.private <T> java.lang.StringtoString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> set)java.lang.StringwritersToString(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.OutputStreamwriteTo(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 theentityStreamusing interceptors.
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
MEDIA_TYPE_KEY_COMPARATOR
public static final KeyComparator<javax.ws.rs.core.MediaType> MEDIA_TYPE_KEY_COMPARATOR
Media type comparator.
-
WORKER_BY_TYPE_COMPARATOR
private static final 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.
-
injectionManager
private InjectionManager injectionManager
-
legacyProviderOrdering
private final java.lang.Boolean legacyProviderOrdering
-
readers
private java.util.List<ReaderModel> readers
-
writers
private java.util.List<WriterModel> writers
-
readersCache
private final java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> readersCache
-
writersCache
private final java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> writersCache
-
LOOKUP_CACHE_INITIAL_CAPACITY
private static final int LOOKUP_CACHE_INITIAL_CAPACITY
- See Also:
- Constant Field Values
-
LOOKUP_CACHE_LOAD_FACTOR
private static final float LOOKUP_CACHE_LOAD_FACTOR
- See Also:
- Constant Field Values
-
mbrTypeLookupCache
private final java.util.Map<java.lang.Class<?>,java.util.List<ReaderModel>> mbrTypeLookupCache
-
mbwTypeLookupCache
private final java.util.Map<java.lang.Class<?>,java.util.List<WriterModel>> mbwTypeLookupCache
-
typeToMediaTypeReadersCache
private final java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>> typeToMediaTypeReadersCache
-
typeToMediaTypeWritersCache
private final java.util.Map<java.lang.Class<?>,java.util.List<javax.ws.rs.core.MediaType>> typeToMediaTypeWritersCache
-
mbrLookupCache
private final java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<ReaderModel>> mbrLookupCache
-
mbwLookupCache
private final java.util.Map<MessageBodyFactory.ModelLookupKey,java.util.List<WriterModel>> mbwLookupCache
-
MODEL_TO_WRITER
private static final java.util.function.Function<WriterModel,javax.ws.rs.ext.MessageBodyWriter> MODEL_TO_WRITER
-
MODEL_TO_READER
private static final java.util.function.Function<ReaderModel,javax.ws.rs.ext.MessageBodyReader> MODEL_TO_READER
-
-
Method Detail
-
initialize
public void initialize(InjectionManager injectionManager)
Must be initialize at the time of completed populatedInjectionManager.- Parameters:
injectionManager- completed injection manager.
-
addReaders
private static void addReaders(java.util.List<ReaderModel> models, java.util.Set<javax.ws.rs.ext.MessageBodyReader> readers, boolean custom)
-
addWriters
private static void addWriters(java.util.List<WriterModel> models, java.util.Set<javax.ws.rs.ext.MessageBodyWriter> writers, boolean custom)
-
getReaders
public java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> getReaders(javax.ws.rs.core.MediaType mediaType)
Description copied from interface:MessageBodyWorkersGet the map of media type to list of message body writers that are compatible with a media type.- Specified by:
getReadersin interfaceMessageBodyWorkers- Parameters:
mediaType- the compatible media type.- Returns:
- the map of media type to list of message body writers.
-
getWriters
public java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> getWriters(javax.ws.rs.core.MediaType mediaType)
Description copied from interface:MessageBodyWorkersGet the map of media type to list of message body writers that are compatible with a media type.- Specified by:
getWritersin interfaceMessageBodyWorkers- Parameters:
mediaType- the compatible media type.- Returns:
- the map of media type to list of message body writers.
-
readersToString
public java.lang.String readersToString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyReader>> readers)
Description copied from interface:MessageBodyWorkersConvert a map media type to list of message body readers to a string.- Specified by:
readersToStringin interfaceMessageBodyWorkers- Parameters:
readers- the map media type to list of message body readers- Returns:
- the string representation.
-
writersToString
public java.lang.String writersToString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<javax.ws.rs.ext.MessageBodyWriter>> writers)
Description copied from interface:MessageBodyWorkersConvert a map media type to list of message body writers to a string.- Specified by:
writersToStringin interfaceMessageBodyWorkers- Parameters:
writers- the map media type to list of message body readers- Returns:
- the string representation.
-
toString
private <T> java.lang.String toString(java.util.Map<javax.ws.rs.core.MediaType,java.util.List<T>> set)
-
getMessageBodyReader
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)Description copied from interface:MessageBodyWorkersGet a message body reader that matches a set of criteria.- Specified by:
getMessageBodyReaderin interfaceMessageBodyWorkers- Type Parameters:
T- the type of object to be read.- Parameters:
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 byClass.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 byClass.getParameterAnnotations.mediaType- the media type of the data that will be read, this will be compared to the values ofConsumesfor 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
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)Description copied from interface:MessageBodyWorkersGet a message body reader that matches a set of criteria.- Specified by:
getMessageBodyReaderin interfaceMessageBodyWorkers- Type Parameters:
T- the type of object to be read.- Parameters:
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 byClass.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 byClass.getParameterAnnotations.mediaType- the media type of the data that will be read, this will be compared to the values ofConsumesfor 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.
-
getMessageBodyReaderMediaTypes
public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyReaderMediaTypes(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations)Description copied from interface:MessageBodyWorkersGet the list of media types supported for a Java type.- Specified by:
getMessageBodyReaderMediaTypesin interfaceMessageBodyWorkers- 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 byMethod.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 byMethod.getParameterAnnotations.- Returns:
- the list of supported media types, the list is ordered as follows: a/b < a/* < *\\/*
-
isCompatible
private <T> boolean isCompatible(AbstractEntityProviderModel<T> model, java.lang.Class c, javax.ws.rs.core.MediaType mediaType)
-
_getMessageBodyReader
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)
-
_getMessageBodyReader
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)
-
getMessageBodyWriter
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)Description copied from interface:MessageBodyWorkersGet a message body writer that matches a set of criteria.- Specified by:
getMessageBodyWriterin interfaceMessageBodyWorkers- Type Parameters:
T- the type of the object that is to be written.- Parameters:
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 byField.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 byField.getDeclaredAnnotations.mediaType- the media type of the data that will be written, this will be compared to the values ofProducesfor 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
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)Description copied from interface:MessageBodyWorkersGet a message body writer that matches a set of criteria.- Specified by:
getMessageBodyWriterin interfaceMessageBodyWorkers- Type Parameters:
T- the type of the object that is to be written.- Parameters:
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 byField.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 byField.getDeclaredAnnotations.mediaType- the media type of the data that will be written, this will be compared to the values ofProducesfor 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.
-
_getMessageBodyWriter
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)
-
_getMessageBodyWriter
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)
-
getCompatibleProvidersMap
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)
-
getCompatibleProvidersList
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)
-
getMessageBodyWriterMediaTypes
public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyWriterMediaTypes(java.lang.Class<?> c, java.lang.reflect.Type t, java.lang.annotation.Annotation[] as)Description copied from interface:MessageBodyWorkersGet the list of media types supported for a Java type.- Specified by:
getMessageBodyWriterMediaTypesin interfaceMessageBodyWorkers- Parameters:
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 byField.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 byField.getDeclaredAnnotations.- Returns:
- the list of supported media types, the list is ordered as follows: a/b < a/* < *\\/*
-
getMessageBodyWritersForType
public java.util.List<javax.ws.rs.ext.MessageBodyWriter> getMessageBodyWritersForType(java.lang.Class<?> type)
Description copied from interface:MessageBodyWorkersGet a list ofMessageBodyWriters that are suitable for the giventype. The list is sorted based on the class hierarchy (most specific writers are first).- Specified by:
getMessageBodyWritersForTypein interfaceMessageBodyWorkers- Parameters:
type- the class of object writers are requested for.- Returns:
- the list of supported
MessageBodyWriters for given class.
-
getWritersModelsForType
public java.util.List<WriterModel> getWritersModelsForType(java.lang.Class<?> type)
Description copied from interface:MessageBodyWorkersGet a list ofMessageBodyWritermodels that are suitable for the giventype. The list is sorted based on the class hierarchy (most specific writers are first).- Specified by:
getWritersModelsForTypein interfaceMessageBodyWorkers- Parameters:
type- the class of object writers are requested for.- Returns:
- the list of supported
MessageBodyWritermodels for given class.
-
processMessageBodyWritersForType
private java.util.List<WriterModel> processMessageBodyWritersForType(java.lang.Class<?> clazz)
-
getMessageBodyWriterMediaTypesByType
public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyWriterMediaTypesByType(java.lang.Class<?> type)
Description copied from interface:MessageBodyWorkersGet the list of media types supported for a Java type.- Specified by:
getMessageBodyWriterMediaTypesByTypein interfaceMessageBodyWorkers- 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/* < *\\/*
-
getMessageBodyReaderMediaTypesByType
public java.util.List<javax.ws.rs.core.MediaType> getMessageBodyReaderMediaTypesByType(java.lang.Class<?> type)
Description copied from interface:MessageBodyWorkersGet the list of media types supported for a Java type.- Specified by:
getMessageBodyReaderMediaTypesByTypein interfaceMessageBodyWorkers- 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/* < *\\/*
-
getMessageBodyWorkersMediaTypesByType
private static <T> java.util.List<javax.ws.rs.core.MediaType> getMessageBodyWorkersMediaTypesByType(java.util.List<? extends AbstractEntityProviderModel<T>> workerModels)
-
getMessageBodyReadersForType
public java.util.List<javax.ws.rs.ext.MessageBodyReader> getMessageBodyReadersForType(java.lang.Class<?> type)
Description copied from interface:MessageBodyWorkersGet a list ofMessageBodyReaders that are suitable for the giventype. The list is sorted based on the class hierarchy (most specific readers are first).- Specified by:
getMessageBodyReadersForTypein interfaceMessageBodyWorkers- Parameters:
type- the class of object readers are requested for.- Returns:
- the list of supported
MessageBodyReaders for given class.
-
getReaderModelsForType
public java.util.List<ReaderModel> getReaderModelsForType(java.lang.Class<?> type)
Description copied from interface:MessageBodyWorkersGet a list ofMessageBodyReadermodels that are suitable for the giventype. The list is sorted based on the class hierarchy (most specific readers are first).- Specified by:
getReaderModelsForTypein interfaceMessageBodyWorkers- Parameters:
type- the class of object readers are requested for.- Returns:
- the list of supported
MessageBodyReadermodels for given class.
-
processMessageBodyReadersForType
private java.util.List<ReaderModel> processMessageBodyReadersForType(java.lang.Class<?> clazz)
-
getMessageBodyWriterMediaType
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)Description copied from interface:MessageBodyWorkersGet the most acceptable media type supported for a Java type given a set of acceptable media types.- Specified by:
getMessageBodyWriterMediaTypein interfaceMessageBodyWorkers- Parameters:
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 byField.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 byField.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
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.IOExceptionDescription copied from interface:MessageBodyWorkersReads a type from theentityStreamusing interceptors. If the parameterinterceptis true thenreader interceptorsare executed before calling themessage body reader. The appropriatemessage body readeris chosen after the interceptor execution based on parameter passed to this method and modified by the interceptors.- Specified by:
readFromin interfaceMessageBodyWorkers- 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 byMethod.getParameterAnnotations.mediaType- the media type of the HTTP entity.httpHeaders- the mutable HTTP headers associated with HTTP entity.propertiesDelegate- request-scoped properties delegate.entityStream- theInputStreamof 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- iftrue, theNoContentExceptionthrown by a selected message body reader will be translated into aBadRequestExceptionas required by JAX-RS specification on the server side.- Returns:
- the entity that was read from the
entityStream. - Throws:
javax.ws.rs.WebApplicationException- Thrown whenmessage body readerfails.java.io.IOException- Thrown when reading from theentityStreamfails.
-
writeTo
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.WebApplicationExceptionDescription copied from interface:MessageBodyWorkersWriters a type to theentityStreamusing interceptors. If the parameterinterceptis true thenwriter interceptorsare executed before calling themessage body writer. The appropriatemessage body writeris chosen after the interceptor execution based on parameter passed to this method and modified by the interceptors.- Specified by:
writeToin interfaceMessageBodyWorkers- Parameters:
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- theOutputStreamfor 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:
java.io.IOException- Thrown when reading from theentityStreamfails.javax.ws.rs.WebApplicationException- Thrown whenmessage body readerfails.
-
isWriteable
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)Safely invokesisWriteablemethod on the supplied provider. Any exceptions will be logged at finer level.- Parameters:
provider- message body writer on which theisWriteableshould 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.GenericEntityprovides 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.- Returns:
trueif the type is supported, otherwisefalse.
-
isReadable
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)Safely invokesisReadablemethod on the supplied provider. Any exceptions will be logged at finer level.- Parameters:
provider- message body reader on which theisReadableshould be invoked. Safely invokesisReadablemethod 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 byMethod.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 byMethod.getParameterAnnotations.mediaType- the media type of the HTTP entity, if one is not specified in the request thenapplication/octet-streamis used.- Returns:
trueif the type is supported, otherwisefalse.
-
-