From 8fde45a68a9a39ac9358e720f1e8f0791c8703a3 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sat, 13 Oct 2018 10:54:39 +0200 Subject: [PATCH] Optimize AbstractBuilderTemplate key property sort Rather than using a lambda for each comparison, create a constant Comparator and reuse it. Change-Id: I0b5af97b485f65924adb2de369a69e03027af887 Signed-off-by: Robert Varga --- .../binding/java/api/generator/AbstractBuilderTemplate.xtend | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend index 0663588b78..198f02cf8a 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBuilderTemplate.xtend @@ -14,6 +14,7 @@ import com.google.common.base.MoreObjects import java.util.ArrayList import java.util.Collection import java.util.Collections +import java.util.Comparator import java.util.List import java.util.Map import java.util.Set @@ -27,6 +28,8 @@ import org.opendaylight.yangtools.yang.binding.CodeHelpers import org.opendaylight.yangtools.yang.binding.Identifiable abstract class AbstractBuilderTemplate extends BaseTemplate { + static val Comparator KEY_PROPS_COMPARATOR = [ p1, p2 | return p1.name.compareTo(p2.name) ] + /** * Generated property is set if among methods is found one with the name GET_AUGMENTATION_METHOD_NAME. */ @@ -137,7 +140,7 @@ abstract class AbstractBuilderTemplate extends BaseTemplate { «val isList = implementsIfc(targetType, Types.parameterizedTypeFor(Types.typeForClass(Identifiable), targetType))» «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» -- 2.36.6