Rework MethodSerializer (+ fallout)
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / ftl / model / MethodSerializer.java
index eba6e53e23257899ccc178760cd3bc30b8e676f6..a37a8d653bf358751c33afdf4e6b12331718155c 100644 (file)
@@ -8,24 +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<Modifier> 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("    " + "public ");
-        for (String mod : method.getModifiers()) {
-            build.append(mod).append(" ");
-        }
+        build.append("    ");
+        method.getVisibility().ifPresent(appendWithSpace);
+        method.getModifiers().forEach(appendWithSpace);
         build.append(method.getReturnType()).append(" ");
 
         build.append(method.getName()).append("(");
@@ -34,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<String> 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("}");