Bug 4662: Introduce a SemanticVersion concept - import processing
[yangtools.git] / yang / yang-model-api / src / main / java / org / opendaylight / yangtools / yang / model / api / ModuleIdentifier.java
index a1e8b433c06a69c278ad925a1697e5eba72bdaff..0ca6e4d25cdd2f397d969b1a0a0b3aaaae543b7c 100644 (file)
@@ -10,18 +10,18 @@ package org.opendaylight.yangtools.yang.model.api;
 
 import java.net.URI;
 import java.util.Date;
+import org.opendaylight.yangtools.concepts.SemVer;
+import org.opendaylight.yangtools.yang.common.QNameModule;
 
 
 public interface ModuleIdentifier {
-
     /**
-     * Returns the namespace of the module which is specified as argument of
-     * YANG {@link Module <b><font color="#00FF00">namespace</font></b>}
-     * keyword.
+     * Returns a {@link QNameModule}, which contains the namespace and
+     * the revision of the module.
      *
-     * @return URI format of the namespace of the module
+     * @return QNameModule identifier.
      */
-    URI getNamespace();
+    QNameModule getQNameModule();
 
     /**
      * Returns the name of the module which is specified as argument of YANG
@@ -32,11 +32,37 @@ public interface ModuleIdentifier {
     String getName();
 
     /**
-     * Returns the revision date for the module.
+     * Returns the namespace of the module which is specified as argument of
+     * YANG {@link Module <b><font color="#00FF00">namespace</font></b>}
+     * keyword. If you need both namespace and revision, please consider using
+     * {@link #getQNameModule()}.
+     *
+     * @return URI format of the namespace of the module
+     */
+    URI getNamespace();
+
+    /**
+     * Returns the revision date for the module. If you need both namespace and
+     * revision, please consider using {@link #getQNameModule()}.
      *
      * @return date of the module revision which is specified as argument of
      *         YANG {@link Module <b><font color="#339900">revison</font></b>}
      *         keyword
      */
     Date getRevision();
+
+    /**
+     * Returns the semantic version of yang module.
+     *
+     * If the semantic version is not specified, default semantic version of
+     * module is returned.
+     *
+     * @return SemVer semantic version of yang module which is specified as
+     *         argument of
+     *         (urn:opendaylight:yang:extension:semantic-version?revision
+     *         =2016-02-02)semantic-version statement
+     */
+    default SemVer getSemanticVersion() {
+        return Module.DEFAULT_SEMANTIC_VERSION;
+    }
 }