*/
package org.opendaylight.yangtools.yang.model.util;
-import static java.util.Objects.requireNonNull;
-
import com.google.common.annotations.Beta;
import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableBiMap.Builder;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;
-import java.util.stream.Collectors;
import org.opendaylight.yangtools.yang.common.BiMapYangNamespaceContext;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.common.YangNamespaceContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
/**
* Utility {@link YangNamespaceContext} backed by a SchemaContext, resolving namespaces to their module names. This
* @author Robert Varga
*/
@Beta
-public final class ModuleNameNamespaceContext implements YangNamespaceContext, SchemaContextProvider {
+public final class ModuleNameNamespaceContext extends AbstractEffectiveModelContextProvider
+ implements YangNamespaceContext {
private static final long serialVersionUID = 1L;
- @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "Handled through writeReplace()")
- private final SchemaContext schemaContext;
-
- public ModuleNameNamespaceContext(final SchemaContext schemaContext) {
- this.schemaContext = requireNonNull(schemaContext);
+ @SuppressFBWarnings(value = "SE_NO_SUITABLE_CONSTRUCTOR", justification = "Handled through writeReplace()")
+ public ModuleNameNamespaceContext(final EffectiveModelContext schemaContext) {
+ super(schemaContext);
}
/**
*/
public BiMapYangNamespaceContext toBiMap() {
final Builder<String, QNameModule> builder = ImmutableBiMap.builder();
- for (String name : schemaContext.getModules().stream().map(Module::getName).collect(Collectors.toSet())) {
+ for (ModuleEffectiveStatement module : getEffectiveModelContext().getModuleStatements().values()) {
+ final String name = module.argument().getLocalName();
builder.put(name, findNamespaceForPrefix(name).get());
}
return new BiMapYangNamespaceContext(builder.build());
}
- @Override
- public SchemaContext getSchemaContext() {
- return schemaContext;
- }
-
@Override
public Optional<QNameModule> findNamespaceForPrefix(final String prefix) {
- return schemaContext.findModules(prefix).stream().findFirst().map(Module::getQNameModule);
+ return getEffectiveModelContext().findModules(prefix).stream().findFirst().map(Module::getQNameModule);
}
@Override
public Optional<String> findPrefixForNamespace(final QNameModule namespace) {
- return schemaContext.findModule(namespace).map(Module::getName);
+ return getEffectiveModelContext().findModule(namespace).map(Module::getName);
}
private Object writeReplace() {