*/
package org.opendaylight.yangtools.yang.data.impl;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
/**
* @author michal.rehak
- *
+ *
*/
-public class CompositeNodeTOImpl extends AbstractNodeTO<List<Node<?>>> implements CompositeNode {
+public class CompositeNodeTOImpl extends AbstractNodeTO<List<Node<?>>> implements CompositeNode, Serializable {
+
+ private static final long serialVersionUID = 100L;
private Map<QName, List<Node<?>>> nodeMap = new HashMap<>();
* use null to create top composite node (without parent)
* @param value
*/
- public CompositeNodeTOImpl(QName qname, CompositeNode parent, List<Node<?>> value) {
+ public CompositeNodeTOImpl(final QName qname, final CompositeNode parent, final List<Node<?>> value) {
super(qname, parent, value);
init();
}
* @param value
* @param modifyAction
*/
- public CompositeNodeTOImpl(QName qname, CompositeNode parent, List<Node<?>> value, ModifyAction modifyAction) {
+ public CompositeNodeTOImpl(final QName qname, final CompositeNode parent, final List<Node<?>> value, final ModifyAction modifyAction) {
super(qname, parent, value, modifyAction);
init();
}
-
+
protected void init() {
if (getValue() != null) {
nodeMap = NodeUtils.buildNodeMap(getValue());
}
@Override
- public SimpleNode<?> getFirstSimpleByName(QName leafQName) {
+ public SimpleNode<?> getFirstSimpleByName(final QName leafQName) {
List<SimpleNode<?>> list = getSimpleNodesByName(leafQName);
if (list.isEmpty()) {
return null;
}
@Override
- public List<CompositeNode> getCompositesByName(QName children) {
+ public List<CompositeNode> getCompositesByName(final QName children) {
List<Node<?>> toFilter = getNodeMap().get(children);
if(toFilter == null) {
return Collections.emptyList();
}
@Override
- public List<SimpleNode<?>> getSimpleNodesByName(QName children) {
+ public List<SimpleNode<?>> getSimpleNodesByName(final QName children) {
List<Node<?>> toFilter = getNodeMap().get(children);
if(toFilter == null) {
return Collections.emptyList();
}
@Override
- public CompositeNode getFirstCompositeByName(QName container) {
+ public CompositeNode getFirstCompositeByName(final QName container) {
List<CompositeNode> list = getCompositesByName(container);
if (list.isEmpty()) {
return null;
* @param leaf
* @return TODO:: do we need this method?
*/
- public SimpleNode<?> getFirstLeafByName(QName leaf) {
+ public SimpleNode<?> getFirstLeafByName(final QName leaf) {
List<SimpleNode<?>> list = getSimpleNodesByName(leaf);
if (list.isEmpty()) {
return null;
}
@Override
- public List<CompositeNode> getCompositesByName(String children) {
- return getCompositesByName(new QName(getNodeType(), children));
+ public List<CompositeNode> getCompositesByName(final String children) {
+ return getCompositesByName(QName.create(getNodeType(), children));
}
@Override
- public List<SimpleNode<?>> getSimpleNodesByName(String children) {
- return getSimpleNodesByName(new QName(getNodeType(), children));
+ public List<SimpleNode<?>> getSimpleNodesByName(final String children) {
+ return getSimpleNodesByName(QName.create(getNodeType(), children));
}
@Override
public String toString() {
return super.toString() + ", children.size = " + (getChildren() != null ? getChildren().size() : "n/a");
}
-
+
@Override
public void clear() {
nodeMap.clear();
}
-
+
@Override
- public boolean containsKey(Object key) {
+ public boolean containsKey(final Object key) {
return nodeMap.containsKey(key);
}
-
+
@Override
- public boolean containsValue(Object value) {
+ public boolean containsValue(final Object value) {
return nodeMap.containsValue(value);
}
-
+
@Override
public Set<java.util.Map.Entry<QName, List<Node<?>>>> entrySet() {
return nodeMap.entrySet();
}
-
- @Override
- public boolean equals(Object obj) {
- return super.equals(obj);
- }
@Override
public int size() {
}
@Override
- public List<Node<?>> get(Object key) {
+ public List<Node<?>> get(final Object key) {
return nodeMap.get(key);
}
@Override
- public List<Node<?>> put(QName key, List<Node<?>> value) {
+ public List<Node<?>> put(final QName key, final List<Node<?>> value) {
return nodeMap.put(key, value);
}
@Override
- public List<Node<?>> remove(Object key) {
+ public List<Node<?>> remove(final Object key) {
return nodeMap.remove(key);
}
@Override
- public void putAll(Map<? extends QName, ? extends List<Node<?>>> m) {
+ public void putAll(final Map<? extends QName, ? extends List<Node<?>>> m) {
nodeMap.putAll(m);
}
public Collection<List<Node<?>>> values() {
return nodeMap.values();
}
+
+ // Serialization related
+
+ private void readObject(final ObjectInputStream aStream) throws IOException, ClassNotFoundException {
+ aStream.defaultReadObject();
+ QName qName = (QName)aStream.readObject();
+ CompositeNode parent = (CompositeNode) aStream.readObject();
+ @SuppressWarnings("unchecked")
+ List<Node<?>> value = (List<Node<?>>) aStream.readObject();
+ ModifyAction modifyAction = (ModifyAction) aStream.readObject();
+
+ init(qName, parent, value, modifyAction);
+ }
+
+ private void writeObject(final ObjectOutputStream aStream) throws IOException {
+ aStream.defaultWriteObject();
+ //manually serialize superclass
+ aStream.writeObject(getQName());
+ aStream.writeObject(getParent());
+ aStream.writeObject(getValue());
+ aStream.writeObject(getModificationAction());
+ }
}