2 * Copyright (c) 2015 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.parser.stmt.rfc6020;
11 import org.opendaylight.yangtools.yang.common.QName;
12 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
13 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
14 import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour;
15 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
16 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
19 * Statement local namespace, which holds direct schema node descendants.
24 public class ChildSchemaNodes<D extends DeclaredStatement<QName>,E extends EffectiveStatement<QName, D>>
25 extends NamespaceBehaviour<QName, StmtContext<?, D, E>, ChildSchemaNodes<D, E>>
26 implements StatementNamespace<QName, D, E>{
28 public ChildSchemaNodes() {
29 super((Class) ChildSchemaNodes.class);
33 public StmtContext<?, D, E> get(final QName key) {
34 // TODO Auto-generated method stub
39 public StmtContext<?, D, E> getFrom(final NamespaceStorageNode storage, final QName key) {
40 return globalOrStatementSpecific(storage).getFromLocalStorage(getIdentifier(), key);
44 public Map<QName, StmtContext<?, D, E>> getAllFrom(final NamespaceStorageNode storage) {
45 // TODO Auto-generated method stub
49 @SuppressWarnings("unchecked")
51 public void addTo(final NamespaceBehaviour.NamespaceStorageNode storage, final QName key, final StmtContext<?, D, E> value) {
52 globalOrStatementSpecific(storage).addToLocalStorage(ChildSchemaNodes.class, key, value);
55 private static NamespaceStorageNode globalOrStatementSpecific(final NamespaceBehaviour.NamespaceStorageNode storage) {
56 NamespaceStorageNode current = storage;
57 while (current.getStorageNodeType() != StorageNodeType.STATEMENT_LOCAL && current.getStorageNodeType() != StorageNodeType.GLOBAL) {
58 current = current.getParentNamespaceStorage();