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;
    }

Reply via email to