import java.util.Collection;
import java.util.Map.Entry;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
+import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNodes;
import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.Version;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
}
}
- private static void checkIdentifierReferencesData(final YangInstanceIdentifier path,
- final NormalizedNode<?, ?> data) {
- final PathArgument lastArg = path.getLastPathArgument();
- Preconditions.checkArgument(data.getIdentifier().equals(lastArg),
- "Instance identifier references %s but data identifier is %s", lastArg, data.getIdentifier());
+ private static void checkIdentifierReferencesData(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) {
+ if (!path.isEmpty()) {
+ final PathArgument lastArg = path.getLastPathArgument();
+ Preconditions.checkArgument(lastArg != null, "Instance identifier %s has invalid null path argument", path);
+ Preconditions.checkArgument(lastArg.equals(data.getIdentifier()),
+ "Instance identifier references %s but data identifier is %s", lastArg, data.getIdentifier());
+ } else {
+ final QName type = data.getNodeType();
+ Preconditions.checkArgument(SchemaContext.NAME.equals(type), "Incorrect name %s of root node", type);
+ }
}
}