X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2Fstream%2FNormalizedNodeInputStreamReader.java;h=797258b4438cc61825524136ecb0b6aa4ff2aa5e;hb=b17a51ecb983331f0e521e40f9dd2474f268de13;hp=bdc52bca688a0c354f9c91ad7de6c6b774bcd966;hpb=d0825a4c573ca648bf509916864645d2ad65dfda;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java index bdc52bca68..797258b443 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/stream/NormalizedNodeInputStreamReader.java @@ -55,19 +55,22 @@ import java.util.Set; public class NormalizedNodeInputStreamReader implements NormalizedNodeStreamReader { - private DataInputStream reader; - private static final Logger LOG = LoggerFactory.getLogger(NormalizedNodeInputStreamReader.class); - private Map codedStringMap = new HashMap<>(); private static final String REVISION_ARG = "?revision="; + private final DataInputStream reader; + + private final Map codedStringMap = new HashMap<>(); + + private QName lastLeafSetQName; + public NormalizedNodeInputStreamReader(InputStream stream) throws IOException { Preconditions.checkNotNull(stream); reader = new DataInputStream(stream); } - + @Override public NormalizedNode readNormalizedNode() throws IOException { NormalizedNode node = null; @@ -89,20 +92,21 @@ public class NormalizedNodeInputStreamReader implements NormalizedNodeStreamRead node = augmentationBuilder.build(); } else { - QName qName = readQName(); - if(nodeType == NodeTypes.LEAF_SET_ENTRY_NODE) { LOG.debug("Reading leaf set entry node. Will create NodeWithValue instance identifier"); // Read the object value Object value = readObject(); - YangInstanceIdentifier.NodeWithValue nodeWithValue = new YangInstanceIdentifier.NodeWithValue(qName, value); - node = Builders.leafSetEntryBuilder().withNodeIdentifier(nodeWithValue).withValue(value).build(); + YangInstanceIdentifier.NodeWithValue nodeWithValue = new YangInstanceIdentifier.NodeWithValue( + lastLeafSetQName, value); + node = Builders.leafSetEntryBuilder().withNodeIdentifier(nodeWithValue). + withValue(value).build(); } else if(nodeType == NodeTypes.MAP_ENTRY_NODE) { LOG.debug("Reading map entry node. Will create node identifier with predicates."); + QName qName = readQName(); YangInstanceIdentifier.NodeIdentifierWithPredicates nodeIdentifier = new YangInstanceIdentifier.NodeIdentifierWithPredicates(qName, readKeyValueMap()); DataContainerNodeAttrBuilder mapEntryBuilder @@ -114,6 +118,8 @@ public class NormalizedNodeInputStreamReader implements NormalizedNodeStreamRead } else { LOG.debug("Creating standard node identifier. "); + + QName qName = readQName(); YangInstanceIdentifier.NodeIdentifier identifier = new YangInstanceIdentifier.NodeIdentifier(qName); node = readNodeIdentifierDependentNode(nodeType, identifier); @@ -134,7 +140,7 @@ public class NormalizedNodeInputStreamReader implements NormalizedNodeStreamRead case NodeTypes.ANY_XML_NODE : LOG.debug("Read xml node"); - Node value = (Node) readObject(); + Node value = (Node) readObject(); return Builders.anyXmlBuilder().withValue(value).build(); case NodeTypes.MAP_NODE : @@ -186,7 +192,7 @@ public class NormalizedNodeInputStreamReader implements NormalizedNodeStreamRead LOG.debug("Read leaf set node"); ListNodeBuilder> leafSetBuilder = Builders.leafSetBuilder().withNodeIdentifier(identifier); - leafSetBuilder = addLeafSetChildren(leafSetBuilder); + leafSetBuilder = addLeafSetChildren(identifier.getNodeType(), leafSetBuilder); return leafSetBuilder.build(); default : @@ -325,11 +331,14 @@ public class NormalizedNodeInputStreamReader implements NormalizedNodeStreamRead } } - private ListNodeBuilder> addLeafSetChildren(ListNodeBuilder> builder) + private ListNodeBuilder> addLeafSetChildren(QName nodeType, + ListNodeBuilder> builder) throws IOException { LOG.debug("Reading children of leaf set"); + + lastLeafSetQName = nodeType; + LeafSetEntryNode child = (LeafSetEntryNode)readNormalizedNode(); while(child != null) {