X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fpersisted%2FDataTreeCandidateInputOutput.java;h=30bbca235b3839cc1c775d5bd263e62a53df9891;hp=35d9998cd6cda84db2a6d9a7a41c1d729d823b1b;hb=a2b838f96589b502578fa4e15cef2769f886a378;hpb=2658d126f67512fcaac684d2ccb7197fe12f61f4 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java index 35d9998cd6..30bbca235b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/persisted/DataTreeCandidateInputOutput.java @@ -24,6 +24,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNod import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNodes; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates; import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType; +import org.opendaylight.yangtools.yang.data.impl.schema.ReusableImmutableNormalizedNodeStreamWriter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,10 +49,11 @@ public final class DataTreeCandidateInputOutput { } private static DataTreeCandidateNode readModifiedNode(final ModificationType type, - final NormalizedNodeDataInput in) throws IOException { + final NormalizedNodeDataInput in, final ReusableImmutableNormalizedNodeStreamWriter writer) + throws IOException { final PathArgument identifier = in.readPathArgument(); - final Collection children = readChildren(in); + final Collection children = readChildren(in, writer); if (children.isEmpty()) { LOG.debug("Modified node {} does not have any children, not instantiating it", identifier); return null; @@ -60,7 +62,8 @@ public final class DataTreeCandidateInputOutput { return ModifiedDataTreeCandidateNode.create(identifier, type, children); } - private static Collection readChildren(final NormalizedNodeDataInput in) throws IOException { + private static Collection readChildren(final NormalizedNodeDataInput in, + final ReusableImmutableNormalizedNodeStreamWriter writer) throws IOException { final int size = in.readInt(); if (size == 0) { return ImmutableList.of(); @@ -68,7 +71,7 @@ public final class DataTreeCandidateInputOutput { final Collection ret = new ArrayList<>(size); for (int i = 0; i < size; ++i) { - final DataTreeCandidateNode child = readNode(in); + final DataTreeCandidateNode child = readNode(in, writer); if (child != null) { ret.add(child); } @@ -76,27 +79,29 @@ public final class DataTreeCandidateInputOutput { return ret; } - private static DataTreeCandidateNode readNode(final NormalizedNodeDataInput in) throws IOException { + private static DataTreeCandidateNode readNode(final NormalizedNodeDataInput in, + final ReusableImmutableNormalizedNodeStreamWriter writer) throws IOException { final byte type = in.readByte(); switch (type) { case APPEARED: - return readModifiedNode(ModificationType.APPEARED, in); + return readModifiedNode(ModificationType.APPEARED, in, writer); case DELETE: return DeletedDataTreeCandidateNode.create(in.readPathArgument()); case DISAPPEARED: - return readModifiedNode(ModificationType.DISAPPEARED, in); + return readModifiedNode(ModificationType.DISAPPEARED, in, writer); case SUBTREE_MODIFIED: - return readModifiedNode(ModificationType.SUBTREE_MODIFIED, in); + return readModifiedNode(ModificationType.SUBTREE_MODIFIED, in, writer); case UNMODIFIED: return null; case WRITE: - return DataTreeCandidateNodes.written(in.readNormalizedNode()); + return DataTreeCandidateNodes.written(in.readNormalizedNode(writer)); default: throw new IllegalArgumentException("Unhandled node type " + type); } } - public static DataTreeCandidate readDataTreeCandidate(final DataInput in) throws IOException { + public static DataTreeCandidate readDataTreeCandidate(final DataInput in, + final ReusableImmutableNormalizedNodeStreamWriter writer) throws IOException { final NormalizedNodeDataInput reader = NormalizedNodeInputOutput.newDataInput(in); final YangInstanceIdentifier rootPath = reader.readYangInstanceIdentifier(); final byte type = reader.readByte(); @@ -104,20 +109,22 @@ public final class DataTreeCandidateInputOutput { final DataTreeCandidateNode rootNode; switch (type) { case APPEARED: - rootNode = ModifiedDataTreeCandidateNode.create(ModificationType.APPEARED, readChildren(reader)); + rootNode = ModifiedDataTreeCandidateNode.create(ModificationType.APPEARED, + readChildren(reader, writer)); break; case DELETE: rootNode = DeletedDataTreeCandidateNode.create(); break; case DISAPPEARED: - rootNode = ModifiedDataTreeCandidateNode.create(ModificationType.DISAPPEARED, readChildren(reader)); + rootNode = ModifiedDataTreeCandidateNode.create(ModificationType.DISAPPEARED, + readChildren(reader, writer)); break; case SUBTREE_MODIFIED: rootNode = ModifiedDataTreeCandidateNode.create(ModificationType.SUBTREE_MODIFIED, - readChildren(reader)); + readChildren(reader, writer)); break; case WRITE: - rootNode = DataTreeCandidateNodes.written(reader.readNormalizedNode()); + rootNode = DataTreeCandidateNodes.written(reader.readNormalizedNode(writer)); break; case UNMODIFIED: rootNode = AbstractDataTreeCandidateNode.createUnmodified();