Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Springfox swagger inheritance support

Is there any way to expose inheritance/ polymorphism in springfox swagger (2.7.0)? I know that swagger specification supports allOf. Is springfox support this? Below is sample domain model.

@ApiModel
public abstract class Animal{
    private String name;
}

@ApiModel(parent=Animal.class)
public class Dog extends Animal{
    ...
}

@ApiModel(parent=Animal.class)
public class Cat extends Animal{
    ...
}

If controller returns Animal, swagger contract doesn't expose Cat or Dog. It only returns Animal with it's properties.

like image 513
krogulec.piotr Avatar asked Sep 27 '17 09:09

krogulec.piotr


2 Answers

Spring-fox hadn't added support to polymorphism at the time you posted it. However, the 2.9.0 release seems to add it. Check this out

like image 73
Guilherme Gambeti Avatar answered Oct 10 '22 06:10

Guilherme Gambeti


Support to polymorphism is still not available (Using 2.9.2). What we did in our project to have the models documented is just simply add them manually..

In your swaggerConfig:

@Bean
public Docket apiDocumentation() {
    TypeResolver typeResolver = new TypeResolver();
    return new Docket(DocumentationType.SWAGGER_2)
                .additionalModels(
                    typeResolver.resolve(type1.class),
                    typeResolver.resolve(type2.class),
                    typeResolver.resolve(typeX.class));
}

This should make the models available in swagger-ui

like image 34
ApexOne Avatar answered Oct 10 '22 06:10

ApexOne