Полиморфизм с чванством не работает должным образом

Я использую springfox версии 2.9.2 и аннотации swagger 1.5.x. Аннотации ApiModel поддерживают дискриминатор, подтипы и родительский атрибут, которые необходимы для работы полиморфизма, но я не вижу правильных apidocs, сгенерированных для включения полиморфизма.

Вот мой аннотированный код.

@RestController
@RequestMapping("/api/vehicles")
public class VehicleController {
    private static final Logger LOGGER = LoggerFactory.getLogger(VehicleController.class);

    @PostMapping(consumes = {MediaType.APPLICATION_JSON_UTF8_VALUE})
    void post(@RequestBody Vehicle anyVehicle) {
        LOGGER.info("Vehicle : {}", anyVehicle);
    }
}

@ApiModel(discriminator = "type", subTypes = {Car.class, Bike.class})
public class Vehicle {
    String brand;
    String type;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}


@ApiModel(parent = Vehicle.class)
public class Car extends Vehicle {
    int noOfDoors;
    boolean powerWindows;

    public int getNoOfDoors() {
        return noOfDoors;
    }

    public void setNoOfDoors(int noOfDoors) {
        this.noOfDoors = noOfDoors;
    }

    public boolean isPowerWindows() {
        return powerWindows;
    }

    public void setPowerWindows(boolean powerWindows) {
        this.powerWindows = powerWindows;
    }
}

@ApiModel(parent = Vehicle.class)
public class Bike extends Vehicle {
    boolean pillion;

    public boolean isPillion() {
        return pillion;
    }

    public void setPillion(boolean pillion) {
        this.pillion = pillion;
    }
}

Когда создаются документы, в основном отображается одна конечная точка, которая обрабатывает запрос POST и принимает автомобиль в качестве модели.

«Так

Должно ли работать то, что я здесь делаю? Может ли кто-нибудь указать мне на рабочий пример этого с SpringFox, на который я могу посмотреть?


person Moiz Raja    schedule 04.02.2019    source источник


Ответы (1)


Поддержка discriminator пока недоступна в пользовательском интерфейсе Swagger. Вы можете следить за этими проблемами для обновления статуса:

Дискриминатор не переключает схему
подтипы, не отображаемые в модели

person Helen    schedule 04.02.2019
comment
Я не думаю, что это только проблема чванства. Я просмотрел api-docs (то есть json) и не увидел, что правильный json был отправлен обратно в пользовательский интерфейс. Springfox 2.9.0 должен был содержать исправление для поддержки полиморфизма (см. github.com/springfox/springfox / issues / 2372) - person Moiz Raja; 06.02.2019
comment
@MoizRaja, можете ли вы опубликовать сгенерированный файл JSON для api-docs? (например, как суть) - person Helen; 06.02.2019