Currently Being Moderated

MessageBodyWorkers

VERSION 2

Created on: May 27, 2008 9:33 AM by Bill Burke - Last Modified:  May 27, 2008 9:33 AM by Bill Burke

MessageBodyWorks

 

javax.ws.rs.ext.MessageBodyWorks is a simple injectable interface that allows you to look up MessageBodyReaders and Writers.  It is very useful, for instance, for implementing multipart providers.  Content types that embed other random content types.

 



/**
 * An injectable interface providing lookup of {@link MessageBodyReader} and
 * {@link MessageBodyWriter} instances.
 *
 * @see javax.ws.rs.core.Context
 * @see MessageBodyReader
 * @see MessageBodyWriter
 */
public interface MessageBodyWorkers
{

   /**
    * Get a message body reader that matches a set of criteria.
    *
    * @param mediaType   the media type of the data that will be read, this will
    *                    be compared to the values of {@link javax.ws.rs.ConsumeMime} for
    *                    each candidate reader and only matching readers will be queried.
    * @param type        the class of object to be produced.
    * @param genericType the type of object to be produced. E.g. if the
    *                    message body is to be converted into a method parameter, this will be
    *                    the formal type of the method parameter as returned by
    *                    <code>Class.getGenericParameterTypes</code>.
    * @param 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
    *                    <code>Class.getParameterAnnotations</code>.
    * @return a MessageBodyReader that matches the supplied criteria or null
    *         if none is found.
    */
   public abstract <T> MessageBodyReader<T> getMessageBodyReader(Class<T> type, Type genericType, Annotation annotations[], MediaType mediaType);


   /**
    * Get a message body writer that matches a set of criteria.
    *
    * @param mediaType   the media type of the data that will be written, this will
    *                    be compared to the values of {@link javax.ws.rs.ProduceMime} for
    *                    each candidate writer and only matching writers will be queried.
    * @param type        the class of object that is to be written.
    * @param genericType the type of object to be written. E.g. if the
    *                    message body is to be produced from a field, this will be
    *                    the declared type of the field as returned by
    *                    <code>Field.getGenericType</code>.
    * @param annotations an array of the annotations on the declaration of the
    *                    artifact that will be written. E.g. if the
    *                    message body is to be produced from a field, this will be
    *                    the annotations on that field returned by
    *                    <code>Field.getDeclaredAnnotations</code>.
    * @return a MessageBodyReader that matches the supplied criteria or null
    *         if none is found.
    */
   public abstract <T> MessageBodyWriter<T> getMessageBodyWriter(Class<T> type, Type genericType, Annotation annotations[], MediaType mediaType);
}

 

Injectable

 

MessageBodyWorkers are injectable into MessageBodyReader or Writers:

 


@Provider
@ConsumeMime("multipart/fixed")
public class MultipartProvider implements MessageBodyReader {

   private @Context MessageBodyWorkers workers;

...

}

 

Average User Rating
(0 ratings)




There are no comments on this article

More Like This

  • Retrieving data ...