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;
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));
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());