Remove SchemaPath from TypeDefinition implementations
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / ModuleNameNamespaceContext.java
index d5e10a27bf456e63202ed31cd0bbab7dc1ff4380..2b7c2c9b2a074955e731775273fb59ff23192979 100644 (file)
@@ -7,20 +7,17 @@
  */
 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
@@ -34,14 +31,13 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
  * @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);
     }
 
     /**
@@ -51,25 +47,21 @@ public final class ModuleNameNamespaceContext implements YangNamespaceContext, S
      */
     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() {