+ InMemoryDataTree(final TreeNode rootNode, final DataTreeConfiguration treeConfig, final SchemaContext schemaContext,
+ final DataSchemaNode rootSchemaNode, final boolean maskMandatory) {
+ this.treeConfig = Preconditions.checkNotNull(treeConfig, "treeConfig");
+ this.maskMandatory = maskMandatory;
+
+ state = DataTreeState.createInitial(rootNode).withSchemaContext(schemaContext, getOperation(rootSchemaNode));
+ }
+
+ private ModificationApplyOperation getOperation(final DataSchemaNode rootSchemaNode) {
+ if (maskMandatory && rootSchemaNode instanceof ContainerSchemaNode) {
+ return new ContainerModificationStrategy((ContainerSchemaNode) rootSchemaNode, treeConfig);
+ }
+
+ return SchemaAwareApplyOperation.from(rootSchemaNode, treeConfig);
+ }
+