Swagger генерация кода Java, атрибуты XML - PullRequest
0 голосов
/ 28 сентября 2018

Я довольно новичок в чванстве и некоторое время борюсь.

Я использую плагин magen swagger codegen (groupId: io.swagger.codegen.v3, artifactId: swagger-codegen-maven-plugin, версия: 3.0.0):

<language>java</language>
<library>jersey1</library>
<java8>true</java8>
<withXml>true</withXml>
<configOptions>
    <dateLibrary>java8</dateLibrary>
</configOptions>

У меня есть определение OpenAPI (которое я предполагаю, 3.0) с путями доступа к API-интерфейсам json и xml (пара - только json, некоторые - обахотя я прилагаю свои усилия к XML, если оба они доступны - причина этого была в именах полей, таких как "@XX_YY", которые я не мог заставить работать разумно).

Это сегмент в /определения

"UserExport": {
  "type": "object",
  "properties": {
    "users": {
      "type": "array",
      "items": {
        "xml": {
          "name": "USER"
        },
        "$ref": "#/definitions/User"
      },
      "xml":{
        "name": "USER"
      }
    }
  },
  "xml": {
    "name": "USERS"
  }
}

Соответствующий сегмент XML:

<?xml version="1.0" encoding="UTF-8"?>
<USERS>
  <USER ....

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

@JsonProperty("users")
@XmlElement(name="null")
private List<User> users = null;

Unmarshalling(т.е. чтение UserObject pojo из сервиса) не работает с этим.Если я изменю name="null" на name="USER", это будет выглядеть хорошо.

Теперь у меня следующие вопросы:

  • Это действительная спецификация OpenAPI относительно отсканированного XML, который я показал?
  • Если нет, каково будет правильное определение для этого?Использовать ссылку в атрибуте type?
  • Если она действительна (в это я верю), как я могу заставить ее работать?Я открыт для использования других библиотек.

У меня есть набор инструментов для генерации кода, запущенного в отладчике, и я также открыт для изменения проекта swagger-codegen-generators.

Спасибо за помощь, Фрэнк

...