in dataenum-processor/src/main/java/com/spotify/dataenum/processor/generator/value/ValueTypeFactory.java [306:349]
private static MethodSpec createToString(OutputValue value) {
MethodSpec.Builder result =
MethodSpec.methodBuilder("toString")
.addAnnotation(Override.class)
.addModifiers(Modifier.PUBLIC)
.returns(String.class);
if (!value.parameters().iterator().hasNext()) {
result.addStatement("return \"$L{}\"", value.name());
return result.build();
}
result.addStatement("$1T builder = new $1T()", StringBuilder.class);
boolean first = true;
for (Parameter parameter : value.parameters()) {
String fieldName = parameter.name();
final String valueFormat;
if (parameter.redacted()) {
valueFormat = "\"***\"";
} else if (isArrayType(parameter)) {
valueFormat = "Arrays.toString(this.$1L)";
} else {
valueFormat = "this.$1L";
}
if (first) {
first = false;
result.addStatement(
String.format("builder.append(\"$2L{$1N=\").append(%s)", valueFormat),
fieldName,
value.name());
} else {
result.addStatement(
String.format("builder.append(\", $1N=\").append(%s)", valueFormat), fieldName);
}
}
result.addStatement("return builder.append('}').toString()", value.name());
return result.build();
}