Speed up ClassTemplate getDefaultInstance() generation 72/81072/1
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 19 Mar 2019 11:30:08 +0000 (12:30 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 21 Mar 2019 10:50:43 +0000 (11:50 +0100)
We can skip instantiating FQCN and just compare against constants,
which results in faster dispatch.

Change-Id: I681888872db411b4f70b3b09d205540d8b607568
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 103315ce162d60ca6896269a97ebaf34bf299e34)

binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend

index 8fd35a3c9e3a9be14b975890f0268659ca95d5ca..337c7a7c8801e25f4dd90103d9fdda3daa10c87d 100644 (file)
@@ -8,6 +8,9 @@
 package org.opendaylight.mdsal.binding.java.api.generator
 
 import static java.util.Objects.requireNonNull
+import static org.opendaylight.mdsal.binding.model.util.Types.BOOLEAN;
+import static org.opendaylight.mdsal.binding.model.util.Types.BYTE_ARRAY;
+import static org.opendaylight.mdsal.binding.model.util.Types.STRING;
 import static extension org.apache.commons.text.StringEscapeUtils.escapeJava
 
 import com.google.common.collect.ImmutableList
@@ -329,13 +332,13 @@ class ClassTemplate extends BaseTemplate {
             «val prop = allProperties.get(0)»
             «IF !("org.opendaylight.yangtools.yang.binding.InstanceIdentifier".equals(prop.returnType.fullyQualifiedName))»
             public static «genTO.name» getDefaultInstance(String defaultValue) {
-                «IF "byte[]".equals(prop.returnType.name)»
+                «IF BYTE_ARRAY.equals(prop.returnType)»
                     return new «genTO.name»(«Base64.importedName».getDecoder().decode(defaultValue));
-                «ELSEIF "java.lang.String".equals(prop.returnType.fullyQualifiedName)»
+                «ELSEIF STRING.equals(prop.returnType)»
                     return new «genTO.name»(defaultValue);
                 «ELSEIF allProperties.size > 1»
                     «bitsArgs»
-                «ELSEIF "java.lang.Boolean".equals(prop.returnType.fullyQualifiedName)»
+                «ELSEIF BOOLEAN.equals(prop.returnType)»
                     return new «genTO.name»(«Boolean.importedName».valueOf(defaultValue));
                 «ELSEIF "java.lang.Byte".equals(prop.returnType.fullyQualifiedName)»
                     return new «genTO.name»(«Byte.importedName».valueOf(defaultValue));