2 * Copyright (c) 2014 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.netconf.util;
10 import static java.util.Objects.requireNonNull;
12 import com.google.common.annotations.VisibleForTesting;
13 import com.google.common.collect.Maps;
14 import java.util.Collection;
16 import java.util.Optional;
18 import org.eclipse.jdt.annotation.NonNull;
19 import org.opendaylight.yangtools.yang.common.QName;
20 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
21 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
22 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
23 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
24 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
25 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
26 import org.opendaylight.yangtools.yang.model.api.MustDefinition;
27 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
28 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
29 import org.opendaylight.yangtools.yang.model.api.Status;
30 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
31 import org.opendaylight.yangtools.yang.model.api.UsesNode;
32 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement;
33 import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBound;
36 * Simple proxy for container like schema nodes, where user provides a collection of children schema nodes.
38 * @deprecated This class is no longer used anywhere and is scheduled for removal.
40 @Deprecated(since = "2.0.0", forRemoval = true)
41 public final class NodeContainerProxy implements ContainerSchemaNode {
42 private final Collection<? extends AugmentationSchemaNode> availableAugmentations;
43 private final @NonNull Map<QName, ? extends DataSchemaNode> childNodes;
44 private final @NonNull SchemaPath path;
45 private final @NonNull QName qname;
48 NodeContainerProxy(final QName qname, final SchemaPath path, final Map<QName, ? extends DataSchemaNode> childNodes,
49 final Collection<? extends AugmentationSchemaNode> availableAugmentations) {
50 this.qname = requireNonNull(qname);
51 this.path = requireNonNull(path);
52 this.childNodes = requireNonNull(childNodes);
53 this.availableAugmentations = availableAugmentations;
56 public static @NonNull NodeContainerProxy ofModelContext(final QName qname, final EffectiveModelContext context) {
57 return new NodeContainerProxy(qname, SchemaPath.ROOT, asMap(context.getChildNodes()), Set.of());
60 public static @NonNull NodeContainerProxy ofNotification(final NotificationDefinition notification) {
61 return new NodeContainerProxy(notification.getQName(), notification.getPath(),
62 asMap(notification.getChildNodes()), notification.getAvailableAugmentations());
65 private static Map<QName, ? extends DataSchemaNode> asMap(final Collection<? extends DataSchemaNode> childNodes) {
66 return Maps.uniqueIndex(childNodes, DataSchemaNode::getQName);
70 public Collection<? extends TypeDefinition<?>> getTypeDefinitions() {
75 public Collection<? extends DataSchemaNode> getChildNodes() {
76 return childNodes.values();
80 public Collection<? extends GroupingDefinition> getGroupings() {
85 public DataSchemaNode dataChildByName(final QName name) {
86 return childNodes.get(name);
90 public Collection<? extends UsesNode> getUses() {
95 public boolean isPresenceContainer() {
96 throw new UnsupportedOperationException();
100 public Collection<? extends AugmentationSchemaNode> getAvailableAugmentations() {
101 return availableAugmentations;
106 public boolean isAugmenting() {
107 throw new UnsupportedOperationException();
112 public boolean isAddedByUses() {
113 throw new UnsupportedOperationException();
117 public Optional<Boolean> effectiveConfig() {
118 throw new UnsupportedOperationException();
122 public QName getQName() {
128 public SchemaPath getPath() {
133 public Optional<String> getDescription() {
134 throw new UnsupportedOperationException();
138 public Optional<String> getReference() {
139 throw new UnsupportedOperationException();
143 public Status getStatus() {
144 throw new UnsupportedOperationException();
148 public Collection<? extends NotificationDefinition> getNotifications() {
153 public Collection<? extends ActionDefinition> getActions() {
158 public Optional<? extends QualifiedBound> getWhenCondition() {
159 return Optional.empty();
163 public Collection<? extends @NonNull MustDefinition> getMustConstraints() {
168 public ContainerEffectiveStatement asEffectiveStatement() {
169 throw new UnsupportedOperationException();