- @Override
- public void merge(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) {
- try {
- if(YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)){
- pruneAndMergeNode(yangInstanceIdentifier, normalizedNode);
- } else {
- delegate.merge(yangInstanceIdentifier, normalizedNode);
+ /**
+ * A PruningDataTreeModification which performs pruning only when an operation results in an
+ * {@link SchemaValidationFailedException}. This offers superior performance in the normal case of not needing
+ * pruning.
+ */
+ public static final class Reactive extends PruningDataTreeModification {
+ public Reactive(final DataTreeModification delegate, final DataTree dataTree,
+ final ReusableNormalizedNodePruner pruner) {
+ super(delegate, dataTree, pruner);
+ }
+
+ @Override
+ public void merge(final YangInstanceIdentifier path, final NormalizedNode data) {
+ if (path.isEmpty()) {
+ pruneAndMergeNode(path, data);
+ return;