Отображение генериков Swagger-UI - PullRequest
0 голосов
/ 02 июля 2018

Есть ли способ исправить ответы метода Map, которые используют обобщенные значения в качестве подполей ответов с соответствующей реализацией? Пример:

Допустим, у меня есть общий класс ответа:

public class Response {
    private String createdOn;
    //other fields
    private Map<String, Object> values;
    private Model object;
    //getters and setters
}

Общий класс модели:

public class Model{
}

Модель класса A:

public class ModelA extends Model{
    private String name;
    private String lastname;
    //getters and setters
}

и модель класса B:

public class ModelB extends Model{
    private int number;
    private boolean isTrue;
    //getters and setters
}

И метод doSomeStuff (), который, скажем, возвращает ResponseEntity , где в этом конкретном ответе «values» - это карта , а object - объект ModelA.

И предположим, у меня есть другой метод doSomeOtherStuff (), который возвращает объект ResponseEntity , где в этом случае «values» - это карта , а object - объект ModelB.

Есть ли способ сопоставить подполя ответа первого метода с соответствующими? При использовании swagger-UI все, что я получаю, это следующее для обоих методов:

{
  "createdOn": "string",
  // other fields
  "model": {},
  "values": {}
}

Принимая во внимание, что я хотел бы что-то вроде следующего: doSomeStuff ():

{
  "createdOn": "string",
  // other fields
  "model": {
    "name": "string",
    "lastname": "string",
  }
  "model": {
    //All the subfields of SomeRandomObject
  },
}

doSomeOtherStuff ():

{
  "createdOn": "string",
  // other fields
  "model": {
    "number": "int",
    "isTrue": "boolean",
  }
  "model": {
    //All the subfields of AnotherRandomObject
  },
}

Поскольку он, очевидно, не может определить, какой тип объектов возвращается на уровне реализации.

P.S. Вышеуказанные классы приведены в качестве примера. Я был бы очень признателен за помощь в создании документации, а не за способы ее рефакторинга, поскольку приведенная выше логика применяется к более чем 100 остальным методам.

Редактировать: я использую springfox-swagger2 с springfox-swagger-ui.

...