JsonProvider.writeTo fails to add xsitype when ignore namespace is set true.
While reading the same it is failing to capture derived elements.
Test case:
@Test
public void testWriteReadDerivedNoNs() throws Exception {
JSONProvider<Base1> provider = new JSONProvider<Base1>();
provider.setMarshallAsJaxbElement(true);
provider.setIgnoreNamespaces(true);
provider.setWriteXsiType(true);
Base1 b = new Derived1("base", "derived");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
provider.writeTo(b, Base1.class, Base1.class,
new Annotation[0], MediaType.APPLICATION_JSON_TYPE,
new MetadataMap<String, Object>(), bos);
readBaseNoNs(bos.toString());
}
private void readBaseNoNs(String data) throws Exception {
JSONProvider<Base1> provider = new JSONProvider<Base1>();
provider.setUnmarshallAsJaxbElement(true);
provider.setIgnoreNamespaces(true);
ByteArrayInputStream is = new ByteArrayInputStream(data.getBytes());
Base1 base = provider.readFrom(
Base1.class, Base1.class,
new Annotation[0], MediaType.APPLICATION_JSON_TYPE,
new MetadataMap<String, String>(), is);
assertEquals("base", base.getBase1Field());
Derived1 derived = (Derived1)base;
}