private void generateCreateFieldsForClass(GeneratorContext context, SourceWriter writer, String className)
throws IOException {
ReflectionDependencyListener reflection = context.getService(ReflectionDependencyListener.class);
Set<String> accessibleFields = reflection.getAccessibleFields(className);
ClassReader cls = context.getClassSource().get(className);
if (cls == null) {
return;
}
writer.appendClass(className).append(".$meta.fields").ws().append('=').ws().append('[').indent();
generateCreateMembers(writer, cls.getFields(), field -> {
appendProperty(writer, "type", false, () -> writer.append(context.typeToClassString(field.getType())));
appendProperty(writer, "getter", false, () -> {
if (accessibleFields != null && accessibleFields.contains(field.getName())) {
renderGetter(writer, field);
} else {
writer.append("null");
}
});
appendProperty(writer, "setter", false, () -> {
if (accessibleFields != null && accessibleFields.contains(field.getName())) {
renderSetter(writer, field);
} else {
writer.append("null");
}
});
});
writer.outdent().append("];").softNewLine();
}