Próbuję użyć JAXB (wewnątrz Jersey) dla polimorfizmu z rodzajowych:JAXB: polimorfizm z rodzajowych
@XmlRootElement
public class Performance<M extends IMeasurement> {
@XmlAnyElement
private List<M> measurement;
}
@XmlJavaTypeAdapter(MeasurementAbstract.Adapter.class)
public interface IMeasurement<D extends Serializable, V extends Number>
extends Serializable {
D getDate();
void setDate(D date);
V getValue();
void setValue(V value);
}
@XmlTransient
@XmlAccessorType(XmlAccessType.FIELD)
@XmlSeeAlso({MeasurementStringDouble.class, MeasurementStringInteger.class})
public abstract class MeasurementAbstract<D extends Serializable, V extends Number> implements IMeasurement<D, V> {
@XmlElement
protected D date;
@XmlElement
protected V value;
static class Adapter extends XmlAdapter<MeasurementAbstract, IMeasurement> {
public IMeasurement unmarshal(MeasurementAbstract m) { return m; }
public MeasurementAbstract marshal(IMeasurement v) { return (MeasurementAbstract) v; }
}
}
@XmlRootElement
public class MeasurementStringDouble extends MeasurementAbstract<String, Double> {}
@XmlRootElement
public class MeasurementStringInteger extends MeasurementAbstract<String, Integer> {}
mam ten błąd:
GRAVE: Mapped exception to response: 500 (Internal Server Error) javax.ws.rs.WebApplicationException: javax.xml.bind.MarshalException - with linked exception: [javax.xml.bind.JAXBException: class org.test.jaxb.MeasurementStringDouble nor any of its super class is known to this context.]