Fixup SchemaNodeIdentifier design
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / ArgumentUtils.java
index d1cebe0e9b8e69fa730a19acb4e28b786c5ac6f9..7e168e6a8b235d4ff22fd35efa20014ea4bdf9b8 100644 (file)
@@ -19,6 +19,8 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnresolvedNumber;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
@@ -96,7 +98,11 @@ public final class ArgumentUtils {
             }
         }
 
-        return SchemaNodeIdentifier.create(qNames, PATH_ABS.matcher(path).matches());
+        if (qNames.isEmpty()) {
+            throw new SourceException("Schema node identifier must not be empty", ctx.getStatementSourceReference());
+        }
+
+        return PATH_ABS.matcher(path).matches() ? Absolute.of(qNames) : Descendant.of(qNames);
     }
 
     private static String trimSingleLastSlashFromXPath(final String path) {