Migrate default method implementations to model.api
[yangtools.git] / yang / yang-model-api / src / main / java / org / opendaylight / yangtools / yang / model / api / Deviation.java
index 3a7cce85b546545f1c5f49b915a178e88cbb0991..f9b31d3e2ce9c4ae8241486277e96b6dad2b526d 100644 (file)
@@ -7,47 +7,32 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-import java.util.List;
+import java.util.Collection;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.model.api.stmt.DeviationEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 
 /**
  * Interface describing YANG 'deviation' statement.
+ *
  * <p>
- * The 'deviation' statement defines a hierarchy of a module that the device
- * does not implement faithfully. Deviations define the way a device deviate
- * from a standard.
- * </p>
+ * The 'deviation' statement defines a hierarchy of a module that the device does not implement faithfully. Deviations
+ * define the way a device deviate from a standard.
  */
-public interface Deviation {
-
+public interface Deviation extends DocumentedNode, EffectiveStatementEquivalent<DeviationEffectiveStatement> {
     /**
-     * Enum describing YANG deviation 'deviate' statement. It defines how the
-     * device's implementation of the target node deviates from its original
-     * definition.
+     * Returns target node absolute schema node identifier.
+     *
+     * @return An identifier that points to the node in the schema tree where a deviation from the module occurs.
      */
-    enum Deviate {
-        NOT_SUPPORTED, ADD, REPLACE, DELETE
+    default @NonNull Absolute getTargetPath() {
+        return asEffectiveStatement().argument();
     }
 
     /**
-     * @return SchemaPath that identifies the node in the schema tree where a
-     *         deviation from the module occurs.
-     */
-    SchemaPath getTargetPath();
-
-    /**
-     * @return deviate statement of this deviation
-     */
-    Deviate getDeviate();
-
-    /**
-     * @return textual cross-reference to an external document that provides
-     *         additional information relevant to this node.
-     */
-    String getReference();
-
-    /**
-     * @return collection of all unknown nodes defined under this schema node.
+     * Returns deviate children.
+     *
+     * @return Collection of all deviate statements defined in this deviation.
      */
-    List<UnknownSchemaNode> getUnknownSchemaNodes();
-
+    @NonNull Collection<? extends DeviateDefinition> getDeviates();
 }