On 09/05/12 09:58, Govindaram PS wrote:
JsonProvider.writeTo fails to add xsitype when ignore namespace is set true.
While reading the same it is failing to capture derived elements.


It does not make sense to include xsi:type when the namespaces are set to be ignored

Cheers, Sergey


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



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to