swagger codegen добавить аннотацию @JacksonXmlElementWrapper (useWrapping = false) к одному полю - PullRequest
0 голосов
/ 19 ноября 2018

В настоящее время я использую кодировку swagger, используя yml для генерации своих моделей. Однако у меня есть одно поле, то есть List<Object>, которое должно иметь @JacksonXmlElementWrapper(useWrapping = false). Я могу видеть @JacksonXmlElementWrapper в POJO.mustache, но не в model.mustache. Кто-нибудь знает, что добавить в файл yaml или где-либо еще, чтобы это поле генерировалось с этой аннотацией? Благодарю. Я использую язык Spring-Java с Gradle. Мне нужно, чтобы это было сгенерировано во время сборки. поэтому минимальные изменения являются предпочтительными.

1 Ответ

0 голосов
/ 30 ноября 2018

Согласно readme на их git, Swagger Codegen упоминает способы сделать это:

https://github.com/swagger-api/swagger-codegen/blob/master/README.md

, так как вы используете gradle:

Мы можем использовать пользовательский шаблон для генерации кода следующим образом:

// build.gradle
swaggerSources {
  inputFile = file('{name of your file}.yaml')
  xyz {
    language = 'spring'
    // template directory path
    templateDir = file('templates/{name of your custom directory}')
  }
}

внутри templates/{name of your custom directory}, вы можете хранить ваши файлы с усами, как в вашем случае, все, что вам нужно сделать, это загрузитьнеобходимые шаблоны пружин из git (например, эта ссылка для pojo.mustache) и добавьте необходимые изменения в шаблон вместе с папкой проекта и библиотек.Запустите gradle build, и он должен сгенерировать.

Однако существует гораздо более простой обходной путь, когда вы можете просто использовать свой собственный класс pojo, добавить его в существующий config.json и удалить более раннюю запись для этой модели в своемФайл yaml (конечно):

  "importMappings" : {
      "{replace with className}": "{replace with packageName}.{replace with className}"
  }

Надеюсь, это поможет.

...