Bug 4662: Introduce a SemanticVersion concept - pre-linkage phase
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / spi / source / PrefixToModuleMap.java
index e01e5aeb2cce86bbc6a1a6fd455a7c09168aca67..506247b4a9982c8fe8b636570acf99e2b6f72975 100644 (file)
@@ -7,18 +7,30 @@
  */
 package org.opendaylight.yangtools.yang.parser.spi.source;
 
-import org.opendaylight.yangtools.yang.common.QNameModule;
-
-import javax.annotation.Nullable;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
+import javax.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.QNameModule;
 
 public class PrefixToModuleMap implements PrefixToModule {
 
     private Map<String, QNameModule> prefixToModuleMap = new HashMap<>();
+    private Map<URI, QNameModule> namespaceToModuleMap = new HashMap<>();
+    private final boolean preLinkageMap;
+
+    public PrefixToModuleMap() {
+        this(false);
+    }
+
+    public PrefixToModuleMap(boolean preLinkageMap) {
+        this.preLinkageMap = preLinkageMap;
+    }
 
     public void put(String prefix, QNameModule qNameModule) {
         prefixToModuleMap.put(prefix, qNameModule);
+        namespaceToModuleMap.put(qNameModule.getNamespace(), qNameModule);
     }
 
     @Nullable
@@ -29,7 +41,12 @@ public class PrefixToModuleMap implements PrefixToModule {
 
     @Nullable
     @Override
-    public QNameModule getByNamespace(String namespace) {
-        return null;
+    public QNameModule getByNamespace(String namespace) throws URISyntaxException {
+        return namespaceToModuleMap.get(new URI(namespace));
+    }
+
+    @Override
+    public boolean isPreLinkageMap() {
+        return preLinkageMap;
     }
 }