Как отобразить данные объекта запроса, которые могут иметь различные типы и расширяются из другого класса? - PullRequest
0 голосов
/ 16 июня 2019

Привет всем и спасибо за помощь.

Допустим, у меня есть:

@PUT
@Produces(MediaType.APPLICATION_JSON)
@Path("/endpoint")
public A createA(A a);

Модель A:

@JsonTypeInfo(
      use = JsonTypeInfo.Id.NAME, 
      include = JsonTypeInfo.As.PROPERTY, 
      property = "type")
@JsonSubTypes({ 
  @Type(value = IndividualParty.class, name = "B"), 
  @Type(value = CorporateParty.class, name = "C") 
})
public class A {

private String id;
private String description;

public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getDescription() {
    return description;
}
public void setDescription(String description) {
    this.description = description;
}

}

Модели B и C расширяют модель A .и у них разные поля.

У меня тоже есть модели запроса и ответа .Запрос сделан с A объектом.

Я использую аннотации наследования Джексона, и я использую soapUI для создания body .поэтому, когда я отлаживаю, я на самом деле могу видеть, является ли тип B или C.

Проблема в том, что в классе, который я получаю, у меня есть доступ только к полям A, и я не могу отобразить данные вAPI, таким образом, мне нужно иметь доступ к полям B и C, но модель запроса имеет только объект A для выполнения запроса, но, поскольку B и C расширяют, AI должен уметь делать это правильно?например:

public returnType method(CreateARequest request){}

Здесь я хочу сопоставить запрос, который я сделал в soapUI (body), с другими полями, которые находятся в другом месте.

например: someOtherRequest.SetName (request.getName ());

этот запрос может быть B или C, но у меня есть доступ только к полям A ... Даже если я делаю request.SetA (new B ());а затем Request.getA ().это тот же результат ...

любая идея ???спасибо

1 Ответ

0 голосов
/ 16 июня 2019

Я думаю, что понял.Я не могу попробовать, потому что у меня сейчас нет удаленного доступа, поэтому я не могу знать наверняка, но я думаю, что было бы просто, если бы я сделал простой уклон:

B b = новый B();

b = (B) request.getA ();

и теперь я должен иметь возможность отобразить данные правильно?

...