InstanceProcessor: skip missing
ci/woodpecker/push/woodpecker Pipeline was successful Details

This commit is contained in:
Johannes Frohnmeyer 2023-01-28 11:50:30 +01:00
parent d1d9707add
commit b12c7ddd37
Signed by: Johannes
GPG Key ID: E76429612C2929F4
1 changed files with 10 additions and 8 deletions

View File

@ -122,6 +122,7 @@ public class InstanceProcessor extends GProcessor {
for (Property<?> param : properties.names) {
isEmpty = false;
code.addStatement("$T _$N = $L", param.getType(), param.getName(), TypeHelper.getDefaultValue(param.getType()));
code.addStatement("boolean has_$N = false", param.getName());
}
if (isEmpty) {
code.addStatement("reader.skipValue()");
@ -130,20 +131,21 @@ public class InstanceProcessor extends GProcessor {
.beginControlFlow("while (reader.hasNext())")
.beginControlFlow("switch (reader.nextName())");
for (Property<?> param : properties.names) {
code.beginControlFlow("case $S ->", getSerializedName(param));
if (param.getType().getKind().isPrimitive()) {
code.add("case $S -> _$N = ", getSerializedName(param), param.getName());
code.add("_$N = ", param.getName());
Adapters.generateRead(param, spec, code, typeVariables, otherAdapters, message);
code.add(";\n");
} else {
code.beginControlFlow("case $S ->", getSerializedName(param))
.beginControlFlow("if (reader.peek() == $T.NULL)", Cl.GSON_TOKEN)
code.beginControlFlow("if (reader.peek() == $T.NULL)", Cl.GSON_TOKEN)
.addStatement("reader.nextNull()")
.addStatement("_$N = null", param.getName());
code.unindent().add("} else _$N = ", param.getName());
Adapters.generateRead(param, spec, code, typeVariables, otherAdapters, message);
code.add(";\n")
.endControlFlow();
code.add(";\n");
}
code.addStatement("has_$N = true", param.getName());
code.endControlFlow();
}
code.add("default -> ")
.addStatement("reader.skipValue()");
@ -168,7 +170,7 @@ public class InstanceProcessor extends GProcessor {
}
code.add(";\n");
for (Property.Setter param : properties.builderParams) {
code.addStatement("builder.$N(_$N)", param.getCallableName(), param.getName());
code.addStatement("if (has_$N) builder.$N(_$N)", param.getName(), param.getCallableName(), param.getName());
}
code.addStatement("result = builder.$N()", builder.getBuildMethod().getSimpleName());
} else {
@ -183,12 +185,12 @@ public class InstanceProcessor extends GProcessor {
}
}
for (Property.Setter setter : properties.setters) {
code.addStatement("result.$N(_$N)", setter.getCallableName(), setter.getName());
code.addStatement("if (has_$N) result.$N(_$N)", setter.getName(), setter.getCallableName(), setter.getName());
}
for (Property.Field field : properties.fields) {
if (Properties.containsName(properties.setters, field)) continue;
if (Properties.containsName(properties.params, field)) continue;
code.addStatement("result.$N = _$N", field.getName(), field.getCallableName());
code.addStatement("if (has_$N) result.$N = _$N", field.getName(), field.getCallableName(), field.getName());
}
code.addStatement("return result");