Fix checkstyle in yang-parser-impl and enable enforcement
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / SourceSpecificContext.java
index cfe7a9222d72965cb80fa1ccdffc34abce97aedc..68c58b96acd251ac594fd68ead09fbeb9db33394 100644 (file)
@@ -31,6 +31,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
@@ -41,13 +42,14 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.Storag
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementDefinitionNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
 import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToModuleContext;
-import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleIdentifier;
-import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToModuleIdentifier;
+import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleCtx;
 import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToNamespace;
+import org.opendaylight.yangtools.yang.parser.spi.source.ImportPrefixToModuleCtx;
 import org.opendaylight.yangtools.yang.parser.spi.source.ImportedModuleContext;
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleIdentifierToModuleQName;
+import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName;
 import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule;
 import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModuleMap;
 import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition;
@@ -67,8 +69,9 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
     }
 
     private static final Logger LOG = LoggerFactory.getLogger(SourceSpecificContext.class);
+
     private final Multimap<ModelProcessingPhase, ModifierImpl> modifiers = HashMultimap.create();
-    private final QNameToStatementDefinitionMap qNameToStmtDefMap = new QNameToStatementDefinitionMap();
+    private final QNameToStatementDefinitionMap qnameToStmtDefMap = new QNameToStatementDefinitionMap();
     private final PrefixToModuleMap prefixToModuleMap = new PrefixToModuleMap();
     private final BuildGlobalContext currentContext;
     private final StatementStreamSource source;
@@ -88,7 +91,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
         this.source = Preconditions.checkNotNull(source);
     }
 
-    boolean isEnabledSemanticVersioning(){
+    boolean isEnabledSemanticVersioning() {
         return currentContext.isEnabledSemanticVersioning();
     }
 
@@ -113,13 +116,13 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
         if (def == null) {
             def = currentContext.getModelDefinedStatementDefinition(name);
             if (def == null) {
-                final StatementSupport<?, ?, ?> extension = qNameToStmtDefMap.get(name);
+                final StatementSupport<?, ?, ?> extension = qnameToStmtDefMap.get(name);
                 if (extension != null) {
                     def = new StatementDefinitionContext<>(extension);
                     currentContext.putModelDefinedStatementDefinition(name, def);
                 }
             }
-        } else if (current != null && StmtContextUtils.isUnknownStatement(current)) {
+        } else if (current != null && StmtContextUtils.isUnrecognizedStatement(current)) {
             /*
              * This code wraps statements encountered inside an extension so
              * they do not get confused with regular statements.
@@ -158,14 +161,15 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
             root = new RootStatementContext<>(this, def, ref, argument);
         } else if (!RootStatementContext.DEFAULT_VERSION.equals(root.getRootVersion())
                 && inProgressPhase == ModelProcessingPhase.SOURCE_LINKAGE) {
-            root = new RootStatementContext<>(this, def, ref, argument, root.getRootVersion(), root.getRootIdentifier());
+            root = new RootStatementContext<>(this, def, ref, argument, root.getRootVersion(),
+                    root.getRootIdentifier());
         } else {
             final QName rootStatement = root.definition().getStatementName();
             final String rootArgument = root.rawStatementArgument();
 
             Preconditions.checkState(Objects.equals(def.getStatementName(), rootStatement)
-                && Objects.equals(argument, rootArgument),
-                "Root statement was already defined as '%s %s'.", rootStatement, rootArgument);
+                && Objects.equals(argument, rootArgument), "Root statement was already defined as '%s %s'.",
+                rootStatement, rootArgument);
         }
         return root;
     }
@@ -199,8 +203,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
 
         final Collection<ModifierImpl> previousModifiers = modifiers.get(previousPhase);
         Preconditions.checkState(previousModifiers.isEmpty(),
-            "Previous phase %s has unresolved modifiers %s in source %s",
-            previousPhase, previousModifiers, source);
+            "Previous phase %s has unresolved modifiers %s in source %s", previousPhase, previousModifiers, source);
 
         inProgressPhase = phase;
         LOG.debug("Source {} started phase {}", source, phase);
@@ -311,6 +314,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
     private static boolean tryToProgress(final Collection<ModifierImpl> currentPhaseModifiers) {
         boolean hasProgressed = false;
 
+        // Try making forward progress ...
         final Iterator<ModifierImpl> modifier = currentPhaseModifiers.iterator();
         while (modifier.hasNext()) {
             if (modifier.next().tryApply()) {
@@ -364,13 +368,16 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
                 source.writePreLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef());
                 break;
             case SOURCE_LINKAGE:
-                source.writeLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef(), preLinkagePrefixes(), getRootVersion());
+                source.writeLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef(), preLinkagePrefixes(),
+                    getRootVersion());
                 break;
             case STATEMENT_DEFINITION:
-                source.writeLinkageAndStatementDefinitions(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes(), getRootVersion());
+                source.writeLinkageAndStatementDefinitions(new StatementContextWriter(this, inProgressPhase), stmtDef(),
+                    prefixes(), getRootVersion());
                 break;
             case FULL_DECLARATION:
-                source.writeFull(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes(), getRootVersion());
+                source.writeFull(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes(),
+                    getRootVersion());
                 break;
             default:
                 break;
@@ -385,21 +392,24 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
             return null;
         }
 
-        prefixToNamespaceMap.forEach((key, value) -> preLinkagePrefixes.put(key, QNameModule.create(value, null)));
+        prefixToNamespaceMap.forEach((key, value) -> preLinkagePrefixes.put(key, QNameModule.create(value)));
         return preLinkagePrefixes;
     }
 
     private PrefixToModule prefixes() {
-        final Map<String, ModuleIdentifier> allPrefixes = getRoot().getAllFromNamespace(ImpPrefixToModuleIdentifier
-                .class);
-        final Map<String, ModuleIdentifier> belongsToPrefixes = getRoot().getAllFromNamespace
-                (BelongsToPrefixToModuleIdentifier.class);
-        if (belongsToPrefixes != null) {
-            allPrefixes.putAll(belongsToPrefixes);
+        final Map<String, StmtContext<?, ?, ?>> allImports = getRoot().getAllFromNamespace(
+            ImportPrefixToModuleCtx.class);
+        if (allImports != null) {
+            allImports.forEach((key, value) ->
+                prefixToModuleMap.put(key, getRoot().getFromNamespace(ModuleCtxToModuleQName.class, value)));
         }
 
-        allPrefixes.forEach((key, value) ->
-            prefixToModuleMap.put(key, getRoot().getFromNamespace(ModuleIdentifierToModuleQName.class, value)));
+        final Map<String, StmtContext<?, ?, ?>> allBelongsTo = getRoot().getAllFromNamespace(
+            BelongsToPrefixToModuleCtx.class);
+        if (allBelongsTo != null) {
+            allBelongsTo.forEach((key, value) ->
+                prefixToModuleMap.put(key, getRoot().getFromNamespace(ModuleCtxToModuleQName.class, value)));
+        }
 
         return prefixToModuleMap;
     }
@@ -407,12 +417,12 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
     private QNameToStatementDefinition stmtDef() {
         // regular YANG statements and extension supports added
         final StatementSupportBundle supportsForPhase = currentContext.getSupportsForPhase(inProgressPhase);
-        qNameToStmtDefMap.putAll(supportsForPhase.getCommonDefinitions());
-        qNameToStmtDefMap.putAll(supportsForPhase.getDefinitionsSpecificForVersion(getRootVersion()));
+        qnameToStmtDefMap.putAll(supportsForPhase.getCommonDefinitions());
+        qnameToStmtDefMap.putAll(supportsForPhase.getDefinitionsSpecificForVersion(getRootVersion()));
 
         // No further actions needed
         if (inProgressPhase != ModelProcessingPhase.FULL_DECLARATION) {
-            return qNameToStmtDefMap;
+            return qnameToStmtDefMap;
         }
 
         // We need to any and all extension statements which have been declared in the context
@@ -420,7 +430,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
                 StatementDefinitionNamespace.class);
         if (extensions != null) {
             extensions.forEach((qname, support) -> {
-                final StatementSupport<?, ?, ?> existing = qNameToStmtDefMap.putIfAbsent(qname, support);
+                final StatementSupport<?, ?, ?> existing = qnameToStmtDefMap.putIfAbsent(qname, support);
                 if (existing != null) {
                     LOG.debug("Source {} already defines statement {} as {}", source, qname, existing);
                 } else {
@@ -429,7 +439,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
             });
         }
 
-        return qNameToStmtDefMap;
+        return qnameToStmtDefMap;
     }
 
     public Set<YangVersion> getSupportedVersions() {
@@ -440,8 +450,8 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh
         currentContext.addMutableStmtToSeal(mutableStatement);
     }
 
-    Collection<ModuleIdentifier> getRequiredModules() {
-        return root.getRequiredModules();
+    Collection<SourceIdentifier> getRequiredSources() {
+        return root.getRequiredSources();
     }
 
     ModuleIdentifier getRootIdentifier() {