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