Hallo, folgende Situation: Ich habe 2 konkrete Klassen, die von einer gemeinsamen abstrakten Klasse erben, also grob sowas:
Eine REST Resource Klasse hält eine Collection vom Typ ParentClass:
Diese REST resource ist z.B. so ansprechbar:
und die Collection "stuff" über
Nun würde ich gerne per POST auf /resource/<ID>/stuff in der Lage sein eine Instanz vom Typ Child1 oder Child2 in stuff aufzunehmen. Ich habe bereits geschaut ob er vllt anhang der in JSON notierten Felder erkennt ob es sich um Child1 oder Child2 handelt und er mir die Instanz dann über einen ParentClass Parameter übergibt:
Auch habe ich 2 POST Methoden bereitgestellt wobei die eine Child1, die andere Child2 als Parameter aufnimmt:
Auch das funktioniert nicht, da ich hier einen "Consuming media type conflic" bekomme.
Wie kann man das umsetzen?
grüße
saw
Code:
public abstract class ParentClass {
private String commonValue;
}
public class Child1 extends ParentClass{
private String child1Value;
}
public class Child2 extends ParentClass {
private String child2Value;
}
Eine REST Resource Klasse hält eine Collection vom Typ ParentClass:
Code:
public class MyRESTResource {
private String id;
private Set<ParentClass> stuff;
}
Diese REST resource ist z.B. so ansprechbar:
Code:
GET .../resource/6c0f960f-a351-4da7-8f77-e5e6f15767e6
und die Collection "stuff" über
Code:
GET .../resource/6c0f960f-a351-4da7-8f77-e5e6f15767e6/stuff
Nun würde ich gerne per POST auf /resource/<ID>/stuff in der Lage sein eine Instanz vom Typ Child1 oder Child2 in stuff aufzunehmen. Ich habe bereits geschaut ob er vllt anhang der in JSON notierten Felder erkennt ob es sich um Child1 oder Child2 handelt und er mir die Instanz dann über einen ParentClass Parameter übergibt:
Code:
@Path("/{id}/stuff)
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response addChild(ParentClass child) {
...
}
Auch habe ich 2 POST Methoden bereitgestellt wobei die eine Child1, die andere Child2 als Parameter aufnimmt:
Code:
@Path("/{id}/stuff)
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response addChild(Child1 child) {
...
}
@Path("/{id}/stuff)
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response addChild(Child2 child) {
...
}
Auch das funktioniert nicht, da ich hier einen "Consuming media type conflic" bekomme.
Wie kann man das umsetzen?
grüße
saw