Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Code generation to initialise by default to empty list instead of null

Does Swagger code generation tool have an option for selecting whether the generated classes should have Lists, Maps etc. defaulted to null or empty?

Previously, the default was empty, for example private List<String> names = new List<String>.

At the moment the default is null, i.e. private List<String> names = null

The change was done in April 2017 and based on what I understand from the changes made there is no option for selecting which to use, it's always defaulted to null from that point onwards.

The discussion contains reasons why this is better and I have nothing against that. But I have a legacy app that have used some form of (Swagger) generated sources with little modifications and I'm trying to get rid of these and use swagger generated model only. The problem is that the code is originally written in a manner that there can be no null values and thus null checks are not done.

So what can be done? Use previous version of Swagger codegen?

The API is not in my control and thus yaml modification is not an option (if that would even provide help).

like image 732
kaskelotti Avatar asked Jul 31 '18 13:07

kaskelotti


2 Answers

I solved this issue as I was speculating in the question and downgraded the codegen cli version to 2.2.2, which is AFAIK the last version that creates lists and maps empty instead of null.

like image 162
kaskelotti Avatar answered Sep 30 '22 09:09

kaskelotti


Based on a comment [Java] How can we set List and Map to null by default in models? you'd need to edit any mustache template files for java (most likely pojo.mustache) and change the way lists/maps are instantiated.

like image 40
Damian Balawender Avatar answered Sep 30 '22 08:09

Damian Balawender