OpenApi: создание java / kotlin DTO из нескольких файлов

У меня проблема с импортом сгенерированного кода openapi-генератора для Java и Kotlin.

Допустим, у меня есть root.yaml / child1.yaml / child2.yaml со следующим содержимым:

components:
  schemas:
    Transfer:
      type: object
      allOf:
        - $ref: "child1.yaml#/components/schemas/Pet1"
        - $ref: "child2.yaml#/components/schemas/Pet2"

child1.yaml:

components:
  schemas:
    Pet1:
      type: object
      required:
        - id
        - name
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
        tag:
          type: string

child2.yaml:

components:
  schemas:
    Pet2:
      type: object
      required:
        - id2
        - name2
      properties:
        id2:
          type: integer
          format: int64
        name2:
          type: string
        tag2:
          type: string

В этом случае меня не интересуют сущности в child1 / child2, и я хочу, чтобы был построен объект Transfer, поэтому я заполняю параметр modelsToGenerate только параметром Transfer. Моя проблема в том, что сгенерированный класс Transfer всегда содержит импорт для дочерних элементов, даже если они не нужны. Например:

import com.model.Pet1
import com.model.Pet2

data class Transfer (
    val id: kotlin.Long,
    val name: kotlin.String,
    val id2: kotlin.Long,
    val name2: kotlin.String,
    val tag: kotlin.String? = null,
    val tag2: kotlin.String? = null
)

Сгенерированный класс не зависит от дочерних элементов, но импорт всегда создается. Есть ли параметр или обходной путь, который я пропустил? Ненужный импорт также появляется при генерации Pet1 и Pet2, но Transfer по-прежнему не зависит от дочерних элементов. Мой вариант использования состоит в том, что у меня есть несколько очень больших моделей в спецификации, и я хотел бы разбить их на несколько файлов, чтобы уменьшить беспорядок / дублирование без общедоступного класса для каждого дочернего элемента.

Заранее спасибо.


person Schnebdreleg    schedule 26.11.2019    source источник


Ответы (1)


Ответ нашел сам. После создания классов вам необходимо запустить средство форматирования, например средство форматирования Google Java.

person Schnebdreleg    schedule 28.11.2019