ModelWithArrayOfSubclasses.java

package io.swagger.v3.core.oas.models;

import io.swagger.v3.oas.annotations.media.ArraySchema;
import io.swagger.v3.oas.annotations.media.DiscriminatorMapping;
import io.swagger.v3.oas.annotations.media.Schema;

public class ModelWithArrayOfSubclasses {
    
    @Schema(description = "The holder")
    public class Holder extends SubB {
    }
  
    @Schema(
            discriminatorProperty = "name",
            discriminatorMapping = {
                    @DiscriminatorMapping(schema = SubA.class, value = "a"),
                    @DiscriminatorMapping(schema = SubB.class, value = "b")
            },
            description = "Stuff"
    )
    public class Base {
      
        private String name;
      
        public String getName() {
            return name;
        }
    }

    @Schema(description = "The SubA class")
    public class SubA extends Base {
      
        private Long count;
      
        public Long getCount() {
            return count;
        }
    }

    @Schema(description = "The SubB class")
    public class SubB extends Base {
      
        private String friend;
        private Base[] baseArray;

        public String getFriend() {
            return friend;
        }

        @ArraySchema(
                schema = @Schema(implementation = Base.class),
                arraySchema = @Schema(
                        type = "array",
                        description = "Thingy"
                ),
                minItems = 0,
                uniqueItems = true
        )
        public Base[] getBaseArray() {
            return baseArray;
        }
    }
}