From 0ab42f15257f603ae777ff9da4cf9f8aa35435a0 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 20 Apr 2020 14:40:45 +0200 Subject: [PATCH] Speed up BaseYangTypesProvider Most of the time we do not need to go through the switch expression and restricted types. Short-circuit lookup when we know we do not have restrictions. Change-Id: I84568a180c6ed208e077dbe3c0cb749e84acf3cf Signed-off-by: Robert Varga --- .../generator/util/BaseYangTypesProvider.java | 59 ++++++++++--------- 1 file changed, 31 insertions(+), 28 deletions(-) diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/generator/util/BaseYangTypesProvider.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/generator/util/BaseYangTypesProvider.java index 263a0a25cd..2427eb1c33 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/generator/util/BaseYangTypesProvider.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/generator/util/BaseYangTypesProvider.java @@ -52,35 +52,38 @@ public final class BaseYangTypesProvider implements TypeProvider { public Type javaTypeForSchemaDefinitionType(final TypeDefinition type, final SchemaNode parentNode, final Restrictions restrictions, final boolean lenientRelativeLeafrefs) { final String typeName = type.getQName().getLocalName(); - switch (typeName) { - case "binary": - return restrictions == null ? BaseYangTypes.BINARY_TYPE - : Types.typeForClass(byte[].class, restrictions); - case "decimal64": - return Types.typeForClass(BigDecimal.class, restrictions); - case "enumeration": - return Types.typeForClass(Enum.class, restrictions); - case "int8": - return Types.typeForClass(Byte.class, restrictions); - case "int16": - return Types.typeForClass(Short.class, restrictions); - case "int32": - return Types.typeForClass(Integer.class, restrictions); - case "int64": - return Types.typeForClass(Long.class, restrictions); - case "string": - return Types.typeForClass(String.class, restrictions); - case "uint8": - return Types.typeForClass(Uint8.class, restrictions); - case "uint16": - return Types.typeForClass(Uint16.class, restrictions); - case "uint32": - return Types.typeForClass(Uint32.class, restrictions); - case "uint64": - return Types.typeForClass(Uint64.class, restrictions); - default: - return javaTypeForSchemaDefinitionType(type, parentNode, lenientRelativeLeafrefs); + if (restrictions != null) { + switch (typeName) { + case "binary": + return Types.typeForClass(byte[].class, restrictions); + case "decimal64": + return Types.typeForClass(BigDecimal.class, restrictions); + case "enumeration": + return Types.typeForClass(Enum.class, restrictions); + case "int8": + return Types.typeForClass(Byte.class, restrictions); + case "int16": + return Types.typeForClass(Short.class, restrictions); + case "int32": + return Types.typeForClass(Integer.class, restrictions); + case "int64": + return Types.typeForClass(Long.class, restrictions); + case "string": + return Types.typeForClass(String.class, restrictions); + case "uint8": + return Types.typeForClass(Uint8.class, restrictions); + case "uint16": + return Types.typeForClass(Uint16.class, restrictions); + case "uint32": + return Types.typeForClass(Uint32.class, restrictions); + case "uint64": + return Types.typeForClass(Uint64.class, restrictions); + default: + break; + } } + + return BaseYangTypes.javaTypeForYangType(typeName); } @Override -- 2.36.6