2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.model.api;
10 import org.eclipse.jdt.annotation.NonNull;
11 import org.opendaylight.yangtools.yang.common.QName;
14 * SchemaNode represents a node in schema tree.
16 public interface SchemaNode extends DocumentedNode.WithStatus {
18 * Returns QName of the instance of the type <code>SchemaNode</code>.
20 * @return QName with the name of the schema node
22 @NonNull QName getQName();
25 * Returns the schema path of the instance of the type {@code SchemaNode}.
28 * The default implementation throws an {@link UnsupportedOperationException}.
30 * @return schema path of the schema node
31 * @throws UnsupportedOperationException when the implementation does not support per-node unique paths
32 * @deprecated The idea of identifying SchemaNodes through a global path does not work. There are two problems:
34 * <li>SchemaPath does not work because it does not discern namespaces, i.e. we do not known whether
35 * the {@code QName} refers to a {@code grouping}, a {@code typedef} or a {@code container}.
37 * <li>Such a path needs to be maintained by each SchemaNode and requires us to instantiate each
38 * effective statement as a separate object (because {@link #getPath()} is effectively an
39 * identity within a given {@link EffectiveModelContext}.
44 default @NonNull SchemaPath getPath() {
45 return SchemaNodeDefaults.throwUnsupported(this);