1 package org.opendaylight.controller.sal.restconf.impl;
4 import java.util.ArrayList;
5 import java.util.Collection;
6 import java.util.Collections;
11 import org.opendaylight.yangtools.yang.common.QName;
12 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
13 import org.opendaylight.yangtools.yang.data.api.ModifyAction;
14 import org.opendaylight.yangtools.yang.data.api.MutableCompositeNode;
15 import org.opendaylight.yangtools.yang.data.api.Node;
16 import org.opendaylight.yangtools.yang.data.api.SimpleNode;
17 import org.opendaylight.yangtools.yang.data.impl.NodeFactory;
19 import com.google.common.base.Preconditions;
21 public final class CompositeNodeWrapper implements NodeWrapper<CompositeNode>, CompositeNode {
23 private MutableCompositeNode compositeNode;
25 private String localName;
26 private URI namespace;
28 private List<NodeWrapper<?>> values = new ArrayList<>();
30 public CompositeNodeWrapper(String localName) {
31 this.localName = Preconditions.checkNotNull(localName);
34 public CompositeNodeWrapper(URI namespace, String localName) {
36 this.namespace = namespace;
40 public void setQname(QName name) {
41 Preconditions.checkState(compositeNode == null, "Cannot change the object, due to data inconsistencies.");
46 public String getLocalName() {
47 if (compositeNode != null) {
48 return compositeNode.getNodeType().getLocalName();
54 public URI getNamespace() {
55 if (compositeNode != null) {
56 return compositeNode.getNodeType().getNamespace();
62 public void setNamespace(URI namespace) {
63 Preconditions.checkState(compositeNode == null, "Cannot change the object, due to data inconsistencies.");
64 this.namespace = namespace;
67 public void addValue(NodeWrapper<?> value) {
68 Preconditions.checkState(compositeNode == null, "Cannot change the object, due to data inconsistencies.");
72 public void removeValue(NodeWrapper<CompositeNode> value) {
73 Preconditions.checkState(compositeNode == null, "Cannot change the object, due to data inconsistencies.");
77 public List<NodeWrapper<?>> getValues() {
78 Preconditions.checkState(compositeNode == null, "Data can be inconsistent.");
79 return Collections.unmodifiableList(values);
83 public CompositeNode unwrap() {
84 if (compositeNode == null) {
86 Preconditions.checkNotNull(namespace);
87 name = new QName(namespace, localName);
90 List<Node<?>> nodeValues = new ArrayList<>();
91 for (NodeWrapper<?> nodeWrapper : values) {
92 nodeValues.add(nodeWrapper.unwrap());
94 compositeNode = NodeFactory.createMutableCompositeNode(name, null, nodeValues, null, null);
101 return compositeNode;
105 public QName getNodeType() {
106 return unwrap().getNodeType();
110 public CompositeNode getParent() {
111 return unwrap().getParent();
115 public List<Node<?>> getValue() {
116 return unwrap().getValue();
120 public ModifyAction getModificationAction() {
121 return unwrap().getModificationAction();
125 public List<Node<?>> getChildren() {
126 return unwrap().getChildren();
130 public List<CompositeNode> getCompositesByName(QName children) {
131 return unwrap().getCompositesByName(children);
135 public List<CompositeNode> getCompositesByName(String children) {
136 return unwrap().getCompositesByName(children);
140 public List<SimpleNode<?>> getSimpleNodesByName(QName children) {
141 return unwrap().getSimpleNodesByName(children);
145 public List<SimpleNode<?>> getSimpleNodesByName(String children) {
146 return unwrap().getSimpleNodesByName(children);
150 public CompositeNode getFirstCompositeByName(QName container) {
151 return unwrap().getFirstCompositeByName(container);
155 public SimpleNode<?> getFirstSimpleByName(QName leaf) {
156 return unwrap().getFirstSimpleByName(leaf);
160 public MutableCompositeNode asMutable() {
161 return unwrap().asMutable();
165 public QName getKey() {
166 return unwrap().getKey();
170 public List<Node<?>> setValue(List<Node<?>> value) {
171 return unwrap().setValue(value);
176 return unwrap().size();
180 public boolean isEmpty() {
181 return unwrap().isEmpty();
185 public boolean containsKey(Object key) {
186 return unwrap().containsKey(key);
190 public boolean containsValue(Object value) {
191 return unwrap().containsValue(value);
195 public List<Node<?>> get(Object key) {
196 return unwrap().get(key);
200 public List<Node<?>> put(QName key, List<Node<?>> value) {
201 return unwrap().put(key, value);
205 public List<Node<?>> remove(Object key) {
206 return unwrap().remove(key);
210 public void putAll(Map<? extends QName, ? extends List<Node<?>>> m) {
215 public void clear() {
220 public Set<QName> keySet() {
221 return unwrap().keySet();
225 public Collection<List<Node<?>>> values() {
226 return unwrap().values();
230 public Set<java.util.Map.Entry<QName, List<Node<?>>>> entrySet() {
231 return unwrap().entrySet();