Thanks - I'll get the fix applied Sergey
On Fri, Jul 23, 2010 at 8:38 PM, ermedeiros <[email protected]> wrote: > > Hi Sergey, > > I think I found the bug: in the method JAXBElementProvider.writeTo it's > necessary to add a call to AbstractJAXBProvider.getActualType(Class<?> > type, > Type genericType, Annotation[] anns) before calling marshalCollection > method. > > I created a new class that extends JAXBElementProvider and orverwrites > writeTo method. I've just added the line below to solve the problem. > actualClass = getActualType(actualClass, genericType, anns); > > > See the code below: > > > public class MyJAXBElementProvider extends JAXBElementProvider{ > > public void writeTo(Object obj, Class<?> cls, Type genericType, > Annotation[] anns, > MediaType m, MultivaluedMap<String, Object> headers, > OutputStream > os) > throws IOException { > try { > Object actualObject = checkAdapter(obj, cls, anns, > true); > Class<?> actualClass = obj != actualObject ? > actualObject.getClass() : cls; > String encoding = HttpUtils.getSetEncoding(m, headers, > null); > if > (InjectionUtils.isSupportedCollectionOrArray(actualClass)) { > actualClass = > InjectionUtils.getActualType(genericType); > > /* added ***********************************/ > actualClass = getActualType(actualClass, > genericType, anns); > /* ****************************************/ > > marshalCollection(cls, actualObject, actualClass, > genericType, encoding, os, m); > } else { > marshal(actualObject, actualClass, genericType, > encoding, > os, m); > } > } catch (JAXBException e) { > handleJAXBException(e); > } catch (WebApplicationException e) { > throw e; > } catch (Exception e) { > throw new WebApplicationException(e); > } > } > } > > > I think the same change is necessary for JSONProvider. > > Regards, > Elias > -- > View this message in context: > http://cxf.547215.n5.nabble.com/JAX-RS-service-w-interface-result-type-XmlJavaTypeAdapter-tp564352p1861836.html > Sent from the cxf-user mailing list archive at Nabble.com. >
