Как я могу избежать нулевого указателя с GSON и Enum? - PullRequest
0 голосов
/ 30 апреля 2020

Когда я использую генератор открытого API, он генерирует следующий TypeAdapter для моего перечисления.

public static class Adapter extends TypeAdapter<CodesEnum> {
      @Override
      public void write(final JsonWriter jsonWriter, final CodesEnum enumeration) throws IOException {
        jsonWriter.value(enumeration.getValue());
      }

Я строю модели, использующие следующий код:

java -jar -Dmodels \
-DmodelDocs=false 
-DmodelTests=false openapi-generator-cli-4.3.0.jar \
generate -i swagger.yaml -g java --model-package=c
models --additional-properties dateLibrary=java8-localdatetime,useBeanValidation=true,hideGenerationTimestamp=true \
--output=../../../

My CodesEnum являются необязательными в моей схеме, поэтому они могут быть нулевыми. Проблема в том, что мы пытаемся сериализовать объект, используя Json, для случаев, когда перечисление равно нулю, генерируется исключение нулевого указателя.

String json = GSON.toJson(request);

java.lang.NullPointerException
    models.Type$CodesEnum$Adapter.write(Type.java:222)
...