Когда классы моделей генерируются в Java, в моем шаблоне есть проверка, что если свойство является контейнером (список / карта), то я выполняю проверку на ноль. Ради защитного программирования я хотел бы вернуть пустую коллекцию / карту, если это поле пустое.
Так шаблон выглядит так:
{{/vars}}
public {{classname}}({{#vars}}@JsonProperty("{{baseName}}") {{#required}}@lombok.NonNull {{/required}}{{>nullableDataType}} {{name}}{{#hasMore}},
{{/hasMore}}{{/vars}}) {
{{#vars}}
{{#isContainer}}
if ({{name}} == null) {
this.{{name}} = {{#isListContainer}}Collections.emptyList();{{/isListContainer}}{{#isMapContainer}}Collections.emptyMap();{{/isMapContainer}}
}
{{/isContainer}}
{{^isContainer}}
this.{{name}} = {{name}};
{{/isContainer}}
{{/vars}}
}
{{#vars}}
Что будет переведено в это:
public MyRequestBodyObject(@JsonProperty("someField") String someField,
@JsonProperty("dates") List<Period> dates) {
this.someField = someField;
if (dates == null) {
this.dates = Collections.emptyList();
}
}
Это хорошо работает для десериализации ответов, но проблема в том, что объекты тела запроса теперь также ведут себя так же.
Для объектов тела запроса, я думаю, имеет смысл проводить различие между пустым или пустым списком, поскольку он может иметь различное значение.
Мне известна переменная isBodyParam, но для нее установлено только значение true когда определено в конечной точке, но не когда это $ref
объект.
Вопрос
Есть ли способ узнать, является ли текущий объект объектом полезной нагрузки? или нет?