Bug 4662: Introduce a SemanticVersion concept - import processing
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / ModelProcessingPhase.java
index 1bb6d825e6ad128370712dd0bd51b939cdb3c7d9..3fe2ccc0f110040d9de60f24b9ba9776cfa24111 100644 (file)
@@ -10,34 +10,38 @@ package org.opendaylight.yangtools.yang.parser.spi.meta;
 import javax.annotation.Nullable;
 
 public enum ModelProcessingPhase {
-
+    INIT(null),
+    /**
+     *
+     * Preliminary cross-source relationship resolution phase which collects
+     * available module names and module namespaces. It is necessary in order to
+     * correct resolution of unknown statements used in linkage phase (e.g.
+     * semantic version of yang modules).
+     */
+    SOURCE_PRE_LINKAGE(INIT),
     /**
      *
      * Cross-source relationship resolution phase.
      * <p>
-     * In this phase of processing only statements which affects
-     * cross-source relationship (e.g. imports / includes)
-     * are processed.
+     * In this phase of processing only statements which affects cross-source
+     * relationship (e.g. imports / includes) are processed.
      * <p>
-     * At end of this phase all source related contexts should
-     * be bind to their imports and includes to allow
-     * visibility of custom defined statements in following
-     * phases.
+     * At end of this phase all source related contexts should be bind to their
+     * imports and includes to allow visibility of custom defined statements in
+     * following phases.
      */
-    SourceLinkage(null),
-    StatementDefinition(SourceLinkage),
-    FullDeclaration(StatementDefinition),
-    EffectiveModel(FullDeclaration);
-
+    SOURCE_LINKAGE(SOURCE_PRE_LINKAGE),
+    STATEMENT_DEFINITION(SOURCE_LINKAGE),
+    FULL_DECLARATION(STATEMENT_DEFINITION),
+    EFFECTIVE_MODEL(FULL_DECLARATION);
 
     private final ModelProcessingPhase previousPhase;
 
-    private ModelProcessingPhase(@Nullable ModelProcessingPhase previous) {
+    ModelProcessingPhase(@Nullable ModelProcessingPhase previous) {
         this.previousPhase = previous;
     }
 
     public ModelProcessingPhase getPreviousPhase() {
         return previousPhase;
     }
-
 }