Update DataTreeFactory
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / tree / DataTreeFactory.java
index ef0958f2fbc4009be3e20a5ab471c382a238a479..f7becfe3f88c98bca6cddd2d30e3a3827cba1fd2 100644 (file)
@@ -7,8 +7,6 @@
  */
 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.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
@@ -16,35 +14,17 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
  * 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, SchemaContext)} is recommended, as it does not suffer from this
+     * shortcoming.
+     *
      * @param treeConfig
      *          Tree configuration.
      * @return A data tree instance.
@@ -64,7 +44,6 @@ public interface DataTreeFactory {
      * @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);
 
     /**
@@ -77,7 +56,6 @@ public interface DataTreeFactory {
      * @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,
             NormalizedNodeContainer<?, ?, ?> initialRoot) throws DataValidationFailedException;
 }