>> >> Do you use Jackson or default Jettison provider ? > > Jackson. Will this be a significant problem? It's been a while since I've > looked at this difference, so I don't remember why I went with Jackson, as > opposed to Jettison. I can't change this right now, as I'm on the edge of a > release, but I'll look into changing back to Jettison for the next release, > if you think that will make a difference. >
Just make sure you also register a Jackson provider on the client side: WebClient.create(address, Collections.singletonList(new JacksonProvider())); Jackson drops the top level activeThings element, but Jettison-based provider expects it. Jettison provider can actually be configured to append it to the incoming payload, but I guess using the same provider on the client side will be simpler Cheers, Sergey >> On Tue, Apr 26, 2011 at 5:02 PM, KARR, DAVID (ATTSI) <[email protected]> >> wrote: >> > I'm returning an instance of the following paraphrased class from my >> handler method: >> > >> > @XmlType(name = "activeThings", propOrder = {"things"}) >> > @XmlRootElement(name = "activeThings") >> > public class GetActiveThingsResponse extends ResponseBase { >> > @XmlElementWrapper(name = "things") >> > @XmlElement(name = "thing") >> > private List<Thing> things; >> > >> > Where "ResponseBase" looks like this: >> > >> > @XmlType(name = "responseBase") >> > public class ResponseBase { >> > @XmlElementWrapper(name = "errors") >> > @XmlElement(name = "error") >> > private List<Error> errors; >> > private boolean lastBlock; >> > >> > When this is rendered as XML, it looks like this: >> > >> > <activeThings >> xmlns="namespace"><lastBlock>false</lastBlock><things><thing><id>1</id> >> </thing></things></activeThings> >> > >> > This is fine. >> > >> > When it's rendered as JSON, it looks like this: >> > >> > >> {"things":[{"id":1,"longDescription":null,"displayName":null,"descripti >> on":null}],"errors":[],"lastBlock":false} >> > >> > This looks reasonable, but when WebClient tries to "get" the object >> of this type, it fails with this: >> > >> > Apr 26, 2011 8:48:05 AM >> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider handleJAXBException >> > WARNING: javax.xml.bind.UnmarshalException >> > - with linked exception: >> > [javax.xml.bind.UnmarshalException: unexpected element (uri:"", >> local:"things"). Expected elements are <{namespace}activeThings>] >> > >> > This is happening in my unit tests, not in my core code, but it's >> still preventing me from testing some aspects of the JSON rendering. >> > > -- Sergey Beryozkin Application Integration Division of Talend http://sberyozkin.blogspot.com
