b524271f1479c0cb1eec23667a54fabed2df7451
[yangtools.git] / yang / yang-data-util / src / main / java / org / opendaylight / yangtools / yang / data / util / RpcAsContainer.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.yangtools.yang.data.util;
9
10 import com.google.common.collect.ImmutableSet;
11 import java.util.ArrayList;
12 import java.util.Collection;
13 import java.util.Collections;
14 import java.util.List;
15 import java.util.Optional;
16 import java.util.Set;
17 import javax.annotation.Nonnull;
18 import org.opendaylight.yangtools.yang.common.QName;
19 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
20 import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
21 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
22 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
23 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
24 import org.opendaylight.yangtools.yang.model.api.MustDefinition;
25 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
26 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
27 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
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.UnknownSchemaNode;
32 import org.opendaylight.yangtools.yang.model.api.UsesNode;
33
34 public final class RpcAsContainer implements ContainerSchemaNode {
35
36     private final RpcDefinition delegate;
37
38     @Override
39     public Optional<String> getDescription() {
40         return delegate.getDescription();
41     }
42
43     @Override
44     public Optional<String> getReference() {
45         return delegate.getReference();
46     }
47
48     @Override
49     public Set<TypeDefinition<?>> getTypeDefinitions() {
50         return delegate.getTypeDefinitions();
51     }
52
53     @Override
54     public Set<GroupingDefinition> getGroupings() {
55         return delegate.getGroupings();
56     }
57
58     @Nonnull
59     @Override
60     public Status getStatus() {
61         return delegate.getStatus();
62     }
63
64     public ContainerSchemaNode getInput() {
65         return delegate.getInput();
66     }
67
68     public ContainerSchemaNode getOutput() {
69         return delegate.getOutput();
70     }
71
72     public RpcAsContainer(final RpcDefinition parentNode) {
73         delegate = parentNode;
74     }
75
76     @Nonnull
77     @Override
78     public QName getQName() {
79         return delegate.getQName();
80     }
81
82     @Nonnull
83     @Override
84     public SchemaPath getPath() {
85         return delegate.getPath();
86     }
87
88     @Nonnull
89     @Override
90     public List<UnknownSchemaNode> getUnknownSchemaNodes() {
91         return Collections.emptyList();
92     }
93
94     @Override
95     public Optional<DataSchemaNode> findDataChildByName(final QName name) {
96         // FIXME: check QNameModule
97         switch (name.getLocalName()) {
98             case "input":
99                 return Optional.of(delegate.getInput());
100             case "output":
101                 return Optional.of(delegate.getOutput());
102             default:
103                 return Optional.empty();
104         }
105     }
106
107     @Override
108     public Set<UsesNode> getUses() {
109         return Collections.emptySet();
110     }
111
112     @Override
113     public Set<AugmentationSchemaNode> getAvailableAugmentations() {
114         return Collections.emptySet();
115     }
116
117     @Override
118     public boolean isPresenceContainer() {
119         return false;
120     }
121
122     @Override
123     public Collection<DataSchemaNode> getChildNodes() {
124         final List<DataSchemaNode> ret = new ArrayList<>();
125         final ContainerSchemaNode input = getInput();
126         final ContainerSchemaNode output = getOutput();
127         if (input != null) {
128             ret.add(input);
129         }
130         if (output != null) {
131             ret.add(output);
132         }
133         return ret;
134     }
135
136     @Deprecated
137     @Override
138     public boolean isAugmenting() {
139         return false;
140     }
141
142     @Deprecated
143     @Override
144     public boolean isAddedByUses() {
145         return false;
146     }
147
148     @Override
149     public boolean isConfiguration() {
150         return false;
151     }
152
153     @Override
154     public Set<ActionDefinition> getActions() {
155         return ImmutableSet.of();
156     }
157
158     @Override
159     public Set<NotificationDefinition> getNotifications() {
160         return ImmutableSet.of();
161     }
162
163     @Override
164     public Collection<MustDefinition> getMustConstraints() {
165         return ImmutableSet.of();
166     }
167
168     @Override
169     public Optional<RevisionAwareXPath> getWhenCondition() {
170         return Optional.empty();
171     }
172 }