From: Stephen Kitt Date: Thu, 22 Sep 2016 14:23:41 +0000 (+0200) Subject: Rework MethodSerializer (+ fallout) X-Git-Tag: release/carbon~438 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=8cc33e526b0f9ad956dcc96e57cff02679d643b3 Rework MethodSerializer (+ fallout) The main aim of this patch is to avoid instanceof-determined behaviour (between MethodDeclaration and MethodDefinition): * move getThrowsExceptions() and getBody() to Method; * make getVisibility() and getBody() Optional; * method declarations can specify thrown exceptions (which are separated by commas, not spaces). In addition, use Java 8 lambdas where appropriate in MethodSerializer and a few places elsewhere, and use Modifier instead of String for modifiers. Some clean-up: * drop inferrable type parameters; * use new ArrayList<>() instead of Lists.newArrayList(); * use Collections.singletonList() where appropriate. Change-Id: I9ec10bf64d366056afacce3fd4038ba92d3c4e6e Signed-off-by: Stephen Kitt --- diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/RuntimeRegistratorFtlTemplate.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/RuntimeRegistratorFtlTemplate.java index 27fb2bcba1..dd2cd8cc46 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/RuntimeRegistratorFtlTemplate.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/RuntimeRegistratorFtlTemplate.java @@ -12,6 +12,7 @@ import static com.google.common.base.Preconditions.checkState; import static java.lang.String.format; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Optional; import com.google.common.collect.Lists; import java.io.Closeable; import java.util.ArrayList; @@ -25,11 +26,11 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; +import javax.lang.model.element.Modifier; import org.opendaylight.controller.config.api.runtime.HierarchicalRuntimeBeanRegistration; import org.opendaylight.controller.config.api.runtime.RootRuntimeBeanRegistrator; import org.opendaylight.controller.config.yangjmxgenerator.RuntimeBeanEntry; import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Annotation; -import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Annotation.Parameter; import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Field; import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.MethodDefinition; import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.FullyQualifiedNameHelper; @@ -40,7 +41,7 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { String name, List fields, List methods) { // TODO header super(null, runtimeBeanEntry.getPackageName(), name, Collections - . emptyList(), Collections.singletonList(Closeable.class + .emptyList(), Collections.singletonList(Closeable.class .getCanonicalName()), fields, methods); } @@ -85,7 +86,7 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { String registratorName = getJavaNameOfRuntimeRegistrator(rootRB); List methods = new ArrayList<>(); Field rootRuntimeBeanRegistratorField = new Field( - Lists.newArrayList("final"), + Collections.singletonList(Modifier.FINAL), RootRuntimeBeanRegistrator.class.getName(), "rootRuntimeBeanRegistrator"); List constructorParameters = Lists @@ -95,8 +96,8 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { registratorName, constructorParameters, constructorBody); methods.add(constructor); - LinkedHashMap RuntimeRegistratorFtlTemplates = createRegistrationHierarchy( - rootRB, Collections. emptySet()); + LinkedHashMap RuntimeRegistratorFtlTemplates = + createRegistrationHierarchy(rootRB, Collections.emptySet()); RuntimeRegistratorFtlTemplate rootFtlFile = RuntimeRegistratorFtlTemplates .values().iterator().next(); @@ -127,7 +128,7 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { // TODO add header GeneralClassTemplate registrator = new GeneralClassTemplate(null, rootRB.getPackageName(), registratorName, - Collections. emptyList(), Collections.singletonList(Closeable.class + Collections.emptyList(), Collections.singletonList(Closeable.class .getCanonicalName()), constructorParameters, methods); checkState(!RuntimeRegistratorFtlTemplates.containsKey(registrator @@ -140,7 +141,7 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { } private static Field hierachicalRegistration = new Field( - Lists.newArrayList("final"), + Collections.singletonList(Modifier.FINAL), HierarchicalRuntimeBeanRegistration.class.getCanonicalName(), "registration"); @@ -172,7 +173,7 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { Set currentOccupiedKeys = new HashSet<>(occupiedKeys); currentOccupiedKeys.add(parent.getJavaNamePrefix()); - Field registratorsMapField = new Field(Collections.singletonList("final"), + Field registratorsMapField = new Field(Collections.singletonList(Modifier.FINAL), TypeHelper.getGenericType(Map.class, String.class, AtomicInteger.class), "unkeyedMap", "new " + TypeHelper.getGenericType(HashMap.class, @@ -209,8 +210,9 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { "String key = \"%s\"; //TODO: check for conflicts\n", key)); - if (child.getKeyJavaName().isPresent()) { - value = "bean.get" + child.getKeyJavaName().get() + "()"; + Optional childKeyJavaName = child.getKeyJavaName(); + if (childKeyJavaName.isPresent()) { + value = "bean.get" + childKeyJavaName.get() + "()"; value = "String.valueOf(" + value + ")"; } else { body.append("java.util.concurrent.atomic.AtomicInteger counter = unkeyedMap.get(key);\n" @@ -227,13 +229,13 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { body.append(format("return new %s(r);", childRegistrator.getFullyQualifiedName())); - Field param = new Field(Lists.newArrayList("final"), + Field param = new Field(Collections.singletonList(Modifier.FINAL), child.getJavaNameOfRuntimeMXBean(), "bean"); MethodDefinition register = new MethodDefinition( - Collections.singletonList("synchronized"), + Collections.singletonList(Modifier.SYNCHRONIZED), childRegistrator.getFullyQualifiedName(), "register", - Collections.singletonList(param), Collections. emptyList(), - Collections. emptyList(), body.toString()); + Collections.singletonList(param), Collections.emptyList(), + Collections.emptyList(), body.toString()); methods.add(register); } @@ -274,10 +276,10 @@ public class RuntimeRegistratorFtlTemplate extends GeneralClassTemplate { // Arrays.asList(IOException.class.getCanonicalName()), // Collections. emptyList(), body); List annotations = Lists.newArrayList(new Annotation( - "Override", Collections. emptyList())); - return new MethodDefinition(Collections. emptyList(), "void", - "close", Collections. emptyList(), - Collections. emptyList(), annotations, body); + "Override", Collections.emptyList())); + return new MethodDefinition(Collections.emptyList(), "void", + "close", Collections.emptyList(), + Collections.emptyList(), annotations, body); } @VisibleForTesting diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java index 4c67a67f42..6e1f54ee53 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/TemplateFactory.java @@ -83,7 +83,7 @@ public class TemplateFactory { // convert JavaAttribute parameters into fields List fields = new ArrayList<>(); for (JavaAttribute ja : rpc.getParameters()) { - Field field = new Field(Collections. emptyList(), + Field field = new Field(Collections.emptyList(), ja.getType().getFullyQualifiedName(), ja.getLowerCaseCammelCase(), ja.getNullableDefaultWrappedForCode()); fields.add(field); diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Field.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Field.java index 312bb4a1db..c08a440f7f 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Field.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Field.java @@ -9,34 +9,35 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model; import static com.google.common.base.Preconditions.checkNotNull; -import com.google.common.collect.Lists; +import java.util.ArrayList; import java.util.List; +import javax.lang.model.element.Modifier; public class Field { private final String type; private final String name; private final String definition; - private final List modifiers; + private final List modifiers; private final boolean needsDepResolver; public Field(String type, String name) { - this(Lists. newArrayList(), type, name, null, false); + this(new ArrayList<>(), type, name, null, false); } public Field(String type, String name, String definition) { - this(Lists. newArrayList(), type, name, definition, false); + this(new ArrayList<>(), type, name, definition, false); } - public Field(List modifiers, String type, String name) { + public Field(List modifiers, String type, String name) { this(modifiers, type, name, null, false); } - public Field(List modifiers, String type, String name, + public Field(List modifiers, String type, String name, String definition) { this(modifiers, type, name, definition, false); } - public Field(List modifiers, String type, String name, + public Field(List modifiers, String type, String name, String nullableDefinition, boolean needsDepResolver) { this.modifiers = checkNotNull(modifiers); this.type = checkNotNull(type); @@ -46,7 +47,7 @@ public class Field { } public Field(String type, String name, String definition, boolean needsDepResolver) { - this(Lists. newArrayList(), type, name, definition, needsDepResolver); + this(new ArrayList<>(), type, name, definition, needsDepResolver); } public boolean isNeedsDepResolver() { @@ -61,7 +62,7 @@ public class Field { return type.substring(type.indexOf("<") + 1, type.indexOf(">")); } - public List getModifiers() { + public List getModifiers() { return modifiers; } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/FieldSerializer.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/FieldSerializer.java index 7105c39fe7..1f61f8f0ee 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/FieldSerializer.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/FieldSerializer.java @@ -13,9 +13,7 @@ public class FieldSerializer { public static String toString(Field field) { StringBuilder build = new StringBuilder(); build.append("private "); - for (String mod : field.getModifiers()) { - build.append(mod).append(" "); - } + field.getModifiers().forEach(mod -> build.append(mod).append(" ")); build.append(field.getType()).append(" "); build.append(field.getName()); if (field.getDefinition() != null) { diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Method.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Method.java index d83a70ccee..2394fc0d1d 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Method.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/Method.java @@ -8,11 +8,13 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model; import java.util.List; +import java.util.Optional; +import javax.lang.model.element.Modifier; public interface Method { - String getVisibility(); + Optional getVisibility(); - List getModifiers(); + List getModifiers(); String getReturnType(); @@ -23,4 +25,8 @@ public interface Method { String getJavadoc(); List getAnnotations(); + + List getThrowsExceptions(); + + Optional getBody(); } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDeclaration.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDeclaration.java index 425f85fe25..958eaba9fc 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDeclaration.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDeclaration.java @@ -9,7 +9,8 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model; import java.util.Collections; import java.util.List; -import org.apache.commons.lang3.StringUtils; +import java.util.Optional; +import javax.lang.model.element.Modifier; public class MethodDeclaration implements Method { private final String returnType; @@ -20,7 +21,7 @@ public class MethodDeclaration implements Method { public MethodDeclaration(String returnType, String name, List parameters) { - this(returnType, name, parameters, Collections. emptyList()); + this(returnType, name, parameters, Collections.emptyList()); } public MethodDeclaration(String returnType, String name, @@ -36,6 +37,16 @@ public class MethodDeclaration implements Method { return annotations; } + @Override + public List getThrowsExceptions() { + return Collections.emptyList(); + } + + @Override + public Optional getBody() { + return Optional.empty(); + } + @Override public String getJavadoc() { return javadoc; @@ -46,8 +57,8 @@ public class MethodDeclaration implements Method { } @Override - public String getVisibility() { - return StringUtils.EMPTY; + public Optional getVisibility() { + return Optional.empty(); } @Override @@ -66,7 +77,7 @@ public class MethodDeclaration implements Method { } @Override - public List getModifiers() { + public List getModifiers() { return Collections.emptyList(); } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDefinition.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDefinition.java index 1d0e3a40bf..8a2909d81c 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDefinition.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodDefinition.java @@ -9,12 +9,11 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model; import java.util.Collections; import java.util.List; +import java.util.Optional; import javax.lang.model.element.Modifier; public class MethodDefinition implements Method { - private static final String VISIBILITY_PUBLIC = Modifier.PUBLIC.toString(); - - private final List modifiers; + private final List modifiers; private final String returnType; private final String name; private final List parameters; @@ -32,18 +31,17 @@ public class MethodDefinition implements Method { public MethodDefinition(String returnType, String name, List parameters, String body) { - this(Collections. emptyList(), returnType, name, parameters, - Collections. emptyList(), Collections - . emptyList(), body); + this(Collections.emptyList(), returnType, name, parameters, + Collections.emptyList(), Collections.emptyList(), body); } public MethodDefinition(String returnType, String name, List parameters, List annotations, String body) { - this(Collections. emptyList(), returnType, name, parameters, - Collections. emptyList(), annotations, body); + this(Collections.emptyList(), returnType, name, parameters, + Collections.emptyList(), annotations, body); } - public MethodDefinition(List modifiers, String returnType, + public MethodDefinition(List modifiers, String returnType, String name, List parameters, List throwsExceptions, List annotations, String body) { this.modifiers = modifiers; @@ -70,8 +68,8 @@ public class MethodDefinition implements Method { } @Override - public String getVisibility() { - return VISIBILITY_PUBLIC; + public Optional getVisibility() { + return Optional.of(Modifier.PUBLIC); } @Override @@ -89,16 +87,18 @@ public class MethodDefinition implements Method { return parameters; } + @Override public List getThrowsExceptions() { return throwsExceptions; } - public String getBody() { - return body; + @Override + public Optional getBody() { + return Optional.of(body); } @Override - public List getModifiers() { + public List getModifiers() { return modifiers; } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodSerializer.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodSerializer.java index 4d727ae5b7..a37a8d653b 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodSerializer.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/MethodSerializer.java @@ -8,25 +8,27 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model; +import java.util.Optional; +import java.util.function.Consumer; +import java.util.stream.Collectors; +import javax.lang.model.element.Modifier; import org.opendaylight.controller.config.yangjmxgenerator.plugin.util.StringUtil; class MethodSerializer { static String toString(Method method) { StringBuilder build = new StringBuilder(); + Consumer appendWithSpace = string -> build.append(string).append(" "); + if (method.getJavadoc() != null) { build.append(StringUtil.writeComment(method.getJavadoc(), true)); } - for(Annotation a: method.getAnnotations()) { - build.append(a); - } + method.getAnnotations().forEach(build::append); build.append(" "); - build.append(method.getVisibility()).append(" "); - for (String mod : method.getModifiers()) { - build.append(mod).append(" "); - } + method.getVisibility().ifPresent(appendWithSpace); + method.getModifiers().forEach(appendWithSpace); build.append(method.getReturnType()).append(" "); build.append(method.getName()).append("("); @@ -35,30 +37,27 @@ class MethodSerializer { if (!firstParam) { build.append(", "); } - for (String mod : param.getModifiers()) { - build.append(mod).append(" "); - } + param.getModifiers().forEach(appendWithSpace); build.append(param.getType()).append(" "); build.append(param.getName()); firstParam = false; } build.append(")"); - if (method instanceof MethodDeclaration) { + if (!method.getThrowsExceptions().isEmpty()) { + build.append(" throws "); + build.append(method.getThrowsExceptions().stream().collect(Collectors.joining(", "))); + } + + Optional body = method.getBody(); + if (!body.isPresent()) { build.append(";"); build.append("\n"); - } else if (method instanceof MethodDefinition) { - MethodDefinition definition = (MethodDefinition) method; - if (!definition.getThrowsExceptions().isEmpty()) { - build.append(" throws "); - } - for (String ex : definition.getThrowsExceptions()) { - build.append(ex).append(" "); - } + } else { build.append(" {"); build.append("\n"); build.append(" "); - build.append(definition.getBody()); + build.append(body.get()); build.append("\n"); build.append(" "); build.append("}"); diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleField.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleField.java index 7dc864b676..bd28d93756 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleField.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleField.java @@ -11,6 +11,7 @@ package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import javax.lang.model.element.Modifier; import org.opendaylight.controller.config.yangjmxgenerator.attribute.Dependency; public class ModuleField extends Field { @@ -19,8 +20,9 @@ public class ModuleField extends Field { private final boolean dependent, isListOfDependencies; private final Dependency dependency; - private ModuleField(List modifiers, String type, String name, String attributeName, String nullableDefault, - boolean isDependency, Dependency dependency, boolean isListOfDependencies, boolean needsDepResolver) { + private ModuleField(List modifiers, String type, String name, String attributeName, + String nullableDefault, boolean isDependency, Dependency dependency, boolean isListOfDependencies, + boolean needsDepResolver) { super(modifiers, type, name, null, needsDepResolver); this.dependent = isDependency; this.dependency = dependency; @@ -35,7 +37,7 @@ public class ModuleField extends Field { public ModuleField(String type, String name, String attributeName, String nullableDefault, boolean isDependency, Dependency dependency, boolean isListOfDependencies, boolean needsDepResolve) { - this(Collections. emptyList(), type, name, attributeName, nullableDefault, isDependency, dependency, + this(Collections.emptyList(), type, name, attributeName, nullableDefault, isDependency, dependency, isListOfDependencies, needsDepResolve); } diff --git a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleFieldSerializer.java b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleFieldSerializer.java index abb3e4ccaf..bad7618c12 100644 --- a/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleFieldSerializer.java +++ b/opendaylight/config/yang-jmx-generator-plugin/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/plugin/ftl/model/ModuleFieldSerializer.java @@ -28,9 +28,7 @@ public class ModuleFieldSerializer { builder.append("\n"); builder.append(" private "); - for (String mod : moduleField.getModifiers()) { - builder.append(mod).append(" "); - } + moduleField.getModifiers().forEach(mod -> builder.append(mod).append(" ")); builder.append(moduleField.getType()).append(" "); builder.append(moduleField.getName()); if (moduleField.getNullableDefault() != null) {