Serializers

REST resources use the {@link oaj.serializer.Serializer} API for defining serializers for serializing response POJOs.

The servlet will pick which serializer to use by matching the request Accept header with the media types defined through the {@link oaj.serializer.Serializer#getMediaTypeRanges()} method.

Serializers can be associated with REST servlets in the following ways:

- {@link oajr.annotation.Rest#serializers() Rest(serializers)} - Annotation on resource Java class.
- {@link oajr.annotation.RestMethod#serializers() RestMethod(serializers)} - Annotation on resource Java method.
- {@link oajr.RestContext#REST_serializers} - Programmatic.

The following are all equivalent ways of defining serializers used by a resource:

// Option #1 - Defined via annotation. @Rest(serializers={JsonSerializer.class, XmlSerializer.class}) public class MyResource { // Option #2 - Defined via builder passed in through resource constructor. public MyResource(RestContextBuilder builder) throws Exception { // Using method on builder. builder.serializers(JsonSerializer.class, XmlSerializer.class); // Same, but use pre-instantiated parsers. builder.serializers(JsonSerializer.DEFAULT, XmlSerializer.DEFAULT); // Same, but using property. builder.set(REST_serializers, JsonSerializer.class, XmlSerializer.class); } // Option #3 - Defined via builder passed in through init method. @RestHook(INIT) public void init(RestContextBuilder builder) throws Exception { builder.serializers(JsonSerializer.class, XmlSerializer.class); } // Override at the method level. @RestMethod(serializers={HtmlSerializer.class}) public MyPojo myMethod() { // Return a POJO to be serialized. return new MyPojo(); } }

- {@link oajr.RestContext#REST_serializers}