Please file a bug and provide a simple app that demonstrates the issue.

On Mon, Feb 17, 2020 at 10:01 AM Stephane Epardaud <stef@epardaud.fr> wrote:

Hi,

I was trying to test @XmlSeeAlso, which is intended to work as such:

@XmlSeeAlso(SubType.class)

public class SuperType {}


public class SubType extends SuperType {}


@Path("/")

public class Controller {

 @GET

 public SuperType get() {

  return new SubType();

}

}


So that the marshaller knows to serialise it as a SubType instead of the declared SuperType. But I can't get the JAXBXmlSeeAlsoProvider provider to be invoked, because in ServerResponseWriter we do this:


         Class type = jaxrsResponse.getEntityClass();
         Type generic = jaxrsResponse.getGenericType();

         MessageBodyWriter writer = providerFactory.getMessageBodyWriter(
               type, generic, annotations, mt);

And `type` is obtained by doing entity.getClass() (so it is SubType) while `generic` comes from the method declaration (it is SuperType). And
JAXBXmlSeeAlsoProvider.isReadWritable() uses the Class to ask if it has the @XmlSeeAlso annotation (it does not, because it's the SubType class).

All in all, it works, because we fall back to not needing @XmlSeeAlso since the class points to the subtype, but the generic type will point to the superclass and so they're really two different types.

Is this a bug?

_______________________________________________
resteasy-dev mailing list
resteasy-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/resteasy-dev