- case DELETE:
- modification.delete(path);
- LOG.debug("Modification {} deleted path {}", modification, path);
- break;
- case SUBTREE_MODIFIED:
- LOG.debug("Modification {} modified path {}", modification, path);
-
- NodeIterator iterator = new NodeIterator(null, path, node.getChildNodes().iterator());
- do {
- iterator = iterator.next(modification);
- } while (iterator != null);
- break;
- case UNMODIFIED:
- LOG.debug("Modification {} unmodified path {}", modification, path);
- // No-op
- break;
- case WRITE:
- modification.write(path, node.getDataAfter().get());
- LOG.debug("Modification {} written path {}", modification, path);
- break;
- default:
- throw new IllegalArgumentException("Unsupported modification " + node.getModificationType());
+ case DELETE:
+ modification.delete(path);
+ LOG.debug("Modification {} deleted path {}", modification, path);
+ break;
+ case SUBTREE_MODIFIED:
+ LOG.debug("Modification {} modified path {}", modification, path);
+
+ NodeIterator iterator = new NodeIterator(null, path, node.getChildNodes().iterator());
+ do {
+ iterator = iterator.next(modification);
+ } while (iterator != null);
+ break;
+ case UNMODIFIED:
+ LOG.debug("Modification {} unmodified path {}", modification, path);
+ // No-op
+ break;
+ case WRITE:
+ modification.write(path, node.getDataAfter().get());
+ LOG.debug("Modification {} written path {}", modification, path);
+ break;
+ default:
+ throw new IllegalArgumentException("Unsupported modification " + node.getModificationType());
+ }
+ }
+
+ private static void applyToCursorAwareModification(final CursorAwareDataTreeModification modification,
+ final DataTreeCandidate candidate) {
+ final YangInstanceIdentifier candidatePath = candidate.getRootPath();
+ if (candidatePath.isEmpty()) {
+ try (DataTreeModificationCursor cursor = modification.openCursor()) {
+ DataTreeCandidateNodes.applyRootToCursor(cursor, candidate.getRootNode());
+ }
+ } else {
+ try (DataTreeModificationCursor cursor = modification.openCursor(candidatePath.getParent()).get()) {
+ DataTreeCandidateNodes.applyRootedNodeToCursor(cursor, candidatePath, candidate.getRootNode());
+ }