Merge "Added tests for yang.model.util"
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / util / ModuleDependencySort.java
index 051dd4f72729a94bb9d76f3e3c117d5797f4c282..05dbd2e1b7f1d7f0b4ba454e94138a257e59e396 100644 (file)
@@ -14,7 +14,6 @@ import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -24,7 +23,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-
 import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
@@ -48,6 +46,9 @@ public final class ModuleDependencySort {
     private static final Function<Node, Module> TOPOLOGY_FUNCTION = new Function<TopologicalSort.Node, Module>() {
         @Override
         public Module apply(final TopologicalSort.Node input) {
+            if (input == null) {
+                return null;
+            }
             ModuleOrModuleBuilder moduleOrModuleBuilder = ((ModuleNodeImpl) input).getReference();
             return moduleOrModuleBuilder.getModule();
         }
@@ -67,6 +68,9 @@ public final class ModuleDependencySort {
         @Override
         public ModuleBuilder apply(final TopologicalSort.Node input) {
             // Cast to ModuleBuilder from Node and return
+            if (input == null) {
+                return null;
+            }
             ModuleOrModuleBuilder moduleOrModuleBuilder = ((ModuleNodeImpl) input).getReference();
             return moduleOrModuleBuilder.getModuleBuilder();
         }
@@ -97,6 +101,9 @@ public final class ModuleDependencySort {
 
             @Override
             public ModuleBuilder apply(final TopologicalSort.Node input) {
+                if (input == null) {
+                    return null;
+                }
                 ModuleOrModuleBuilder moduleOrModuleBuilder = ((ModuleNodeImpl) input).getReference();
                 if (moduleOrModuleBuilder.isModuleBuilder()) {
                     return moduleOrModuleBuilder.getModuleBuilder();
@@ -148,7 +155,7 @@ public final class ModuleDependencySort {
      */
     private static void processDependencies(final Map<String, Map<Date, ModuleNodeImpl>> moduleGraph,
             final Iterable<ModuleOrModuleBuilder> mmbs) {
-        Map<URI, Object> allNS = new HashMap<>();
+        Map<URI, ModuleOrModuleBuilder> allNS = new HashMap<>();
 
         // Create edges in graph
         for (ModuleOrModuleBuilder mmb : mmbs) {
@@ -175,28 +182,15 @@ public final class ModuleDependencySort {
 
             // check for existence of module with same namespace
             if (allNS.containsKey(ns)) {
-                Object mod = allNS.get(ns);
+                ModuleOrModuleBuilder 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 (mod.isModule()) {
+                    name = mod.getModule().getName();
+                    revision = mod.getModule().getRevision();
+                } else if (mod.isModuleBuilder()) {
+                    name = mod.getModuleBuilder().getName();
+                    revision = mod.getModuleBuilder().getRevision();
                 }
                 if (!(fromName.equals(name))) {
                     LOGGER.warn(