Collapse SchemaContextUtil.typeDefinition() 40/86640/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 30 Dec 2019 11:36:34 +0000 (12:36 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 30 Dec 2019 21:18:16 +0000 (22:18 +0100)
We have TypedDataSchemaNode to hold the leaf/leaf-list trait of
having a type. This allows us to ditch some code duplication.

Change-Id: I959ff6a8f997e557736a081f89df6c16b69e1270
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 12c1e8fdac8294e5636dd82b8b2c39a3d3a8c3f5)

yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java

index c047ead58f252add5b6803478d3304fa65de96e7..2dffbdd4c45a6e294d0cf461fdfee1a3b9dcf278 100644 (file)
@@ -41,7 +41,6 @@ import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
@@ -926,36 +925,6 @@ public final class SchemaContextUtil {
         return STRIP_PATTERN.matcher(pathStatement.getOriginalString()).replaceAll("");
     }
 
-    /**
-     * Extracts the base type of leaf schema node until it reach concrete type of TypeDefinition.
-     *
-     * @param node
-     *            a node representing LeafSchemaNode
-     * @return concrete type definition of node value
-     */
-    private static TypeDefinition<?> typeDefinition(final LeafSchemaNode node) {
-        TypeDefinition<?> baseType = node.getType();
-        while (baseType.getBaseType() != null) {
-            baseType = baseType.getBaseType();
-        }
-        return baseType;
-    }
-
-    /**
-     * Extracts the base type of leaf schema node until it reach concrete type of TypeDefinition.
-     *
-     * @param node
-     *            a node representing LeafListSchemaNode
-     * @return concrete type definition of node value
-     */
-    private static TypeDefinition<?> typeDefinition(final LeafListSchemaNode node) {
-        TypeDefinition<?> baseType = node.getType();
-        while (baseType.getBaseType() != null) {
-            baseType = baseType.getBaseType();
-        }
-        return baseType;
-    }
-
     /**
      * Gets the base type of DataSchemaNode value.
      *
@@ -964,12 +933,15 @@ public final class SchemaContextUtil {
      * @return concrete type definition of node value
      */
     private static TypeDefinition<?> typeDefinition(final DataSchemaNode node) {
-        if (node instanceof LeafListSchemaNode) {
-            return typeDefinition((LeafListSchemaNode) node);
-        } else if (node instanceof LeafSchemaNode) {
-            return typeDefinition((LeafSchemaNode) node);
-        } else {
-            throw new IllegalArgumentException("Unhandled parameter type: " + node);
+        checkArgument(node instanceof TypedDataSchemaNode, "Unhandled parameter type %s", node);
+
+        TypeDefinition<?> current = ((TypedDataSchemaNode) node).getType();
+        // TODO: don't we have a utility for this?
+        TypeDefinition<?> base = current.getBaseType();
+        while (base != null) {
+            current = base;
+            base = current.getBaseType();
         }
+        return current;
     }
 }