users@jersey.java.net

[Jersey] Client response unmarshalling question

From: Noah White <emailnbw_at_gmail.com>
Date: Mon, 30 Apr 2012 17:31:52 -0400

I've a bit stumped trying to unmarshall a XML response my Jersey client is receiving. Here's an example:

<ArrayOfString xmlns="http://schemas.micrsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3c.org/2001/XMLSchema-instance">
    <string>ar</string>
    <string>bg</string>
    <string>ca</string>
</ArrayOfString>

My JAXB class looks like this:

@XmlRootElement(name = "ArrayOfString", namespace="http://schemas.micrsoft.com/2003/10/Serialization/Arrays")
public class LangReponseData {

        private List<StringResponseData> supportedLangs;

        public List<StringResponseData> getSupportedLangs() {
                return supportedLangs;
        }

        public void setSupportedLangs(List<StringResponseData> langList) {
                this.supportedLangs = langList;
        }

        public LangResponseData() {
                this.supportedLangs = new ArrayList<>();
        }
}

@XmlRootElement(name = "string", namespace=""http://schemas.micrsoft.com/2003/10/Serialization/")
public class StringResponseData {
        
        private String _string;

        @XmlValue
        public String getString() {
                return _string;
        }

        pubic void setString(String aString) {
                _string = aString;
        }

        public StringResponseData() {}

}

My client code looks like this:

ClientConfig clientConfig = new DefaultClientConfig();
Client c = Client.create(clientConfig);
WebResource r = c.resource(SERVICE_URL);
LangResponseData resp = r.accept(MediaType.APPLICATION_XML_TYPE).get(LangResponseData.class);

When I run this no exceptions are thrown and resp.supportedLangs is always size 0. If I change my r.accept to use String.class I can see I am getting the XML shown above in my example as the response.

I am using Jersey client 1.11 which comes bundled with Glassfish 3.1.2 on JDK 1.7u3 x64.

Any thoughts on this? Thanks,

-Noah