Bug 1514: Correctly handle ModuleOrModuleBuilder in ModuleDependencySort 08/10208/3
authorEd Warnicke <eaw@cisco.com>
Sat, 23 Aug 2014 19:56:17 +0000 (14:56 -0500)
committerEd Warnicke <eaw@cisco.com>
Sat, 23 Aug 2014 20:43:56 +0000 (15:43 -0500)
ModuleDependencySort.processDependencies(...)

Turns out allNS.get(ns) can return objects of type ModuleOrModuleBuilder
(not just Module or ModuleBuilder types).

Now we check for that case, and unpack it to a Module or ModuleBuilder.
The rest of the logic then continues as normal.

Also added a log for getting a module with no name so as to catch
similar issues in the future.

Change-Id: I956c334c5dd10b51bec01d409f2433229d05f767
Signed-off-by: Ed Warnicke <eaw@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java

index 7b543b730702718226447a1ba3efde9ee4cc9a17..051dd4f72729a94bb9d76f3e3c117d5797f4c282 100644 (file)
@@ -178,12 +178,25 @@ public final class ModuleDependencySort {
                 Object mod = allNS.get(ns);
                 String name = null;
                 Date revision = null;
+
+                if(mod instanceof ModuleOrModuleBuilder) {
+                    ModuleOrModuleBuilder modOrmodBuilder = ((ModuleOrModuleBuilder) mod);
+                    if(modOrmodBuilder.isModule()) {
+                        mod = ((ModuleOrModuleBuilder) mod).getModule();
+                    } else if (modOrmodBuilder.isModuleBuilder()) {
+                        mod = ((ModuleOrModuleBuilder) mod).getModuleBuilder();
+                    } else {
+                        LOGGER.warn("ModuleOrModuleBuilder is neither Module or ModuleBuilder");
+                    }
+                }
                 if (mod instanceof Module) {
                     name = ((Module) mod).getName();
                     revision = ((Module) mod).getRevision();
                 } else if (mod instanceof ModuleBuilder) {
                     name = ((ModuleBuilder) mod).getName();
                     revision = ((ModuleBuilder) mod).getRevision();
+                } else {
+                    LOGGER.warn("Module has no name: {}", mod);
                 }
                 if (!(fromName.equals(name))) {
                     LOGGER.warn(