That fixed it - thanks! 

Now I just need to figure the best way to write the output to JSON and XML.
Are there some utilities I can use or should I just construct a StringBuffer
with the necessary wrapper characters?

Thanks,

Matt


Sergey Beryozkin wrote:
> 
> Hi
> 
> What about isWriteable() code ? This code does not seem right :
> 
> type.equals(ArrayList.class) 
> 
> can you please change it to something like :
> List.class.isAssignableFrom(type) ? 
> 
> Can you add a breakpoint to isWriteable ?
> 
> cheers, Sergey
> 
> 
> 
> mraible wrote:
>> 
>> I thought I replied to this a couple weeks ago, but apparently not. I'm
>> still experiencing this error even after adding
>> @Produces({"text/xml","text/plain","application/json"}).
>> 
>> Thanks,
>> 
>> Matt
>> 
>> 
>> Sergey Beryozkin wrote:
>>> 
>>> Hi
>>> 
>>> CXF 2.2.3 only supports the arrays/collections of JAXB beans. I've added
>>> a task to support the explicit collections/arrays of arbitrary
>>> (non-JAXB) types. 
>>> 
>>> Now, as far as your provider is concerned, I think the problem is to do
>>> with this declaration :
>>> 
>>> @Produces("text/xml,text/plain,application/json")
>>> 
>>> try this instead :
>>> 
>>> @Produces({"text/xml","text/plain","application/json"})
>>> 
>>> let me know if it works please...
>>> 
>>> cheers, Sergey
>>> 
>>> 
>>> mraible wrote:
>>>> 
>>>> 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---tp25070046p25241946.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to