Interface MessageBodyReader<T>
-
- Type Parameters:
T- Java type supported by the provider
public interface MessageBodyReader<T>Contract for a provider that supports the conversion of a stream to a Java type. AMessageBodyReaderimplementation may be annotated withConsumesto restrict the media types for which it will be considered suitable.Providers implementing
MessageBodyReadercontract must be either programmatically registered in a JAX-RS runtime or must be annotated with@Providerannotation to be automatically discovered by the JAX-RS runtime during a provider scanning phase.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description booleanisReadable(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, MediaType mediaType)Ascertain if the MessageBodyReader can produce an instance of a particular type.TreadFrom(java.lang.Class<T> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, MediaType mediaType, MultivaluedMap<java.lang.String,java.lang.String> httpHeaders, java.io.InputStream entityStream)Read a type from theInputStream.
-
-
-
Method Detail
-
isReadable
boolean isReadable(java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, MediaType mediaType)Ascertain if the MessageBodyReader can produce an instance of a particular type. Thetypeparameter gives the class of the instance that should be produced, thegenericTypeparameter gives thejava.lang.reflect.Typeof the instance that should be produced. E.g. if the instance to be produced isList<String>, thetypeparameter will bejava.util.Listand thegenericTypeparameter will bejava.lang.reflect.ParameterizedType.- Parameters:
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.
-
readFrom
T readFrom(java.lang.Class<T> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, MediaType mediaType, MultivaluedMap<java.lang.String,java.lang.String> httpHeaders, java.io.InputStream entityStream) throws java.io.IOException, WebApplicationException
Read a type from theInputStream.In case the entity input stream is empty, the reader is expected to either return a Java representation of a zero-length entity or throw a
NoContentExceptionin case no zero-length entity representation is defined for the supported Java type. ANoContentException, if thrown by a message body reader while reading a server request entity, is automatically translated by JAX-RS server runtime into aBadRequestExceptionwrapping the originalNoContentExceptionand rethrown for a standard processing by the registeredexception mappers.- Parameters:
type- the type that is to be read from the entity stream.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.httpHeaders- the read-only HTTP headers associated with HTTP entity.entityStream- theInputStreamof the HTTP entity. The caller is responsible for ensuring that the input stream ends when the entity has been consumed. The implementation should not close the input stream.- Returns:
- the type that was read from the stream. In case the entity input stream is empty, the reader
is expected to either return an instance representing a zero-length entity or throw
a
NoContentExceptionin case no zero-length entity representation is defined for the supported Java type. - Throws:
java.io.IOException- if an IO error arises. In case the entity input stream is empty and the reader is not able to produce a Java representation for a zero-length entity,NoContentExceptionis expected to be thrown.WebApplicationException- if a specific HTTP error response needs to be produced. Only effective if thrown prior to the response being committed.
-
-