+ final DataSchemaContextTree contextTree = DataSchemaContextTree.from(newSchemaContext);
+ final DataSchemaContextNode<?> rootContextNode = contextTree.getChild(rootPath);
+ if (rootContextNode == null) {
+ LOG.debug("Could not find root {} in new schema context, not upgrading", rootPath);
+ return;
+ }
+
+ final DataSchemaNode rootSchemaNode = rootContextNode.getDataSchemaNode();
+ if (!(rootSchemaNode instanceof DataNodeContainer)) {
+ LOG.warn("Root {} resolves to non-container type {}, not upgrading", rootPath, rootSchemaNode);
+ return;
+ }
+
+ final ModificationApplyOperation rootNode;
+ if (rootSchemaNode instanceof ContainerSchemaNode) {
+ // FIXME: real root needs to enfore presence, but that require pre-population
+ rootNode = new ContainerModificationStrategy((ContainerSchemaNode) rootSchemaNode, treeType);
+ } else {
+ rootNode = SchemaAwareApplyOperation.from(rootSchemaNode, treeType);
+ }