*/
package org.opendaylight.yangtools.yang.data.api.schema.tree;
-import com.google.common.annotations.Beta;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
/**
* Factory interface for creating data trees.
*/
public interface DataTreeFactory {
- /**
- * Create a new data tree.
- * @param type
- * Tree type.
- * @return A data tree instance.
- *
- * @deprecated Use {@link #create(DataTreeConfiguration)} instead.
- */
- @Deprecated
- DataTree create(TreeType type);
-
- /**
- * Create a new data tree rooted at a particular node.
- * @param treeType
- * Tree type.
- * @param rootPath
- * Root.
- * @return A data tree instance.
- *
- * @deprecated Use {@link #create(DataTreeConfiguration)} instead.
- */
- @Deprecated
- DataTree create(TreeType treeType, YangInstanceIdentifier rootPath);
-
/**
* Create a new data tree based on specified configuration, with a best-guess root. Use this method only if you
* do not have a corresponding SchemaContext handy. Mandatory nodes whose enforcement point is the root node will
* not be enforced even if some are present in the SchemaContext and validation is requested in configuration.
*
+ * <p>
+ * Correctness note: this method may not accurately initialize the root node in certain non-root scenarios due to
+ * the impossibility to accurately derive root type from plain YangInstanceIdentifier. Using
+ * {@link #create(DataTreeConfiguration, EffectiveModelContext)} is recommended, as it does not suffer from this
+ * shortcoming.
+ *
* @param treeConfig
* Tree configuration.
* @return A data tree instance.
* @throws NullPointerException if treeConfig is null
*/
- DataTree create(DataTreeConfiguration treeConfig);
+ @NonNull DataTree create(DataTreeConfiguration treeConfig);
/**
* Create a new data tree based on specified configuration, with a root node derived from the schema context lookup
* @throws IllegalArgumentException if tree configuration does not match the SchemaContext, for example by root path
* referring to a node which does not exist in the SchemaContext
*/
- @Beta
- DataTree create(DataTreeConfiguration treeConfig, SchemaContext initialSchemaContext);
+ @NonNull DataTree create(DataTreeConfiguration treeConfig, EffectiveModelContext initialSchemaContext);
/**
* Create a new data tree based on specified configuration, with the specified node.
* @throws NullPointerException if any of the arguments are null
* @throws IllegalArgumentException if a mismatch between the arguments is detected
*/
- @Beta
- DataTree create(DataTreeConfiguration treeConfig, SchemaContext initialSchemaContext,
+ @NonNull DataTree create(DataTreeConfiguration treeConfig, EffectiveModelContext initialSchemaContext,
NormalizedNodeContainer<?, ?, ?> initialRoot) throws DataValidationFailedException;
}