*/
package org.opendaylight.yangtools.yang.model.api;
-import com.google.common.base.Preconditions;
-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("not-supported"), ADD("add"), REPLACE("replace"), DELETE("delete");
-
- private final String keyword;
-
- Deviate(final String keyword) {
- this.keyword = Preconditions.checkNotNull(keyword);
- }
-
- /**
- * @return String that corresponds to the yang keyword.
- */
- public String getKeyword() {
- return keyword;
- }
+ 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
+ * Returns deviate children.
+ *
+ * @return Collection of all deviate statements defined in 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.
- */
- List<UnknownSchemaNode> getUnknownSchemaNodes();
-
+ @NonNull Collection<? extends DeviateDefinition> getDeviates();
}