X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Futils%2FPruningDataTreeModification.java;h=d59e5643458b5184ced5ff35eab2baa4dbca4fb7;hb=132578158b5b621b6ff372219fdfd4f8c5728885;hp=cc976b381f98b7c76b9811f28aa6dbf5e1cfbe04;hpb=a54716c7a8c9a49a6b7b19eaedfbe522a2556b2b;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/PruningDataTreeModification.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/PruningDataTreeModification.java index cc976b381f..d59e564345 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/PruningDataTreeModification.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/PruningDataTreeModification.java @@ -50,41 +50,57 @@ public class PruningDataTreeModification implements DataTreeModification { @Override public void merge(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode normalizedNode) { try { - delegate.merge(yangInstanceIdentifier, normalizedNode); + if(YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)){ + pruneAndMergeNode(yangInstanceIdentifier, normalizedNode); + } else { + delegate.merge(yangInstanceIdentifier, normalizedNode); + } } catch (SchemaValidationFailedException e){ if(!isValidYangInstanceIdentifier(yangInstanceIdentifier)){ LOG.warn("Invalid node identifier {} ignoring merge", yangInstanceIdentifier); return; } - LOG.warn("Node at path : {} was pruned during merge", yangInstanceIdentifier); + pruneAndMergeNode(yangInstanceIdentifier, normalizedNode); + } + + } - NormalizedNode pruned = pruneNormalizedNode(normalizedNode); + private void pruneAndMergeNode(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode normalizedNode) { + LOG.warn("Node at path : {} was pruned during merge", yangInstanceIdentifier); - if(pruned != null) { - delegate.merge(yangInstanceIdentifier, pruned); - } - } + NormalizedNode pruned = pruneNormalizedNode(normalizedNode); + if(pruned != null) { + delegate.merge(yangInstanceIdentifier, pruned); + } } @Override public void write(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode normalizedNode) { try { - delegate.write(yangInstanceIdentifier, normalizedNode); + if(YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)){ + pruneAndWriteNode(yangInstanceIdentifier, normalizedNode); + } else { + delegate.write(yangInstanceIdentifier, normalizedNode); + } } catch (SchemaValidationFailedException e){ if(!isValidYangInstanceIdentifier(yangInstanceIdentifier)){ LOG.warn("Invalid node identifier {} ignoring write", yangInstanceIdentifier); return; } - LOG.warn("Node at path : {} was pruned during write", yangInstanceIdentifier); + pruneAndWriteNode(yangInstanceIdentifier, normalizedNode); + } + } + + private void pruneAndWriteNode(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode normalizedNode) { + LOG.warn("Node at path : {} was pruned during write", yangInstanceIdentifier); - NormalizedNode pruned = pruneNormalizedNode(normalizedNode); + NormalizedNode pruned = pruneNormalizedNode(normalizedNode); - if(pruned != null) { - delegate.write(yangInstanceIdentifier, pruned); - } + if(pruned != null) { + delegate.write(yangInstanceIdentifier, pruned); } }