Improve generated toString() methods to skip null fields 07/4507/1
authorRobert Varga <rovarga@cisco.com>
Tue, 21 Jan 2014 14:54:46 +0000 (15:54 +0100)
committerRobert Varga <rovarga@cisco.com>
Tue, 21 Jan 2014 14:54:46 +0000 (15:54 +0100)
This checks if the field is set to null and if it is, it does not add it
to the resulting string.

Change-Id: If3e88f0ce1f73d1ca2cbc38cecfaf1f7a64d108a
Signed-off-by: Robert Varga <rovarga@cisco.com>
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend

index c12bd3402e24258d4067bcc619766a9505438e0b..625b3424abdc80cdcb1f7c343226a427a0c30aff 100644 (file)
@@ -260,23 +260,24 @@ abstract class BaseTemplate {
         «IF !properties.empty»
             @Override
             public String toString() {
-                StringBuilder builder = new StringBuilder();
-                builder.append("«type.name» [«properties.get(0).fieldName»=");
-                «IF properties.get(0).returnType.name.contains("[")»
-                    builder.append(«Arrays.importedName».toString(«properties.get(0).fieldName»));
-                «ELSE»
-                    builder.append(«properties.get(0).fieldName»);
-                «ENDIF»
-                «FOR i : 1..<properties.size»
-                    builder.append(", «properties.get(i).fieldName»=");
-                    «IF properties.get(i).returnType.name.contains("[")»
-                        builder.append(«Arrays.importedName».toString(«properties.get(i).fieldName»));
-                    «ELSE»
-                        builder.append(«properties.get(i).fieldName»);
-                    «ENDIF»
+                StringBuilder builder = new StringBuilder("«type.name» [");
+                boolean first = true;
+
+                «FOR i : 0..<properties.size»
+                    if («properties.get(i).fieldName» != null) {
+                        if (first) {
+                            builder.append(", ");
+                            first = false;
+                        }
+                        builder.append("«properties.get(i).fieldName»=");
+                        «IF properties.get(i).returnType.name.contains("[")»
+                            builder.append(«Arrays.importedName».toString(«properties.get(i).fieldName»));
+                        «ELSE»
+                            builder.append(«properties.get(i).fieldName»);
+                        «ENDIF»
+                     }
                 «ENDFOR»
-                builder.append("]");
-                return builder.toString();
+                return builder.append(']').toString();
             }
         «ENDIF»
     '''