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,"description":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.

Reply via email to