Speed up BaseYangTypesProvider 47/89147/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 20 Apr 2020 12:40:45 +0000 (14:40 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 20 Apr 2020 12:40:45 +0000 (14:40 +0200)
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 <robert.varga@pantheon.tech>
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/generator/util/BaseYangTypesProvider.java

index 263a0a25cde1e322ffaf25bb6c7c41ebfedc3e8c..2427eb1c33e1f6cd5d46609f60e152aa93b7263b 100644 (file)
@@ -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