BUG-7267: catch null path offenders 37/49237/1
authorRobert Varga <rovarga@cisco.com>
Thu, 8 Dec 2016 10:54:29 +0000 (11:54 +0100)
committerRobert Varga <nite@hq.sk>
Mon, 12 Dec 2016 11:35:35 +0000 (11:35 +0000)
This provides a guard against invoking QName.create()
with a null base, reporting the original path.

Change-Id: Ic6bc661b94b5214336854a0cb20b6e595e7346e8
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypeUtils.java

index 11f460ae540a802d3b9338c026aaf3b80a510823..29de5ddc8960092f6c10ce99ec9e107cd059604c 100644 (file)
@@ -205,8 +205,12 @@ public final class TypeUtils {
 
     public static SchemaPath typeEffectiveSchemaPath(final StmtContext<?, ?, ?> stmtCtx) {
         final SchemaPath path = stmtCtx.getSchemaPath().get();
+        final SchemaPath parent = path.getParent();
+        final QName parentQName = parent.getLastComponent();
+        Preconditions.checkArgument(parentQName != null, "Path %s has an empty parent", path);
+
         final QName qname = stmtCtx.getFromNamespace(QNameCacheNamespace.class,
-            QName.create(path.getParent().getLastComponent(), path.getLastComponent().getLocalName()));
-        return path.getParent().createChild(qname);
+            QName.create(parentQName, path.getLastComponent().getLocalName()));
+        return parent.createChild(qname);
     }
 }