0 Replies Latest reply on Jul 15, 2013 2:30 PM by srklonaris

    RESTEasy doesn't recognize custom message body writer

    srklonaris Newbie

      My MessageBodyWriter



      public class CSVMessageBodyWriter implements MessageBodyWriter<JaxbList> 

           public static final String CONTENT_DISPOSITION_HEADER = "Content-Disposition";

           //$NON-NLS-1$ private final static HeaderDelegate<ContentDispositionHeader>

           header = RuntimeDelegate.getInstance().createHeaderDelegate(ContentDispositionHeader.class); 


           public long getSize(JaxbList t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {

                return -1;


           public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {

                return CsvSerializer.class.isAssignableFrom(type);


           public void writeTo(JaxbList t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,

                     Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException {

                 // set content disposition. This will enable browsers to open excel

                ContentDispositionHeader contentDispositionHeader = ContentDispositionHeader.createContentDispositionHeader(MediaTypeUtils.CSV_TYPE);


                //$NON-NLS-1$ httpHeaders.putSingle(CONTENT_DISPOSITION_HEADER, header.toString(contentDispositionHeader)); 

                Charset charset = Charset.forName(ProviderUtils.getCharset(mediaType));

                OutputStreamWriter writer = new OutputStreamWriter(entityStream, charset); 

                PrintWriter printWriter = new PrintWriter(writer);

                Iterator<String[]> rows = ((CsvSerializer) t).getEntities();

                while (rows.hasNext()) {






      My REST Application



      @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, "text/csv"})

      public class ApplicationREST

      Extension of Application


      public class JaxRsActivator extends Application {

           private Set<Object> singletons = new HashSet<Object>();

           private Set<Class<?>> classes = new HashSet<Class<?>>(); 


           public JaxRsActivator() {

                singletons.add(new CSVMessageBodyWriter());



           @Override public Set<Object> getSingletons() {

                Set<Object> defaults = super.getSingletons();

                singletons.addAll(defaults); return singletons;


           public Set<Class<?>> getClasses() {

                 return classes;



      When I run in debug mode I can hit my JaxRsActivator class, so I know that the providers are being loaded. However I get the error "Could not find MessageBodyWriter for response object of type: net.comp.jaxb.JaxbList of media type: text/csv"