Cool, thanks for the confirmation... cheers, Sergey
On 10/6/10, Josh Holtzman <[email protected]> wrote: > > It looks like the problem is in returning a Response with the Collection > set > as the entity, as described below. Changing the return type to > List<JobImpl> works as expected. > > Thanks, > Josh > > On Wed, Oct 6, 2010 at 10:10 AM, Josh Holtzman <[email protected] > >wrote: > > > When I do this: > > > > @GET > > @Path("/jobs.xml") > > @Produces(MediaType.APPLICATION_XML) > > public Response getJobs() { > > return Response.ok(getJobsImpls()).build(); > > } > > > > @XmlType(name = "job", namespace = "http://remote.opencastproject.org/") > > @XmlRootElement(name = "job", namespace = " > > http://remote.opencastproject.org/") > > public class JobImpl implements Job { > > ... > > } > > > > > > I get a 500 response with this in the body "No message body writer has > been > > found for response class Vector." I thought maybe the problem was that > this > > Vector is the one being returned by eclipselink, and there was some kind > of > > proxy voodoo interfering. If I copy all of the JobImpls into a new > > ArrayList, I get the same kind of message, "No message body writer has > been > > found for response class ArrayList." > > > > I'm building the JAX-RS endpoint manually using > cxf-bundle-jaxrs-2.2.9.jar > > and a CXFNonSpringServlet with some custom providers. Perhaps I'm > missing > > one of the providers needed to handle Collections? > > > > And I'm curious, what would the xml look like for this collection? Where > > does the root element name come from? And the namespace... is it copied > > from the objects in the collection? > > > > Thanks, > > Josh > > > > On Tue, Oct 5, 2010 at 11:20 PM, Sergey Beryozkin <[email protected] > >wrote: > > > >> Hi Josh > >> > >> thanks for this tip, but my question is to do with you referring to > >> collections of JAXB beans not being supported. > >> I'd appreciate if you could send me an example of such a collection. > >> Explicit collection have been supported for a while and I recall users > >> confirming that it worked for them, so if there's some issue there > lurking > >> then I'd like to get it fixed :-) > >> > >> thanks, Sergey > >> > >> On Tue, Oct 5, 2010 at 7:24 PM, Josh Holtzman <[email protected] > >> >wrote: > >> > >> > This part of the stack trace: > >> > > >> > Caused by: javax.ws.rs.WebApplicationException at > >> > > >> > > >> > org.apache.cxf.jaxrs.client.AbstractClient.reportNoMessageHandler(AbstractClient.java:487) > >> > > >> > looks like there's no message body writer. I've run into this kind of > >> > problem when trying to return Collections, even collections of JAXB > >> > elements, from JAX-RS endpoints. I usually solve it by wrapping the > >> list > >> > in > >> > a root class, and passing the wrapper rather than the Collection, like > >> > this: > >> > > >> > @XmlRootElement(name="deviceList") > >> > public class DeviceList { > >> > @XmlElement > >> > protected List<Device> devices; > >> > } > >> > > >> > Perhaps this might help in your case too, switching from > >> > addDevice(List<Device> device) to addDevice(DeviceList deviceList). > >> > > >> > Josh > >> > > >> > On Tue, Oct 5, 2010 at 8:00 PM, oceanz <[email protected]> > wrote: > >> > > >> > > > >> > > I changed it to: > >> > > @Path("user/site/plant/device/addDevice1") > >> > > @POST > >> > > @Produces("text/xml") > >> > > @Consumes("multipart/form-data;type=text/xml") > >> > > Device addDevice(List<Device> device); > >> > > > >> > > But it still doesn't work. > >> > > Same exception:Caused by: javax.ws.rs.WebApplicationException > >> > > at > >> > > > >> > > > >> > > >> > org.apache.cxf.jaxrs.client.AbstractClient.reportNoMessageHandler(AbstractClient.java:487) > >> > > at > >> > > > >> > > > >> > > >> > org.apache.cxf.jaxrs.client.AbstractClient.writeBody(AbstractClient.java:401) > >> > > at > >> > > > >> > > > >> > > >> > org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.handleMessage(ClientProxyImpl.java:514) > >> > > ... 5 more > >> > > > >> > > Device is a JAXB Bean.: > >> > > @Entity(name="device") > >> > > @XmlRootElement(name="device") > >> > > @XmlAccessorType(XmlAccessType.FIELD) > >> > > public class Device extends DomainEntity { > >> > > > >> > > /** > >> > > * > >> > > */ > >> > > private static final long serialVersionUID = 1L; > >> > > > >> > > public Device() {} > >> > > > >> > > > >> > > @XmlAttribute(name="deviceName") > >> > > private String deviceName; > >> > > > >> > > @XmlAttribute(name="deviceType") > >> > > private String deviceType; > >> > > > >> > > @XmlAttribute(name="modelNumber") > >> > > private String modelNumber; > >> > > > >> > > @XmlAttribute(name="serialNumber") > >> > > private String serialNumber; > >> > > .......... > >> > > } > >> > > > >> > > Who do I need to do next? Desparate to get this working. > >> > > Thanks for all your help. > >> > > -- > >> > > View this message in context: > >> > > > >> > > >> > http://cxf.547215.n5.nabble.com/Help-required-with-apache-cxf-multiparts-tp3199975p3200103.html > >> > > Sent from the cxf-user mailing list archive at Nabble.com. > >> > > > >> > > >> > > > > >
