Populate SubmoduleEffectiveModule with import namespaces
[yangtools.git] / yang / yang-model-export / src / main / java / org / opendaylight / yangtools / yang / model / export / YangTextSnippetIterator.java
index b97e0c5c125f8b7fd1ca28958410ccb5ed20d6c2..78a5e61f4dfbc36986d744396cc2c1f4c00f493c 100644 (file)
@@ -20,15 +20,12 @@ import java.util.ArrayDeque;
 import java.util.Collection;
 import java.util.Deque;
 import java.util.Iterator;
-import java.util.Map;
 import java.util.Optional;
 import java.util.Queue;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
@@ -127,13 +124,13 @@ final class YangTextSnippetIterator extends AbstractIterator<@NonNull String> {
     private final Queue<String> strings = new ArrayDeque<>(8);
     // Let's be modest, 16-level deep constructs are not exactly common.
     private final Deque<Iterator<? extends DeclaredStatement<?>>> stack = new ArrayDeque<>(8);
-    private final Map<QNameModule, @NonNull String> namespaces;
     private final Set<StatementDefinition> ignoredStatements;
+    private final StatementPrefixResolver resolver;
     private final boolean omitDefaultStatements;
 
-    YangTextSnippetIterator(final DeclaredStatement<?> stmt, final Map<QNameModule, @NonNull String> namespaces,
+    YangTextSnippetIterator(final DeclaredStatement<?> stmt, final StatementPrefixResolver resolver,
         final Set<StatementDefinition> ignoredStatements, final boolean omitDefaultStatements) {
-        this.namespaces = requireNonNull(namespaces);
+        this.resolver = requireNonNull(resolver);
         this.ignoredStatements = requireNonNull(ignoredStatements);
         this.omitDefaultStatements = omitDefaultStatements;
         pushStatement(requireNonNull(stmt));
@@ -194,13 +191,12 @@ final class YangTextSnippetIterator extends AbstractIterator<@NonNull String> {
         addIndent();
 
         // Add statement prefixed with namespace if needed
-        final QName stmtName = def.getStatementName();
-        final Optional<String> prefix = ExportUtils.statementPrefix(namespaces, stmtName);
+        final Optional<String> prefix = resolver.findPrefix(stmt);
         if (prefix.isPresent()) {
             strings.add(prefix.get());
             strings.add(":");
         }
-        strings.add(stmtName.getLocalName());
+        strings.add(def.getStatementName().getLocalName());
 
         // Add argument, quoted and properly indented if need be
         addArgument(def, stmt.rawArgument());