private static MethodSpec createToString()

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();
  }