Expanded UnknownSchemaNode implementation, refactored java source code generation.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / yang-model-parser-impl / src / main / java / org / opendaylight / controller / yang / model / parser / impl / YangModelParserImpl.java
index 60937fff22dcac74e7d9ab24e891f9d066495c82..50943fa7403110d17e7d811d82c0b82f0337ab39 100644 (file)
@@ -209,6 +209,7 @@ public class YangModelParserImpl implements YangModelParser {
         resolveDirtyNodes(modules, builder);
         resolveIdentities(modules, builder);
         resolveUses(modules, builder);
+        resolveUnknownNodes(modules, builder);
     }
 
     /**
@@ -979,6 +980,29 @@ public class YangModelParserImpl implements YangModelParser {
         return result;
     }
 
+    private void resolveUnknownNodes(
+            final Map<String, TreeMap<Date, ModuleBuilder>> modules,
+            final ModuleBuilder module) {
+        for (UnknownSchemaNodeBuilder usnb : module.getAddedUnknownNodes()) {
+            QName nodeType = usnb.getNodeType();
+            if (nodeType.getNamespace() == null
+                    || nodeType.getRevision() == null) {
+                try {
+                    ModuleBuilder dependentModule = findDependentModule(
+                            modules, module, nodeType.getPrefix());
+                    QName newNodeType = new QName(
+                            dependentModule.getNamespace(),
+                            dependentModule.getRevision(),
+                            nodeType.getPrefix(), nodeType.getLocalName());
+                    usnb.setNodeType(newNodeType);
+                } catch (YangParseException e) {
+                    logger.debug("Failed to find unknown node type: "
+                            + nodeType);
+                }
+            }
+        }
+    }
+
     /**
      * Find dependent module based on given prefix
      *