Я использую swagger для генерации кода со следующим yaml (вот фрагмент файла):
Foo:
type: object
properties:
someValue:
type: integer
required:
- someValue
Bar:
type: object
properties:
anotherValue:
type: string
required:
- anotherValue
ComplexFooBar1:
allOf:
- $ref: '#/definitions/Foo'
- $ref: '#/definitions/Bar'
ComplexFooBar2:
allOf:
- $ref: '#/definitions/Foo'
- type: object
properties:
someValueAgain:
type: integer
required:
- someValueAgain
- type: object
properties:
anotherValueAgain:
type: string
required:
- anotherValueAgain
И у меня есть следующий результат для классов ComplexFooBar (опять же, только фрагменты на Java):
public class ComplexFooBar1 extends Foo {
private String anotherValue = null;
...
public class ComplexFooBar2 extends Foo {
private String anotherValueAgain = null;
...
У меня есть вопросы относительно этого результата:
- У меня есть класс ComplexFooBar1, который реализует класс Foo. Какова стратегия определения родительского класса? Почему я получил класс Foo как родитель, а не класс Bar? Это только из-за порядка? Означает ли это, что 'allOf' имеет смысл только в случае 'ref' (не 'type') в качестве первого элемента в массиве?
- У меня есть класс ComplexFooBar2, который имеет только одно свойство (anotherValueAgain) Но их было два. Где находится 'SomeValueAgain'? Это просто из-за 'anotherValueAgain' просто переопределяет 'someValueAgain' (опять же, из-за его порядка)? Означает ли это, что swagger интерпретирует свойства в разделе 'type' как собственные свойства класса? И по этой причине нельзя использовать два раздела типа для одного allOf?