X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2FCompositeNodeTOImpl.java;h=4f0b3a524247681974d1d1a572e02643ff0524ce;hb=d0c139c15f144e40ffffbcdf51dd8db11fc6fa6d;hp=48d25523f3cebc3825ba2a8a0ce1c731ff855507;hpb=eb6fbdd3d8f1a5395163a36f6e74f6e6139e001a;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/CompositeNodeTOImpl.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/CompositeNodeTOImpl.java index 48d25523f3..4f0b3a5242 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/CompositeNodeTOImpl.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/CompositeNodeTOImpl.java @@ -7,13 +7,6 @@ */ package org.opendaylight.yangtools.yang.data.impl; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; - import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.ModifyAction; @@ -21,13 +14,27 @@ import org.opendaylight.yangtools.yang.data.api.MutableCompositeNode; import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.data.api.SimpleNode; +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; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + /** * @author michal.rehak * */ -public class CompositeNodeTOImpl extends AbstractNodeTO>> implements CompositeNode { +public class CompositeNodeTOImpl extends AbstractNodeTO>> implements CompositeNode, Serializable { + + private static final long serialVersionUID = 100L; - private Map>> nodeMap; + private Map>> nodeMap = new HashMap<>(); /** * @param qname @@ -37,9 +44,6 @@ public class CompositeNodeTOImpl extends AbstractNodeTO>> implement */ public CompositeNodeTOImpl(QName qname, CompositeNode parent, List> value) { super(qname, parent, value); - if (value != null) { - nodeMap = NodeUtils.buildNodeMap(getValue()); - } init(); } @@ -54,10 +58,13 @@ public class CompositeNodeTOImpl extends AbstractNodeTO>> implement super(qname, parent, value, modifyAction); init(); } + + protected void init() { + if (getValue() != null) { + nodeMap = NodeUtils.buildNodeMap(getValue()); + } + } - /** - * @return the nodeMap - */ protected Map>> getNodeMap() { return nodeMap; } @@ -79,6 +86,9 @@ public class CompositeNodeTOImpl extends AbstractNodeTO>> implement @Override public List getCompositesByName(QName children) { List> toFilter = getNodeMap().get(children); + if(toFilter == null) { + return Collections.emptyList(); + } List list = new ArrayList(); for (Node node : toFilter) { if (node instanceof CompositeNode) { @@ -91,6 +101,9 @@ public class CompositeNodeTOImpl extends AbstractNodeTO>> implement @Override public List> getSimpleNodesByName(QName children) { List> toFilter = getNodeMap().get(children); + if(toFilter == null) { + return Collections.emptyList(); + } List> list = new ArrayList>(); for (Node node : toFilter) { @@ -132,12 +145,6 @@ public class CompositeNodeTOImpl extends AbstractNodeTO>> implement return getSimpleNodesByName(new QName(getNodeType(), children)); } - protected void init() { - if (getValue() != null) { - nodeMap = NodeUtils.buildNodeMap(getValue()); - } - } - @Override public MutableCompositeNode asMutable() { throw new IllegalAccessError("cast to mutable is not supported - " + getClass().getSimpleName()); @@ -212,4 +219,25 @@ public class CompositeNodeTOImpl extends AbstractNodeTO>> implement public Collection>> values() { return nodeMap.values(); } + + // Serialization related + + private void readObject(ObjectInputStream aStream) throws IOException, ClassNotFoundException { + aStream.defaultReadObject(); + QName qName = (QName)aStream.readObject(); + CompositeNode parent = (CompositeNode) aStream.readObject(); + List> value = (List>) aStream.readObject(); + ModifyAction modifyAction = (ModifyAction) aStream.readObject(); + + init(qName, parent, value, modifyAction); + } + + private void writeObject(ObjectOutputStream aStream) throws IOException { + aStream.defaultWriteObject(); + //manually serialize superclass + aStream.writeObject(getQName()); + aStream.writeObject(getParent()); + aStream.writeObject(getValue()); + aStream.writeObject(getModificationAction()); + } }