Optimize AbstractBuilderTemplate key property sort 64/76964/1
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 13 Oct 2018 08:54:39 +0000 (10:54 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 13 Oct 2018 09:03:12 +0000 (11:03 +0200)
Rather than using a lambda for each comparison, create a constant
Comparator and reuse it.

Change-Id: I0b5af97b485f65924adb2de369a69e03027af887
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 8fde45a68a9a39ac9358e720f1e8f0791c8703a3)

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

index c156bd0f24f2ba07598e812fd8cbb8b3bfe3c915..dfc26d29aac11ae59d0b47b057e3d7ab32852a44 100644 (file)
@@ -12,6 +12,7 @@ import java.util.ArrayList
 import java.util.Arrays
 import java.util.Collection
 import java.util.Collections
+import java.util.Comparator
 import java.util.HashMap
 import java.util.HashSet
 import java.util.LinkedHashSet
@@ -39,6 +40,7 @@ import org.opendaylight.yangtools.yang.binding.Identifiable
  */
 
 class BuilderTemplate extends BaseTemplate {
+    static val Comparator<GeneratedProperty> KEY_PROPS_COMPARATOR = [ p1, p2 | return p1.name.compareTo(p2.name) ]
 
     /**
      * Constant with the name of the concrete method.
@@ -507,7 +509,7 @@ class BuilderTemplate extends BaseTemplate {
             «val keyType = type.getKey»
             «IF isList && keyType !== null»
                 «val keyProps = new ArrayList((keyType as GeneratedTransferObject).properties)»
-                «keyProps.sort([ p1, p2 | return p1.name.compareTo(p2.name) ]
+                «keyProps.sort(KEY_PROPS_COMPARATOR
                 «FOR field : keyProps»
                     «removeProperty(allProps, field.name)»
                 «ENDFOR»