I'm getting this message when trying to return a String[] from a RESTful
service. After searching the mailing list, it seems the best solution is to
change my method to return a List<String> and create a StringListBodyWriter
as a provider. However, after doing that, I'm still getting a similar error:

No message body writer found for response class : ArrayList

Here's my StringArrayBodyWriter:

@Provider
@Produces("text/xml,text/plain,application/json")
public class StringListBodyWriter implements MessageBodyWriter<List<String>>
{

        public long getSize(List<String> t, Class<?> type, Type genericType,
                            Annotation[] annotations, MediaType mediaType) {
                Iterator<String> i = t.iterator();
                long size = 0;
                while (i.hasNext()) {
                        size += i.next().length();
                }
                return size;
        }

        public boolean isWriteable(Class<?> type, Type genericType,
                                   Annotation[] annotations, MediaType 
mediaType) {
                return type.equals(ArrayList.class)
                                && (mediaType.equals(MediaType.TEXT_PLAIN_TYPE) 
|
                                mediaType.equals(MediaType.TEXT_XML_TYPE) |
                                
mediaType.equals(MediaType.APPLICATION_JSON_TYPE));
        }

        public void writeTo(List<String> t, Class<?> type, Type genericType,
                            Annotation[] annotations, MediaType mediaType,
                            MultivaluedMap<String, Object> httpHeaders,
                            OutputStream entityStream) throws IOException,
                        WebApplicationException {
                BufferedWriter bw = new BufferedWriter(new
OutputStreamWriter(entityStream));
                String ts = null;
                for (String aT : t) {
                        ts += aT;
                }
                bw.write(ts);
                bw.flush();
        }
}

Registered in Spring:

    <bean id="stringListProvider"
class="com.company.app.service.StringListBodyWriter"/>

        .....

    <jaxrs:server id="restServer" address="/rest/">
        <jaxrs:serviceBeans>
            ...
        </jaxrs:serviceBeans>
        <jaxrs:providers>
            <ref bean="jsonProvider"/>
            <ref bean="stringListProvider"/>            
        </jaxrs:providers>

Am I doing something wrong? I'm using CXF 2.2.3.

Thanks,

Matt
-- 
View this message in context: 
http://www.nabble.com/No-message-body-writer-found-for-response-class-%3A-String---tp25070046p25070046.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to